Orden de ejecución con múltiples comandos.

Orden de ejecución con múltiples comandos.

Soy relativamente nuevo en Linux y estoy trabajando en un CronTab para copias de seguridad programadas. Descubrí cómo realizar múltiples trabajos secuenciales con ;y &&, pero no estoy seguro de cómo afecta la dependencia a la secuencia.

Mi trabajo cron se ve así:

# Every day at 0:00 (reboot server and do the hourly backup procedure).
0 0 * * * sh shutdown.sh && sh backup.sh ; sh nas.sh ; sh ftp.sh ; sh startup.sh        

Lo que quiero que suceda es ejecutar Shutdown.sh y continuar la secuencia si tiene éxito, pero cancelarla si falla. Mi temor es que solo se salte sh backup.shpero luego continúe la secuencia.

¿Funcionará según lo previsto? Si no, ¿sería shutdown && (backup ; nas ; ftp ; startup)posible algo así?

Respuesta1

¿Por qué no lo pruebas con algunos comandos ficticios que sabes que funcionarán o fallarán?

$ ls foo && echo ok1 ; echo ok2
ls: cannot access foo: No such file or directory
ok2

$ ls foo && (echo ok1 ; echo ok2)
ls: cannot access foo: No such file or directory

Entonces parece que tu intuición era correcta y necesitas la segunda estructura.


Comosugiriópormikeserv, para pruebas en general, puede usar true(o :) y false, en lugar lsde un archivo inexistente. Por eso,

$ false && echo ok1 ; echo ok2
ok2

$ false && (echo ok1 ; echo ok2)

Respuesta2

Si Shutdown.sh realmente reinicia su servidor, ¿no creo que se ejecuten los otros comandos? Es posible que la respuesta se elimine, pero puede leerla, así que aquí hay solo algunos consejos: coloque los scripts en una carpeta propia y llámelos con la ruta completa, es posible que cron se ejecute en una carpeta diferente. hacerlos ejecutables y llamarlos directamente sin sh también es bueno. Poner toda la lógica en un script adicional con if-else también es una buena codificación. Si le preocupa que sh se use como caparazón, use un shebang.

información relacionada