如何写一个简单的systemd配置来控制程序的运行

请注意,本文编写于 170 天前,最后修改于 104 天前,其中某些信息可能已经过时。

systemd出现之前,要想写出一个控制程序运行的脚本需要掌握一定的shell编程。而现在有了systemd就可以很简单的写出一个控制程序的脚本,我直接用例子说明。

配置说明

[Unit]
Description=xxx
After=network.target

[Service]
Type=simple
User=root
WorkingDirectory=/path/
ExecStart=/path/to/exec

[Install]
WantedBy=multi-user.target

上面是一个简单的systemd配置,下面是每个字段的说明

配置文件中的路径尽量使用绝对路径

[Unit]

  • Description 对程序的描述,用作说明用途
  • After 在该字段所指定的条件满足之后再运行,例子中的条件是连接网络之后再运行

[Service]

  • Type 类型,一般保持simple即可,不用管
  • User 运行程序时所指定的用户,如果不清楚该用什么用户,用root即可,但是会有安全隐患,不推荐
  • WorkingDirectory 工作目录,有时候可以省略这个字段,一般填写程序所在的目录,可以避免一些路径的问题
  • ExecStart 运行程序所执行的命令,必须使用绝对路径,因为systemd是不管你的环境变量的

[Install]

  • WantedBy 需求它的target,例子中的是用来实现开机启动的,一般不用改

使用

  1. systemd配置文件的目录下(一般为/lib/systemd/system/)新建一个扩展名为service的文件,填入配置文件的内容即可,然后执行systemctl daemon-reload,需要注意:对任何配置文件的任何修改都需要执行systemctl daemon-reload来应用更改,否则会报错,除非你重启你的系统
  2. 然后就可以使用以下命令来控制程序了

    systemctl start/stop/restart/status/enable/disable <name>

    命令作用依次是启动/关闭/重启/查看日志/启用开机启动/关闭开机启动<name>则是配置文件的文件名

Comments

添加新评论

已有 2 条评论

还可以更详细点

我觉得差不多也够用了吧,还有什么要补充的么