贡献者: addis
/etc/systemd/system/名字.service
:
ExecStart
不支持 >
和 |
等
sudo systemctl daemon-reload
使 service 文件生效
sudo systemctl enable 名字.service
就可以设置开机自启服务(通过创建一个 symlink)。.service
可以省略
systemctl disable
不开机自启
systemctl status
查看状态和日志的最新几行(-n 50
可以指定显示多少行,-l
可以显示完整的行而不是截断)
systemctl start
启动
systemctl stop
停止
systemctl restart
重启
ps aux | grep 名字
查看是否在运行
hello.sh
,内容是 while true; do echo hello; sleep 3; done
。那么应该设置 ExecStop=/bin/kill $MAINPID
,其中 MAINPID
是 systemd 的一个变量,即当前服务进程的 PID。
Type=simple
意思是 ExecStart
命令的进程就是服务进程。该命令一旦运行就算是服务正在运行。
Restart=always
意思是只要服务进程终止了(无论什么原因),就立刻重新开始运行。
Restart=on-failure
意思是只有 exit code 不为 0 或者被 signal 终止才 restart。正常执行完毕(exit code 0)不重启。
WantedBy=multi-user.target
意思是启动后到了 multi-user.target
阶段才开始运行。后者大概就是支持多用户登陆,但在 GUI 出现之前,经常使用。
stdout
和 stderr
,那么可以用 systemctl status 服务
查看最后的一点 log,如果要看更多就用 sudo journalctl -u 服务.service [-n 50]
后面的 -n
可以指定看最后多少行。
友情链接: 超理论坛 | ©小时科技 保留一切权利