工作目录
cd /etc/systemd/system
wasteHeap_frp.service文件
[Unit]
Description=This will run at startup
After=network.target
[Service]
Type=simple
User=nobody
Restart=always
RestartSec=1min
ExecStart=/home/atd/frp/wasteHeap_frp/frpc -c /home/atd/frp/wasteHeap_frp/frpc.ini
ExecReload=/home/atd/frp/wasteHeap_frp/frpc reload -c /home/atd/frp/wasteHeap_frp/frpc.ini
ExecStop=/bin/kill $MAINPID
KillMode=control-group
[Install]
WantedBy=multi-user.target
授权添加开机启动
systemctl daemon-reload
chmod +x /etc/systemd/system/wasteHeap_frp.service
systemctl enable /etc/systemd/system/wasteHeap_frp.service
配置文件解析
Description:运行软件描述
Documentation:软件的文档
After:因为软件的启动通常依赖于其他软件,这里是指定在哪个服务被启动之后再启动,设置优先级
Wants:弱依赖于某个服务,目标服务的运行状态可以影响到本软件但不会决定本软件运行状态
Requires:强依赖某个服务,目标服务的状态可以决定本软件运行。
ExecStart:执行命令
ExecStop:停止执行命令
ExecReload:重启时的命令
Type:软件运行方式,默认为simple
WantedBy:这里相当于设置软件,选择运行在linux的哪个运行级别,只是在systemd中不在有运行级别概念,但是这里权当这么理解
参考:https://www.cnblogs.com/downey-blog/p/10473939.html
坑
- 有时候加了
User=nobody
会出现执行失败情况,原因是权限不足,解决方法直接去掉User=nobody
- 遇到问题
Failed to start xxx.service: Unit not found
,首先看一下服务列表里有没有这个服务systemctl list-unit-files --type=service
,有的话执行systemctl daemon-reload
即可,没有的话说明东西没装好。