Linux Systemd 使用Page Cover
Linux Systemd 使用
April 5th 20253 min read483 words

定时任务

创建一个定时器:

sudo vi /etc/systemd/system/reboot.timer

内容如下:

[Unit] Description=Daily reboot at midnight [Timer] OnCalendar=*-*-* 03:00:00 Persistent=true # 确保系统在下次启动时,如果之前有错过的定时任务,会立即执行那次任务 # Unit=reboot.service 不指定默认为 timer 同名 service 文件 [Install] WantedBy=timers.target

创建对应的服务:

sudo vi /etc/systemd/system/reboot.service

内容如下:

[Unit] Description=Reboot system [Service] Type=oneshot # 服务是一次性任务,执行完后将立即退出 ExecStart=/usr/bin/systemctl reboot

启用定时器

sudo systemctl enable --now reboot.timer

查看服务是否存在:

systemctl status reboot.service

查看定时器是否启用:

systemctl list-timers

查看定时器的详细信息:

systemctl cat reboot.timer

如果没有手动指定 Unit=,它会默认查找 reboot.service

移除定时任务

先停止相关的定时器和服务:

sudo systemctl stop reboot.timer sudo systemctl stop reboot.service

禁用定时器以防止它开机启动:

sudo systemctl disable reboot.timer

删除定时器和服务文件

删除相关的 systemd 配置文件:

sudo rm /etc/systemd/system/reboot.timer sudo rm /etc/systemd/system/reboot.service

重新加载 systemd 配置

删除配置后,重新加载 systemd 配置以生效:

sudo systemctl daemon-reload

验证是否已移除

运行以下命令,确认定时器和服务已移除:

systemctl list-timers --all systemctl list-units --all | grep <name>

启动模式

检查当前的默认启动目标

systemctl get-default

设置图形界面为默认启动

sudo systemctl set-default graphical.target

设置多用户模式为默认启动

sudo systemctl set-default multi-user.target

手动启动图形界面

sudo systemctl start graphical.target

Tips

重新加载 unit 文件

systemctl daemon-reload

重启 systemd 进程

很少用,一般系统升级才需要)

systemctl daemon-reexec

列出激活的 target

systemctl list-units --type=target

列出系统中所有的target

systemctl list-units --type=target --all

所有已安装的 target

systemctl list-unit-files --type=target

end