Quiero tener un script de shell como este:
my-app &
echo $my-app-pid
Pero no sé cómo obtener el pid del comando recién ejecutado.
Sé que puedo usar el jobs -p my-appcomando para grep el pid. Pero si quiero ejecutar el shell varias veces, este método no funcionará. Porque el jobspec es ambiguo.
bash
shell
process
background-process
David S.
fuente
fuente

/bin/sh -c 'echo $$>/tmp/my.pid && exec program args' &- sysfault 24 de noviembre de 10 a 14:28echo $!my-app & myVar=$! ; fg.fgtrae el proceso a primer plano de nuevo. Luego puedo imprimirecho $myVarmás tarde y estoy bastante seguro de que mi aplicación ya ha finalizado.Obtener
PID:Guardar
PIDen variable:Guarde todas las instancias
PIDen el archivo de texto:Guardar resultados, errores y
PIDen archivos separados:fuente
my-appfinaliza una instancia , y quizás peor aún, su PID se reutiliza más adelante, tendrá información incorrecta en su archivo. No creo que esta respuesta agregue mucho valor a la respuesta aceptada existente realmentesleep 4 | grep INVALID & export MY_PID=$!; fg; echo $MY_PID returned with $?`main &una forma de tomar PID?Intenta algo como
fuente
Intenta algo como esto:
Colocar la primera letra de su proceso entre
[]se asegura de que no obtenga elgrepproceso en su lista. Si es necesario, también puede agregar un grep a su nombre de usuario.fuente
my-appse ejecuta más de una vez; davidshen84 se preocupa específicamente por ese cas.pgrepen su lugar.