Ubuntu Shell: используйте cron для последовательного запуска 3 скриптов, второй должен работать в фоновом режиме

Ubuntu Shell: используйте cron для последовательного запуска 3 скриптов, второй должен работать в фоновом режиме

Я столкнулся со следующим сценарием на одном из серверов, которым мне недавно пришлось управлять. Это Ubuntu, используемый в качестве сервера потоковой передачи музыки, музыка должна меняться по расписанию, но последний системный администратор делал это вручную с помощью 3 скриптов (00-stop.sh, 10-server.sh и 20-client.sh). Вот шаги, которые он использовал/объяснил мне:

  1. Запустите скрипт 00-stop.sh, чтобы остановить потоковый сервер.
  2. Измените список в скрипте 20-client.sh.
  3. Запустите 10-server.sh с помощью «&», чтобы он работал в фоновом режиме.
  4. Запустите 20-client.sh с обновленным списком, музыка начнет транслироваться.

Я думаю, что я мог бы использовать автоматизацию Cron для автоматической смены музыки, но я не уверен, как это сделать. Моя идея заключается в том, чтобы иметь четыре скрипта: 00-stop.sh 10-server.sh 20-client.sh (со списком музыки 1) 30-client.sh (со списком музыки 2)

И запустите либо 20-client, либо 30-client в соответствии с расписанием. Каждое задание cron должно сначала вызвать 00-stop.sh, затем 10-server.sh (и оставить его в фоновом режиме), а затем либо 20-client.sh, либо 30-client.sh.

Я представляю себе что-то вроде:

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

Проблема в том, что мне нужно, чтобы второй скрипт (10-server.sh) продолжал работать в фоновом режиме. Как это сделать?

решение1

Я бы составил один сценарий:

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

Тогда задание cron будет таким:

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

Связанный контент