Policia resucita programas...Solucion quiero XD

Tengo un programa que al tiempo de estar ejecutandose sobre mi gentoo decide morirse.
Puede pasar 3 dias como 2 horas.
La cosa es que quisiera saber si hay una aplicacion que mire cada x tiempo en el TOP si hay corriendo una aplicacion...y si es que no que me ejecute un comando.
Gracias [chiu]
Lo más fácil es que te hagas un script a tu gusto.
Usando top o ps, grep y tuberías no te debería costar mucho.

PD: Se me olvidaba, usa cron. También podrías hacer alguna chapucilla con sleep.
Un saludo.
Uhm:

if test $(ps aux | grep NOMBRE | grep -c -v grep) -lt 1; then EJECUTA; fi


o en su versión reducida

[ $(ps aux | grep NOMBRE | grep -c -v grep) -lt 1 ] && EJECUTA


¡OJO! Código al vuelo: susceptible de dar algun errorcillo

Salu2.Ferdy
Si no me equivoco se puede hacer directamente así (y si me equivoco me lo decís :D) :

[ $(ps aux | grep -c NOMBRE ) -lt 1 ] && EJECUTA

No linko al fuente original porque ya sabéis de donde lo he sacada :D (espero que sea GPL, si no que el autor me pegue un toque)

Un saludo.
Si no me equivoco se puede hacer directamente así (y si me equivoco me lo decís ) :


No te equivocas pero no es del todo correcto:

zeus:~ ferdy$ ps aux | grep vim
ferdy    737   0.0  0,5    19148   1912  p1  S+    8:15AM   0:00.64 vim postfix.mgp
ferdy   1136   0.0  0,0    18644    100 std  R+    9:09AM   0:00.00 grep vim


Este comportamiento no siempre se reproduce; la solución es evitar las líneas que contienen grep

zeus:~ ferdy$ ps aux | grep vim | grep -v grep
ferdy    737   0.0  0,5    19148   1912  p1  S+    8:15AM   0:00.64 vim postfix.mgp


Saludos.Ferdy
Este comportamiento no siempre se reproduce; la solución es evitar las líneas que contienen grep


¿A que te refieres con que no siempre se reproduce el comportamiento?

Estoy de acuerdo en que tu forma es más ortodoxa, o más general, era más que nada una pequeña vendetta. :P
Pues que a veces, el "ps nombre | grep" aparece listado en el ps [looco] , como resultado te devolvería una línea más que no te interesa....

Lo que hace ferdy es quitar las líneas con grep que contengan la palabra "grep" :)

Eso sí, lo que no me acuerdo es si se podía evitar ése efecto modificando los parámetros que le pasamos al ps.... (menuda cabeza que tengo [carcajad] )

Salu2
Guau...que coño es eso?
Es que no es la primera vez que lo veo, pero pensaba que era algo mas en plan anjuta.
¿Algun tutorial/libro para aprender recomendable?
dykstra escribió:Pues que a veces, el "ps nombre | grep" aparece listado en el ps [looco] , como resultado te devolvería una línea más que no te interesa....

Lo que hace ferdy es quitar las líneas con grep que contengan la palabra "grep" :)

Eso sí, lo que no me acuerdo es si se podía evitar ése efecto modificando los parámetros que le pasamos al ps.... (menuda cabeza que tengo [carcajad] )

Salu2

Ya se lo que hace el programa de Ferdy, pero si aparece grep es porque lo ejecuta dos veces, y aparece el primero en la lista de procesos.

Lo que tú dices, que es lo que he hecho yo, no debería mostrar grep.
bastian escribió:Ya se lo que hace el programa de Ferdy, pero si aparece grep es porque lo ejecuta dos veces, y aparece el primero en la lista de procesos.

Lo que tú dices, que es lo que he hecho yo, no debería mostrar grep.


Pues no sé, yo pensaba que decía lo de Ferdy :-p :-p
El segundo grep sirve para cargarse al primer grep que entra en "conflicto" con el ps (aparece en la tabla de procesos del sistema el grep antes de que debiera ... )

Chao!
Pues parece que estaba equivocado y si lo muestra haciendo el grep, pero es listo y si le pasas es -c como parámetro no se cuenta a sí mismo.

