Estoy trabajando para optimizar parte de mi flujo de trabajo y me preguntaba si alguien se ha encontrado con un problema similar al mío. He estado luchando por descubrir cómo iniciar varios scripts de shell "nohup" al mismo tiempo. Por ejemplo, tengo varios scripts que se ven así:

start.sh

rm nohup.out
nohup python -u script.py args

Intenté ejecutarlos con un script como este:

start_option_1.sh

process_directory_1/start.sh & process_directory_2/start.sh ... (3-5 more of these)

Y así:

start_option_2.sh

process_directory_1/start.sh && process_directory_2/start.sh ... (3-5 more of these)

Pero no dados ... los guiones ni siquiera comienzan. ¡Cualquier idea / ayuda será muy apreciada! Usar python3.6 si eso también es importante (pero parece que es más un problema nohup).

2
Colin Fausnaught 16 nov. 2019 a las 21:20

1 respuesta

La mejor respuesta

Hay una gran diferencia entre usar '&' y usar '&&'. El primero ejecutará cada uno de los scripts en segundo plano. El segundo los ejecutará en secuencia, siempre que cada script devuelva el éxito ('salida 0' o equivalente).

Desde el contexto de 'start.sh', parece que desea la primera opción (iniciar todos los scripts juntos). Cada secuencia de comandos ejecuta un programa de Python 'script.py'. La publicación no especificó si hay un script en el directorio de trabajo inicial, o si hay varios 'script.py', uno en cada carpeta. Probablemente la segunda opción.

En ese caso, desea ejecutar sus scripts desde la carpeta process_directory_ *. Considere hacer un cambio en:

( cd process_directory_1 && exec ./start.sh) &
( cd process_directory_2 && exec ./start.sh) &
...

Notas:

  1. Todos los scripts se inician al mismo tiempo.
  2. Cada script se ejecuta en una carpeta diferente, para acceder al script.py en esa carpeta.
  3. Cada trabajo dejará un registro en la carpeta de ejecución 'nohup.log'.
3
dash-o 17 nov. 2019 a las 03:31