Ubuntu Shell: Verwenden Sie cron, um 3 Skripte nacheinander auszuführen, das zweite muss im Hintergrund ausgeführt werden

Ubuntu Shell: Verwenden Sie cron, um 3 Skripte nacheinander auszuführen, das zweite muss im Hintergrund ausgeführt werden

Ich bin auf einem der Server, die ich kürzlich verwalten muss, auf das folgende Szenario gestoßen. Es handelt sich um ein Ubuntu, das als Musik-Streaming-Server verwendet wird. Die Musik muss nach einem Zeitplan geändert werden, aber der letzte Systemadministrator hat dies manuell mit 3 Skripten (00-stop.sh, 10-server.sh und 20-client.sh) getan. Hier sind die Schritte, die er verwendet/mir erklärt hat:

  1. Führen Sie das Skript 00-stop.sh aus, um den Streaming-Server zu stoppen.
  2. Ändern Sie die Liste im Skript 20-client.sh.
  3. Führen Sie 10-server.sh mit „&“ aus, um es im Hintergrund laufen zu lassen.
  4. Führen Sie 20-client.sh mit der aktualisierten Liste aus. Das Musik-Streaming beginnt.

Ich denke, ich könnte Cron-Automatisierung verwenden, um die Musik automatisch zu ändern, aber ich bin nicht sicher, wie das geht. Meine Idee ist, vier Skripte zu haben: 00-stop.sh 10-server.sh 20-client.sh (mit Musikliste 1) 30-client.sh (mit Musikliste 2)

Und führen Sie je nach Zeitplan entweder 20-Client oder 30-Client aus. Jeder Cron-Job sollte zuerst 00-stop.sh aufrufen, dann 10-server.sh (und im Hintergrund laufen lassen) und dann entweder 20-client.sh oder 30-client.sh.

Ich stelle mir so etwas vor:

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

Das Problem besteht darin, dass das zweite Skript (10-server.sh) im Hintergrund weiterlaufen muss. Wie kann ich das erreichen?

Antwort1

Ich würde ein einzelnes Skript zusammenstellen:

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

Dann wäre der Cron-Job

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

verwandte Informationen