
최근에 관리해야 하는 서버 중 하나에서 다음과 같은 시나리오를 접했습니다. 음악 스트리밍 서버로 사용되는 Ubuntu이며 일정에 따라 음악을 변경해야 하지만 마지막 시스템 관리자가 3개의 스크립트(00-stop.sh, 10-server.sh 및 20-client.sh)를 사용하여 수동으로 수행했습니다. 그가 나에게 사용/설명한 단계:
- 00-stop.sh 스크립트를 실행하여 스트리밍 서버를 중지합니다.
- 20-client.sh 스크립트에서 목록을 변경합니다.
- 백그라운드에서 계속 실행하려면 "&"를 사용하여 10-server.sh를 실행하세요.
- 업데이트된 목록으로 20-client.sh를 실행하면 음악 스트리밍이 시작됩니다.
Cron 자동화를 사용하여 음악을 자동으로 변경할 수 있을 것 같은데 어떻게 해야 할지 모르겠습니다. 내 생각은 4개의 스크립트를 갖는 것입니다: 00-stop.sh 10-server.sh 20-client.sh(음악 목록 1 포함) 30-client.sh(음악 목록 2 포함)
그리고 일정에 따라 20개 클라이언트 또는 30개 클라이언트를 실행하세요. 각 크론 작업은 먼저 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