我想在直播时自动录制流,因此我想设置一个 cronjob,每 15 分钟运行一次 youtube-dl 到该 url。
但是一旦开始录音,如何防止系统在15分钟后同时开始另一次录音?
答案1
您可以使用群为此。flock 是一个用于管理锁的小型命令行工具。它的工作原理是将锁包裹在命令的执行中,并将锁的状态存储在锁文件中。
您可能希望根据以下命令创建一个 cron 作业:
flock -n /tmp/ytdlcron.lock <your youtube dl command>
flock 默认创建一个排他锁(意味着只有一个引用特定锁文件的命令会运行),并且该-n
标志会导致后续作业失败,直到完成(而默认是等待,可能会导致大量作业等待运行)
答案2
另一个建议可能在更一般的情况下有用:
LOCK_FILE="/tmp/cron_job.lock"
# Check if lock file exists
if [ -f "$LOCK_FILE" ]; then
echo "Lock file exists. Exiting."
exit 1
fi
# Create lock file
touch "$LOCK_FILE"
# Your cron job code goes here
# Remove lock file
rm "$LOCK_FILE"