mobile:~ usuario$ ps aux | grep vim
usuario 427 0.0 0.3 19132 1444 p2 S+ 12:26PM 0:00.05 vim file.txt
usuario 431 0.0 0.0 18644 212 std R+ 12:26PM 0:00.01 grep vim
mobile:~ usuario$ ps aux | grep -c vim
1


De todas formas mejor curarse en salud y hacerlo como dice Ferdy.

Un saludo.
Bueno...estoy empapandome el "manual eminentemente (mi querido watson :P) practico" como si me fuera a entrar en un examen XD
A ver si no me asusto de estas cosas nunca mas...
bastian, el resultado es aleatorio, es posible que al pasarle el -c te salga un '2' en lugar del '1' esperado. Es cuestión de probar

Salu2.Ferdy
Ok, a tu manera entonces, aunque lo acabo de probar chorrocientas veces y siempre me sale 1. :-D
AFAIK depende del tiempo que tarde en ejecutarse el grep
A ver si me he enterado bien ;)

He creado un archivo llamado mlrecover.sh en /home/ark (aunque estoy por pasarlo al /usr/local/bin)
Dentro he colocado estas lineas:

#!/bin/bash
if test $(ps aux | grep mlnet | grep -c -v grep) -lt 1; then screen -S mldonkey mldonkey; fi

Y he probado un sh mlrecover.sh y ha funcionado.
Luego he emergido el cron, y desde root he hecho:

crontab -u ark -e

Dentro he colocado esta linea:

*/15 * * * * /home/ark/mlrecover.sh

Y supongo que deberia funcionar.


Eso si...el screen se abre automaticamente, quedandose para que pulsara ctrl+a ctrl+d para dejarlo en detached.
¿Hay alguna manera de automatizar esto tambien?

Porcierto...no funciona el cron así.
Y tampoco con sh /home/ark/mlrecover.sh

------
Otra cosilla...por no abrir mas hilos :P
Estoy intentado actualizar a la 2004.3
He hecho el emerge --sync
Y tras el me dice:
To upgrade do the following steps:
# emerge -n '>=sys-apps/portage-2.0.51'
# cd /etc/
# rm make.profile
# ln -s ../usr/portage/profiles/default-linux/x86/2004.3 make.profile

Ok...lo he hecho.
Ahora hago esto...y vereis el error que me da [+risas]
shin etc # screen -S emerge emerge -uDav --newuse world
[screen is terminating]
shin etc # emerge -uDav --newuse world

These are the packages that I would merge, in order:

Calculating world dependencies ...done!

