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-app
comando 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
.fg
trae el proceso a primer plano de nuevo. Luego puedo imprimirecho $myVar
más tarde y estoy bastante seguro de que mi aplicación ya ha finalizado.Obtener
PID
:Guardar
PID
en variable:Guarde todas las instancias
PID
en el archivo de texto:Guardar resultados, errores y
PID
en archivos separados:fuente
my-app
finaliza 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 elgrep
proceso en su lista. Si es necesario, también puede agregar un grep a su nombre de usuario.fuente
my-app
se ejecuta más de una vez; davidshen84 se preocupa específicamente por ese cas.pgrep
en su lugar.