博客园 首页 私信博主 回到顶部 联系博主
(仅pc端)
管理 换背景图

编写systemd添加systemctl命令及设置开机自启样例

工作目录

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即可,没有的话说明东西没装好。
posted @ 2021-05-15 16:54  温一壶白开  阅读(280)  评论(0编辑  收藏  举报