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-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

相关内容