在 Debian 系统中,你可以使用 systemd
定时器来实现并发执行任务。systemd
是一个系统和服务管理器,它允许你创建定时器来自动执行任务。要实现并发执行,你需要创建多个独立的 systemd
定时器和相应的服务单元文件。
以下是创建并发执行任务的步骤:
- 创建一个 systemd 服务单元文件
首先,为你要执行的任务创建一个 systemd 服务单元文件。例如,创建一个名为 my-task.service
的文件:
[Unit] Description=My custom task [Service] Type=oneshot ExecStart=/path/to/your/script.sh
在这个文件中,Description
是任务的描述,ExecStart
是要执行的脚本或命令。
- 创建一个 systemd 定时器单元文件
接下来,为你的任务创建一个 systemd 定时器单元文件。例如,创建一个名为 my-task.timer
的文件:
[Unit] Description=Run my-task.service every hour [Timer] OnCalendar=*-*-* *:00:00 Persistent=true Unit=my-task.service [Install] WantedBy=timers.target
在这个文件中,OnCalendar
定义了定时器的触发时间,这里设置为每小时执行一次。Persistent
设置为 true
表示即使系统在定时器触发时尚未启动,也会在系统启动后补执行漏掉的任务。
- 启用并启动定时器
使用以下命令启用并启动定时器:
sudo systemctl enable --now my-task.timer
- 实现并发执行
要实现并发执行,只需创建多个独立的服务和定时器单元文件,并为每个任务设置不同的触发时间。systemd
会自动处理并发执行,确保所有任务按照预定的时间同时运行。
注意:如果你的任务需要同时运行多个实例,你可以在服务单元文件中设置 TasksMax
和 TasksMaxSec
选项来控制并发实例的数量。例如:
[Service] Type=oneshot ExecStart=/path/to/your/script.sh TasksMax=5 TasksMaxSec=1h
这将允许最多 5 个并发实例运行,且每个实例之间至少相隔 1 小时。