Systemd
systemd
-
systemd unit
- 单元是systemd的最小功能单位,是但个进程的描述。一个个小的unit互相调用和依赖,组成一个庞大的人物管理系统。
- unit分为不同的种类,大概有12种。service unit负责后台服务,timer unit负责定时器
- 每个单元都有一个单元描述文件,分散在3个目录
- /lib/systemd/system
- /etc/systemd/system
- /usr/lib/systemd/system
- 查看所有的单元文件
- systemctl list-unit-files
- systemctl list-unit-files –type service
- systemctl list-unit-files –type timer
- 单元管理命令
- system start/stop/restart/kill/status/enable/disable [unitName]
-
Service unit
- 在/usr/lib/systemd/system目录里面新建一个文件,比如mytimer.service
[Unit] Description=MyTimer [Service] ExecStart=/bin/bash /path/to/mail.sh
- [Unit]介绍单元的基本信息,Description给出这个单元的简介
- [Service]用来定制行为,Systemd提供许多字段
- ExecStart, ExecStop, ExecReload, ExecStartPre, ExecStartPost, ExecStopPost
-
Timer单元
- 在/usr/lib/systemd/system目录里面 新建一个mytimer.timer文件
[Unit] Description=Runs mytimer every hour [Timer] OnUnitActiveSec=1h Unit=mytimer.service [Install] WantedBy=multi-user.target
- [Timer]定制定时器部分
- OnActiveSec 定时器生效后,多少时间开始执行任务
- OnBootSec 系统启动后,多少时间开始执行任务
- OnStartupSec systemd进程启动后多少时间开始执行任务
- OnUnitActiveSec 该单元上次执行后,等多少时间再次执行
- OnUnitInactiveSec 定时器上次关闭多少时间,再次执行
- OnCalendar 基于绝对时间
- AccuracySec 如果因为各种原因,任务必须推迟,推迟的最大秒数,默认60秒
- Unit 真正要执行的任务,默认是同名的.service单元
- Persistent 即使定时器到时没启动也会自动执行相应的单元
- WakeSystem 如果系统休眠,是否自动唤醒系统
- 定时器的相关命令
sudo systemctl start mytimer.timer systemctl status mytimer.timer systemctl list-timers sudo systemctl stop mytimer.timer sudo systemctl enable mytimer.timer sudo systemctl disable mytimer.timer