我在最近管理的一台服务器中遇到了以下情况。它是一台用作音乐流媒体服务器的 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-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