[blocks B ] sys-apps/sysvinit (from pkg sys-apps/baselayout-1.9.4-r6)
[ebuild R ] sys-libs/ncurses-5.4-r5 -bootstrap* -build -debug -doc (-uclibc) -unicode 0 kB
[ebuild UD] sys-devel/gettext-0.12.1-r2 [0.14.1] -bootstrap* -emacs +nls 5,592 kB
[ebuild UD] sys-devel/binutils-2.14.90.0.8-r1 [2.15.92.0.2-r1] -bootstrap* -build -debug -multitarget +nls (-uclibc) 10,875 kB
[ebuild UD] sys-libs/zlib-1.2.1-r3 [1.2.2] -build -debug 277 kB
[ebuild UD] app-shells/bash-2.05b-r9 [3.0-r7] -build -debug +nls (-uclibc) 1,923 kB
[ebuild UD] sys-libs/readline-4.3-r5 [5.0-r1] 947 kB
[ebuild UD] sys-apps/help2man-1.29 [1.33.1] 36 kB
[ebuild UD] sys-apps/coreutils-5.2.1 [5.2.1-r2] -acl -build -debug +nls (-selinux) -static (-uclibc) 84 kB
[ebuild R ] sys-apps/portage-2.0.51-r3 -build* -debug (-selinux) 0 kB
*** Portage will stop merging at this point and reload itself,
recalculate dependencies, and complete the merge.
[ebuild UD] sys-apps/diffutils-2.8.4-r4 [2.8.7] -build -debug +nls -static 809 kB
[ebuild UD] sys-libs/db-1.85-r1 [1.85-r2] 0 kB
[ebuild UD] dev-libs/expat-1.95.7 [1.95.8] 289 kB
[ebuild UD] dev-java/java-config-1.2.10 [1.2.11] 15 kB
[ebuild NS ] dev-java/blackdown-jre-1.4.1 -mozilla 40,167 kB
[ebuild NS ] dev-java/blackdown-jdk-1.4.1 -doc -mozilla 39,857 kB
[ebuild NS ] sys-libs/db-4.1.25_p1-r3 -doc +java -tcltk 0 kB
[ebuild UD] sys-devel/libperl-5.8.4-r1 [5.8.5-r1] +berkdb -debug +gdbm -ithreads (-uclibc) 11,810 kB
[ebuild UD] dev-lang/perl-5.8.4-r1 [5.8.5] +berkdb -debug -doc +gdbm -ithreads -perlsuid (-uclibc) 0 kB
[ebuild R ] sys-devel/m4-1.4.1 -bootstrap* +nls 0 kB
[ebuild UD] sys-devel/bison-1.875 [1.875d] -debug +nls -static 795 kB
[ebuild U ] sys-devel/gcc-config-1.3.6-r3 [1.3.5] 0 kB
[ebuild U ] sys-devel/gcc-3.3.4-r1 [3.3.3-r6] +X* -bootstrap -build* -debug +fortran* -gcj -hardened -multilib +nls* -objc -pic -static (-uclibc) 485 kB
[ebuild UD] sys-libs/pam-0.77-r1 [0.77-r2] +berkdb -debug -pwdb (-selinux) 111 kB
[ebuild UD] sys-apps/util-linux-2.12-r4 [2.12b-r1] +crypt -debug +nls +pam (-selinux) -static (-uclibc) 1,819 kB
[ebuild UD] sys-kernel/linux-headers-2.4.21-r1 [2.4.22] -build 27,864 kB
[ebuild UD] sys-apps/baselayout-1.9.4-r6 [1.11.5] -bootstrap -build -debug -livecd (-selinux) -static (-uclibc) 197 kB
[ebuild UD] sys-libs/glibc-2.3.4.20040808-r1 [2.3.4.20041102] -build -debug -erandom -hardened -makecheck -multilib +nls -nptl -pic -userlocales 1,222 kB
[ebuild UD] sys-apps/sed-4.0.9 [4.1.2] -bootstrap* -build -debug +nls -static 751 kB
[ebuild UD] sys-devel/bin86-0.16.0 [0.16.13] 113 kB
[ebuild UD] sys-apps/kbd-1.12-r2 [1.12-r3] +nls 0 kB
[ebuild UD] net-mail/mailbase-0.00-r5 [0.00-r6] 0 kB
[ebuild UD] app-arch/tar-1.14 [1.14.90-r1] -build -debug +nls -static 1,052 kB
[ebuild U ] app-admin/sudo-1.6.7_p5-r2 [1.6.7_p5] +pam -skey 0 kB
[ebuild UD] net-misc/rsync-2.6.0-r3 [2.6.3] -acl -build -debug -static 458 kB
[ebuild UD] sys-apps/procps-3.2.3-r1 [3.2.4] -debug 264 kB
[ebuild UD] net-misc/openssh-3.8.1_p1-r1 [3.9_p1] -X509 -chroot -debug -ipv6 -kerberos -ldap +pam (-selinux) -skey -smartcard -static +tcpd (-uclibc) 798 kB
[ebuild UD] net-misc/wget-1.9-r2 [1.9.1-r2] -build -debug -ipv6 +nls -socks5 +ssl -static 1,309 kB
[ebuild UD] dev-libs/ucl-1.01-r1 [1.03] -debug 333 kB
[ebuild NS ] sys-kernel/gentoo-dev-sources-2.6.9-r4 -build -doc (-ultra1) 195 kB

Total size of downloads: 150,463 kB

!!! Error: The above package list contains packages which cannot be installed
!!! on the same system.

shin etc #

Supongo que no es mucha cosa...pero prefiero preguntar antes de cargarme algo, que para algo soy primerizo en estas lindes :p
15 respuestas