Ubuntu Shell: use cron para ejecutar 3 scripts consecutivamente, el segundo debe permanecer ejecutándose en segundo plano

Ubuntu Shell: use cron para ejecutar 3 scripts consecutivamente, el segundo debe permanecer ejecutándose en segundo plano

Me encontré con el siguiente escenario en uno de los servidores que tuve que administrar recientemente. Es un Ubuntu utilizado como servidor de transmisión de música, la música debe cambiarse según un cronograma, pero el último administrador del sistema lo hizo manualmente con 3 scripts (00-stop.sh, 10-server.sh y 20-client.sh). Aquí están los pasos que usó/me explicó:

  1. Ejecute el script 00-stop.sh para detener el servidor de transmisión.
  2. Cambie la lista en el script 20-client.sh.
  3. Ejecute 10-server.sh usando "&" para que siga ejecutándose en segundo plano.
  4. Ejecute 20-client.sh con la lista actualizada y la música comenzará a transmitirse.

Creo que podría usar la automatización Cron para cambiar la música automáticamente, pero no estoy seguro de cómo hacerlo. Mi idea es tener cuatro scripts: 00-stop.sh 10-server.sh 20-client.sh (con lista de música 1) 30-client.sh (con lista de música 2)

Y ejecute 20 o 30 clientes según lo programado. Cada trabajo cron debe llamar primero a 00-stop.sh, luego a 10-server.sh (y mantenerlo en segundo plano) y luego a 20-client.sh o 30-client.sh.

Me imagino algo como:

0 10 * * 1 /path/00-stop.sh && /path/10-server.sh && /path/20-client.sh

El problema es que necesito que el segundo script (10-server.sh) siga ejecutándose en segundo plano, ¿cómo podría hacerlo?

Respuesta1

Yo armaría un solo guión:

#!/usr/bin/env bash
set -e   # abort for any non-zero exit statuses

/path/00-stop.sh

/path/10-server.sh </dev/null >/dev/null 2>&1 &
disown

/path/20-client.sh

Entonces el trabajo cron sería

0 10 * * 1 bash /path/refresh_music_server.sh

información relacionada