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 個客戶端或 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

相關內容