¿Cómo podría escribir un script Bash que ejecute un programa de larga ejecución y almacene la identificación del proceso de los programas en un archivo separado?
Quiero algo como
#!/bin/bash
exec long_running_tool
echo `ps af |grep "long_running_tool" |awk '$5 == "long_running_tool" {print $1}'` > pid_file
Sin embargo, hacer exactamente esto ejecutaría la herramienta unaps vez que haya terminado.
¿Hay alguna manera de obtener la identificación del proceso creado?

long_running_toolproceso. En consecuencia, exec nunca regresa y nunca se alcanza la siguiente línea. Verhelp exec,execve(2).Respuestas:
Puede ejecutar fácilmente el proceso en segundo plano con "&", luego obtener el PID del proceso en segundo plano usando "$!"
Entonces, opcionalmente, ¡espera $! si desea que el shell se bloquee hasta que el proceso complete la ejecución.
fuente
Como se mencionó anteriormente,
execreemplazabashcon el programa especificado, conservando el PID.fuente