¿Alguien puede decirme cómo obtener el PID de un comando ejecutado en bash?
Por ejemplo, tengo un script bash que ejecuta imapsync.
Cuando se mata el script, el proceso imapsync no siempre se mata, por lo que me gustaría poder identificar el PID de imapsync programáticamente desde mi script, para poder matar el proceso imapsync yo mismo en un controlador de señal.
Entonces, ¿cómo obtengo programáticamente el PID de un proceso secundario de un script bash primario?
Respuestas:
imapsync tiene una opción para establecer dónde se escribe su pid:
--pidfile: el archivo donde se escribe imapsync pid.
fuente
IOW, al igual que
$$
contiene su PID,$!
tiene el PID del comando de fondo ejecutado más recientemente .fuente
/var/run/whatever.pid
. Tal vez hay una opción de línea de comandos para pedirle que guarde el PID en alguna parte; si no, eso suena como una característica para preguntarle al autor o implementarlo usted mismo.&
), la$!
variable no está definida./bin/sh -c 'echo $$>/tmp/my.pid && exec program args' &
- sysfault 24 de noviembre de 10 a las 14:28A diferencia
pidof
,pgrep
se le puede dar una variedad de opciones para restringir para qué procesos devuelve PID. Uno que puede ser particularmente útil es seleccionar con base en PPID usando el PID del proceso actual.que solo generará PID de imapsync si son hijos de su script.
fuente
¿Qué hay de poner momentáneamente imapsync en segundo plano, obtener el PID y luego ponerlo en primer plano ... Algo así:
fuente