Systemd 定时器教程 阮一峰的网络日志
Systemd 定时器教程 - 阮一峰的网络日志
- URL: 原文
- Added At: 2025-01-14 08:21:21
- Link To Text
TL;DR
Systemd 是 Linux 的系统启动器,提供了定时任务功能。定时任务可以预定在未来的某个或多个时点执行的任务,具有自动生成日志、设置内存和 CPU 使用额度、任务可以拆分、依赖其他 Systemd 单元等优点。邮件脚本可以发送电子邮件,使用 bash 脚本,调用 mail 命令。Systemd 单元是 Systemd 的最小功能单位,是单个进程的描述,分为 12 种,包括 Service、Timer、Slice 等。单元管理命令包括启动单元、关闭单元、重启单元、杀死单元进程、查看单元状态、开机自动执行、关闭开机自动执行等。Service 单元定义所要执行的任务,Timer 单元定义定时执行 Service。[Install] 和 target 定义开机自启动和关闭开机自启动时,所要执行的命令。定时器相关命令包括启动定时器、查看定时器状态、查看所有定时器、关闭定时器、开机自动运行定时器、关闭定时器开机自启动等。日志相关命令包括查看整个日志、查看 mytimer.timer 日志、查看 mytimer.timer 和 mytimer.service 日志、从结尾开始查看最新日志、从结尾开始查看 mytimer.timer 日志等。
Summary
-
Systemd 简介:Systemd 是 Linux 的系统启动器,功能强大,提供了定时任务功能。
- 定时任务:
- 定义:预定在未来的某个或多个时点执行的任务。
- 优点:自动生成日志,设置内存和 CPU 使用额度,任务可以拆分,依赖其他 Systemd 单元。
- 邮件脚本:
- 功能:发送电子邮件。
- 实现:使用 bash 脚本,调用 mail 命令。
- Systemd 单元:
- 定义:Systemd 的最小功能单位,是单个进程的描述。
- 种类:有 12 种,包括 Service、Timer、Slice 等。
- 单元描述文件:分散在三个目录,/lib/systemd/system、/etc/systemd/system、/usr/lib/systemd/system。
- 单元管理命令:
- 启动单元:systemctl start [UnitName]
- 关闭单元:systemctl stop [UnitName]
- 重启单元:systemctl restart [UnitName]
- 杀死单元进程:systemctl kill [UnitName]
- 查看单元状态:systemctl status [UnitName]
- 开机自动执行:systemctl enable [UnitName]
- 关闭开机自动执行:systemctl disable [UnitName]
- Service 单元:
- 定义:所要执行的任务。
- 实现:新建 Service 文件,写入 ExecStart、ExecStop、ExecReload 等字段。
- Timer 单元:
- 定义:定时执行 Service。
- 实现:新建 Timer 文件,写入 OnUnitActiveSec、OnBootSec、OnStartupSec 等字段。
- [Install] 和 target:
- 定义:开机自启动和关闭开机自启动时,所要执行的命令。
- 实现:写入 WantedBy 字段,指定 target。
- 定时器相关命令:
- 启动定时器:systemctl start mytimer.timer
- 查看定时器状态:systemctl status mytimer.timer
- 查看所有定时器:systemctl list-timers
- 关闭定时器:systemctl stop myscript.timer
- 开机自动运行定时器:systemctl enable myscript.timer
- 关闭定时器开机自启动:systemctl disable myscript.timer
- 日志相关命令:
- 查看整个日志:sudo journalctl
- 查看 mytimer.timer 日志:sudo journalctl -u mytimer.timer
- 查看 mytimer.timer 和 mytimer.service 日志:sudo journalctl -u mytimer
- 从结尾开始查看最新日志:sudo journalctl -f
- 从结尾开始查看 mytimer.timer 日志:journalctl -f -u timer.timer