
我在最近必須管理的一台伺服器中遇到了以下場景。它是一個用作音樂串流伺服器的Ubuntu,必須根據時間表更改音樂,但最後一個系統管理員使用3 個腳本(00-stop.sh、10-server.sh 和20-client.sh)手動完成了以下操作:他使用/向我解釋的步驟:
- 執行 00-stop.sh 腳本來停止串流伺服器。
- 更改 20-client.sh 腳本中的清單。
- 使用“&”運行 10-server.sh 以使其在背景運行。
- 使用更新後的清單執行 20-client.sh,音樂將開始串流。
我想我可以使用 Cron 自動化來自動更改音樂,但我不知道該怎麼做。我的想法是有四個腳本: 00-stop.sh 10-server.sh 20-client.sh(有音樂清單 1) 30-client.sh(有音樂清單 2)
並根據計劃運行 20 個客戶端或 30 個客戶端。每個 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