linux添加服务到systemctl

1. 添加服务

linux的systemctl的服务文件保存在/lib/systemd/system/etc/systemd/system中,这里以/lib/systemd/system为例。
首先准备一个service文件,名字为XXX.service
该文件示例内容如下:

[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

/lib/systemd/system/XXX.service

刷新systemctl的缓存:

sudo systemctl daemon-reload

启动服务:

sudo systemctl start XXX

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

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

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

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

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

3. @的作用

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

...
ExecStart=/path/to/your/service %i
...

当你启动服务时,可以写

systemctl start XXX@yyy

这样会把yyy传递给%i

posted @ 2023-12-27 15:31  王冰冰  阅读(644)  评论(2编辑  收藏  举报