通过Systemctl管理自定义linux服务文件

发布时间 2023-06-17 09:28:25作者: 华小电

Systemd 默认从目录/etc/systemd/system/读取配置文件。但是,里面存放的大部分文件都是符号链接,指向目录/usr/lib/systemd/system/,真正的配置文件存放在那个目录。systemctl enable命令用于在上面两个目录之间,建立符号链接关系。

sudo systemctl enable [example]

等同于
sudo ln -s '/usr/lib/systemd/system/[example]' '/etc/systemd/system/multi-user.target.wants/[example]

nginx为例,nginx安装路径为/usr/local/nginx

在/etc/systemd/system/路径下创建nginx.service文件

[Unit]
Description=nginx - high performance web server
After=nginx.service
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
Execenable=/usr/local/nginx/sbin/nginx
User=root
Group=root
Restart=always
RestartSec=20
StartLimitInterval=0
[Install]
WantedBy=multi-user.target
[Unit] 表示这是基础信息
Description 是描述
After 是在那个服务后面启动,一般是网络服务启动后启动
[Service] 表示这里是服务信息
Type 是后台运行的形式
User 是设置服务运行的用户
Group 是设置服务运行的用户组
ExecStart 是启动服务的命令
ExecReload 是重启服务的命令
ExecStop 是停止服务的指令
Restart=always 只要不是通过systemctl stop来停止服务,任何情况下都必须要重启服务,默认值为no
RestartSec=20 重启间隔,比如某次异常后,等待20(s)再进行启动,默认值0.1(s)
StartLimitInterval=0 无限次重启,默认是10秒内如果重启超过5次则不再重启,设置为0表示不限次数重启
[Install] 表示这是是安装相关信息
WantedBy 是以哪种方式启动:multi-user.target表明当系统以多用户方式(默认的运行级别)启动时,这个服务需要被自动运行