linux添加服务到systemctl

1. 添加服务

linux的systemctl的服务文件保存在/lib/systemd/system/etc/systemd/system中,这里以/lib/systemd/system为例。

首先准备一个service文件,名字为XXX.service

该文件示例内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[Unit]
Description=Baidu service
Documentation=https://www.baidu.com/
After=network.target nss-lookup.target

[Service]
User=nobody
CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_BIND_SERVICE
AmbientCapabilities=CAP_NET_ADMIN CAP_NET_BIND_SERVICE
NoNewPrivileges=true
ExecStart=/path/to/your/service your_arg1 your_arg2
Restart=on-failure
RestartPreventExitStatus=23

[Install]
WantedBy=multi-user.target

拷贝文件到:/lib/systemd/system

1
/lib/systemd/system/XXX.service

刷新systemctl的缓存:

1
sudo systemctl daemon-reload

启动服务:

1
sudo systemctl start XXX

2. 将输出保存到文件中,而不是journalctl日志中

修改输入输出:(直接添加到service文件的[service]

1
2
StandardOutput=file:/path/to/log.txt
StandardError=file:/path/to/log.txt

或者每次启动服务都追加写入:

1
2
StandardOutput=append:/path/to/log.txt
StandardError=append:/path/to/log.txt

3. @的作用

部分服务中你会发现有XXX@.service,你可以打开该文件,里面会出现一个%i,比如:

1
2
3
...
ExecStart=/path/to/your/service %i
...

当你启动服务时,可以写

1
systemctl start XXX@yyy

这样会把yyy传递给%i


linux添加服务到systemctl
https://jcdu.top/2023/12/27/linux添加服务到systemctl/
作者
horizon86
发布于
2023年12月27日
许可协议