在Linux系统中,可以通过Systemd和Crontab结合使用来实现任务的并行执行。以下是几种实现方式:
Systemd天然支持服务的并行启动,可以通过创建多个服务单元来实现并行执行。
/etc/systemd/system/task1.service
:[Unit]
Description=Task 1 Service
[Service]
Type=simple
ExecStart=/path/to/task1.sh
/etc/systemd/system/task2.service
:[Unit]
Description=Task 2 Service
[Service]
Type=simple
ExecStart=/path/to/task2.sh
/etc/systemd/system/parallel-tasks.target
:[Unit]
Description=Run Tasks in Parallel
Requires=task1.service task2.service
sudo systemctl start parallel-tasks.target
Crontab本身不支持直接的并行控制,但可以通过以下方式实现:
在crontab条目中使用&
将任务放入后台:
* * * * * /path/to/task1.sh & /path/to/task2.sh &
* * * * * parallel ::: "/path/to/task1.sh" "/path/to/task2.sh"
* * * * * systemctl start parallel-tasks.target
systemd
的CPUQuota
限制CPU使用率ini
[Service]
StandardOutput=file:/var/log/task1.log
StandardError=file:/var/log/task1.error.log
After
和Before
指令管理任务依赖关系ini
[Service]
TimeoutStartSec=300
bash
systemctl status task1.service task2.service
bash
journalctl -u task1.service -u task2.service --since "1 hour ago"
bash
grep CRON /var/log/syslog
通过以上方法,您可以灵活地在Linux系统中实现任务的并行执行,根据具体需求选择最适合的方案。