TongXu-Server

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