比方说,我有 10 个脚本要作为 cron 作业定期运行。但是,我不希望它们同时运行。我只希望其中 2 个同时运行。
我想到的一个解决方案是创建两个脚本,在每个脚本上放置 5 个语句,并将它们作为 crontab 中的单独条目。然而,该解决方案似乎非常临时。
是否有现成的 unix 工具来执行我上面提到的任务?
最佳答案
jobs
内置函数可以告诉您有多少子进程正在运行。一些简单的 shell 脚本可以完成这个任务:
MAX_JOBS=2
launch_when_not_busy()
{
while [ $(jobs | wc -l) -ge $MAX_JOBS ]
do
# at least $MAX_JOBS are still running.
sleep 1
done
"$@" &
}
launch_when_not_busy bash job1.sh --args
launch_when_not_busy bash jobTwo.sh
launch_when_not_busy bash job_three.sh
...
wait
关于bash - 流程调度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4260267/