1. 编写*.service
文件
1.1 systemctl启动服务分类
1.1.1 用户类
此类下必须开机登陆之后,里面的程序才会运行
需要添加.service
文件到/usr/lib/systemd/user
下
1.1.2 系统类
此类下开机不登陆就可以运行
需要添加.service
文件到/usr/lib/systemd/user
下
1.2 文件模板
首先在’系统类’创建一个新文件
sudo vim /usr/lib/systemd/system/<name>.service
把如下模板稍作修改复制进去
[Unit]
# Description:运行软件描述
Description=imut_muye_service
# Documentation:软件的文档
# Documentation=
# After:因为软件的启动通常依赖于其他软件,这里是指定在哪个服务被启动之后再启动,设置优先级
After=network.target
# Requires:强依赖某个服务,目标服务的状态可以决定本软件运行。
# Requires=
[Service]
# ExecStart:执行的命令,可以直接是命令也可以是sh文件
ExecStart=/home/imut/Projects/imut_muye/dist/main
# ExecStop:停止执行命令
#ExecStop=/bin/kill -s TERM $MAINPID
# ExecReload:重启时的命令
ExecReload=/home/imut/Projects/imut_muye/dist/main
# Type:软件运行方式,默认为simple
Type=simple
# WorkingDirectory:工作的目录环境
WorkingDirectory=/home/imut/Projects/imut_muye/dist
[Install]
# WantedBy:这里相当于设置软件,选择运行在linux的哪个运行级别,只是在systemd中不在有运行级别概念,但是这里权当这么理解。
WantedBy=multi-user.target
2. 重载守护程序
sudo systemctl daemon-reload
3. 启动程序测试是否正常
sudo systemctl start imut_muye.service
查看状态
sudo systemctl status imut_muye.service
出现类似返回则正常
imut_muye.service - imut_muye_service
Loaded: loaded (/lib/systemd/system/imut_muye.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2023-07-21 18:44:14 CST; 24s ago
4. 允许自动启动
sudo systemctl enable imut_muye.service
5. 附录
常用的systemctl
命令:
启动sshd服务:systemctl start ssh.service
停止sshd服务:systemctl stop ssh.service
查看sshd服务状态:systemctl status ssh.service
重启sshd服务:systemctl restart ssh.service
设置开机自启动:systemctl enable ssh.service
禁止开机自启动:systemctl disable ssh.service
查看所有已经启动的服务:systemctl list-units --type=service
重新加载配置文件:systemctl daemon-reload
6. 参考
systemctl开机启动设置_每次开机都需要运行systemctl daeom-reload_枫叶的博客-优快云博客
Linux使用systemctl设置程序开机自启动_linux开机自启动命令_sayyy的博客-优快云博客
【linux】使用systemctl start xxx启动自己的程序|开机启动|守护进程_bandaoyu的博客-优快云博客