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