终端操作:
▪ 开机启动:$ sudo systemctl enable start_run
▪ 启动服务:$ sudo systemctl start start_run
▪ 停止服务:$ sudo systemctl stop start_run.service(没必要使用喔咕)
▪ 重启服务:$ sudo systemctl restart start_run.service
配置文件:
[Unit] 区块:启动顺序与依赖关系
Description:相当于readme.md
Documentation:后加文档位置
[Service] 区块:启动行为
EnvironmentFile:指定当前服务的环境参数文件(eg.Environment = XAUTHORITY=/home/ubuntu/.Xauthority)
(the following are the most important)
ExecStart:定义启动进程时执行的命令。
ExecReload:重启服务时执行的命令
ExecStop:停止服务时执行的命令
ExecStartPre:启动服务之前执行的命令
Type:启动类型
(simple(默认值):ExecStart字段启动的进程为主进程)
(idle:类似于simple,但是要等到其他任务都执行完,才会启动该服务。一种使用场合是为让该服务的输出,不与其他服务的输出相混合)
Restart:
on-failure:非正常退出时(退出状态码非0),包括被信号终止和超时,才会重启
always:不管是什么退出原因,总是重启
on-abort:只有在收到没有捕捉到的信号终止时,才会重启
on-watchdog:超时退出,才会重启
[Install] 区块:定义如何安装这个配置文件
WantedBy字段:表示该服务所在的 Target
multi-user.target:多用户命令行状态
graphical.target:图形用户状态
**
实现实例:
**
新建service文件:
cd /usr/lib/systemd/system
gedit start_run.service #新建service文件
在新建的service文件中键入:
[Unit]
Description=start_run Programme
[Service]
ExecStart=-./rm2020
ExecReload=-./rm2020
Type=simple
Restart=on-failure
RestartSec=42ms
[Install]
WantedBy=multi-user.target
Description:描述,相当于readme.md,内容任意
ExecStart:启动服务时执行的命令
ExecReload:重启服务时执行的命令
Type:启动类型,simple(默认值):ExecStart字段启动的进程为主进程
Restart:on-failure:非正常退出时(退出状态码非0),包括被信号终止和超时,才会重启服务
RestartSec:重启服务前的等待时间
WantedBy:表示该服务所在的 Target,有以下两种
multi-user.target:多用户命令行状态,不需要imshow或者namedWindow等打开图像界面,同时支持多个用户同时登陆并执行进程的状态;
graphical.target:图形用户状态,需要imshow或者namedWindow等打开图像界面的状态
注意:[Service]中ExecStart=-./rm2020里的‘-’表示即使./rm2020不存在也不抛出错误
设置开机启动并启动服务(下面的start_run可以换成你自己的服务名称):
sudo systemctl enable start_run #设置开机启动
sudo systemctl start start_run #启动服务