bash - 流程调度

标签 bash cron

比方说,我有 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/

相关文章:

python - 树莓派 Crontab 脚本错误

bash - 文件存在时运行 GNU Parallel

linux - Makefile PHONY 在大文件中的使用

Bash 故障排除 : Not a valid identifier

mysql - 为什么我的 cron 作业会失败一半?

php - 每 30 秒运行一次 PHP 脚本的最佳方法是什么?

bash - Dockerfile的COPY命令无法正常工作

Bash 多个端口映射取决于脚本参数

Docker容器运行时的环境变量文件

cron - 每周一早上 5 点运行