systemd 服务的好处
方便启动、停止、重启、开机自启、停止自启、查看日志等功能
例如我们有个python程序example.py,我们需要它一直运行在后台。如果不用systemd的话一个选择是用 screen -S screen_name python example.py
命令。然而我们这样只能方便挂在后台、进去查看程序运行情况,并不能方便的实现停止后重新运行,开机自启等系列功能。
如果我们将这个封装成 systemd 服务的形式,就可以很方便的解决这个问题。
教程正文
要封装成 systemd 服务只需要编写一个 systemd 的配置文件。我们以封装成用户级 systemd 服务为例。
systemctl --user
的配置文件默认放在 $HOME/.config/systemd/user/
下面。其余的默认目录可以自行搜索。
在这个目录下编写 service_name.service
,简易模板为:
[Unit]
Description=your service description
After=(this service should run after that ) xxx (has been running)
# 例如:
# xxx = network.target: 整个服务只有在网络栈起来之后才会起
# xxx = B.service: 整个服务只有在B.service起来之后才会起
[Service]
Type=simple
WorkingDirectory=[你的程序运行目录]
ExecStart=[你要运行的命令]
Restart=always
RestartSec=10
[Install]
WantedBy=default.target
如何运行:
# 开机自启
systemctl --user enable pyasyncbot.service
# 运行
systemctl --user start pyasyncbot.service
修改了 service 文件后重新加载:
systemctl --user deamon-reload