Systemd 服务简明教程

systemd 是Linux下新的init系统,用于代替老式的 SysV Init。

有一些特征可以区分两者: 说明 | SysV Init | Systemd ———–|———————-|———————– 主要命令 | service dummy status | systemctl status dummy 配置文件目录 | /etc/rc.d/init.d/ | /etc/systemd/system/ 关机命令 | poweroff | systemctl poweroff

简单的配置文件

我在github gists 里面写了两个简单的例子,也是我会用到的了。

[Unit]
Description=Enable Wake-up on LAN

[Service]
Type=oneshot
ExecStart=/sbin/ethtool -s eno1 wol g

[Install]
WantedBy=basic.target

以上是一个开启网卡WOL功能的Service文件,最关键的就是oneshot类型,表示程序(ExecStart部分)只需要执行一下即可,执行完正常退出就算服务正常启动了。

[Unit]
Description=qBittorrent Downloader
After=network-online.service

[Service]
Type=simple
User=xxxx
ExecStart=/usr/bin/qbittorrent-nox

[Install]
WantedBy=multi-user.target

以上是我把qbittorrent当作服务来启动的配置文件,其中类型为simple,就是这个程序只要运行着就可以了,程序退出了就说明服务出现了问题。 另外我还要指定程序要以什么用户的身份来执行。 以及指定了启动顺序(After),要在网络好了之后启动(个人理解)。

  • 创建服务可以
    1. 直接编辑 ‘/etc/systemd/system/xxx.service’ 来创建
    2. 也可以通过命令创建 systemctl edit --force --full xxx.service (推荐)
  • 创建完毕之后需要执行两条命令来使服务生效:
    • sudo systemctl daemon-reload ,更新服务信息。
    • sudo systemctl enable wol-enable.service ,开启创建的服务。

Refer