systemd 定时器 WantedBy=为空时启动定时器,关联服务如何配置才会被启动
时间: 2024-09-24 10:30:18 浏览: 44
Systemd 是Linux操作系统中的一个管理系统单元(Service Manager),它用于管理系统和服务的生命周期管理。其中的定时器功能允许你在特定时间执行命令或启动服务。
如果你想让一个Service的定时器在WantedBy字段为空的情况下启动,这意味着这个定时器不会直接由其他服务启动,而是在系统启动过程中作为独立的组件独立运行。为了实现这一点,你需要按照以下步骤配置:
1. **创建定时器**:
使用`systemctl`命令创建一个新的定时器,例如:
```
sudo systemctl timer create mytimer.interval --onboot=True --once=False --enabled=True
```
`mytimer.interval`是你自定义的定时器名称,`--onboot=True`表示开机启动,`--once=False`表示不是一次性任务,`--enabled=True`设置其为启用状态。
2. **关联脚本或服务**:
在`Timer`的定义文件`/etc/systemd/system/mytimer.timer`中,你可以添加`ExecStart=`选项指定要在定时器触发时执行的命令或启动的服务。例如,如果想在某个时间点启动名为`myservice.service`的服务,可以这样配置:
```bash
[Unit]
Description=My Service Timer
[Timer]
OnCalendar=...your specified time... # 定义时间周期
Persistent=true # 让timer在重启后保持激活
ExecStart=/bin/systemctl start myservice.service
[Install]
WantedBy=multi-user.target # 或者你想让它在哪个目标下启动,如graphical.target或console.target
```
3. **启用定时器**:
创建并编辑完定时器配置后,使用`sudo systemctl enable mytimer.timer`使其开机自动启动,并使用`sudo systemctl start mytimer.timer`立即执行第一次。
阅读全文