
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:
- Führen Sie das Skript 00-stop.sh aus, um den Streaming-Server zu stoppen.
- Ändern Sie die Liste im Skript 20-client.sh.
- Führen Sie 10-server.sh mit „&“ aus, um es im Hintergrund laufen zu lassen.
- 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