Ubuntu Shell: Use o cron para executar 3 scripts consecutivamente, o segundo deve permanecer em execução em segundo plano

Ubuntu Shell: Use o cron para executar 3 scripts consecutivamente, o segundo deve permanecer em execução em segundo plano

Me deparei com o seguinte cenário em um dos servidores que precisei gerenciar recentemente. É um Ubuntu usado como servidor de streaming de música, a música deve ser alterada de acordo com um cronograma, mas o último administrador de sistema fez isso manualmente com 3 scripts (00-stop.sh, 10-server.sh e 20-client.sh) Aqui estão os passos que ele usou/explicou para mim:

  1. Execute o script 00-stop.sh para parar o servidor de streaming.
  2. Altere a lista no script 20-client.sh.
  3. Execute 10-server.sh usando "&" para mantê-lo funcionando em segundo plano.
  4. Execute 20-client.sh com a lista atualizada, a música começará a ser transmitida.

Acho que poderia usar a automação do Cron para alterar a música automaticamente, mas não sei como fazer isso. Minha ideia é ter quatro scripts: 00-stop.sh 10-server.sh 20-client.sh (com lista de músicas 1) 30-client.sh (com lista de músicas 2)

E execute 20 ou 30 clientes de acordo com o agendamento. Cada tarefa cron deve chamar 00-stop.sh primeiro, depois 10-server.sh (e mantê-lo em segundo plano) e depois 20-client.sh ou 30-client.sh.

Imagino algo como:

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

O problema é que preciso que o segundo script (10-server.sh) continue rodando em segundo plano, como poderia fazer isso?

Responder1

Eu montaria um único script:

#!/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

Então o cron job seria

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

informação relacionada