在 CentOS 系统中,要实现 crontab 任务的并发执行,可以使用以下方法:
systemd 定时器:创建一个 systemd 服务单元文件,例如 /etc/systemd/system/my-cronjob.service,内容如下:
[Unit]
Description=My Cronjob
[Service]
Type=simple
ExecStart=/path/to/your/script.sh
然后创建一个 systemd 定时器单元文件,例如 /etc/systemd/system/my-cronjob.timer,内容如下:
[Unit]
Description=Run my-cronjob.service every minute
[Timer]
OnCalendar=*:0/1
Persistent=true
Unit=my-cronjob.service
[Install]
WantedBy=timers.target
这个定时器会每分钟执行一次 my-cronjob.service。由于 systemd 默认会并行处理多个任务,因此你的脚本可以并发执行。
启用并启动定时器:
sudo systemctl enable --now my-cronjob.timer
parallel 命令:首先,确保已经安装了 parallel 命令。如果没有安装,可以使用以下命令安装:
sudo yum install parallel
接下来,修改你的 crontab 任务,使用 parallel 命令来并发执行脚本。例如,将原本的 crontab 任务:
* * * * * /path/to/your/script.sh
修改为:
* * * * * /usr/bin/parallel -j 4 /path/to/your/script.sh ::: {1..4}
这里,-j 4 表示同时运行 4 个并发任务,{1..4} 是一个序列,表示将脚本执行 4 次。你可以根据需要调整并发任务的数量。
注意:使用 parallel 命令时,确保你的脚本可以在并发环境下安全运行,避免产生竞争条件或其他潜在问题。