1.Unit
[Unit] Description=Explain The Service Documention= Before=a.service After=b.target Wants=c.service Requires=d.service
①Description
:对该服务的描述;
②Documention
:说明文档;
③Before
:在a.service服务启动之前,启动本服务;
④After
:在b.target服务组启动后,再启动本服务;
⑤Wants
:若依赖于c.service,及时被依赖服务启动失败或停止,本服务仍然运行;
⑥Requires
:强依赖于d.service,如果被依赖服务启动失败或停止,本服务也会停止。
启动顺序与依赖关系无关,被依赖的服务与本服务可以同时启动。
配置项可选可不选。
2.Service:
服务具体执行的方式
[Service] User=root EnvironmentFile=/path_to_file ExecStart=/your_script_dir/autoJupyterLab.sh $OPTIONS ExecStop= ExecReload= ExecStartPre= ExecStartPost= ExecStopPost= Type=simple KillMode=process Restart=on-failure RestartSec=42s
①EnvironmenFile
:服务的参数文件,形成$OPTIONS;
②ExecStart
, ExecStop
等:启动命令组,分别是服务启动时,停止时,重启时,启动前,启动后,停止后执行的命令;
③Type
:服务启动类型。默认simple
标识ExecStart为主进程,notify
类似于simple,启动结束后会发出通知信号。另外还厚forking
(以fork方式从父进程创建子进程,创建后父进程会立即退出),oneshot
(一次性进程,Systemd会等当前服务退出,再继续往下执行),dbus
(当前服务通过D-Bus启动),idle(若有其他任务执行完毕,当前服务才会运行)等类型;
④killMode
:服务停止类型,默认control-group停止时杀死所有子进程,process只杀主进程,none只停止服务,不杀进程;
⑤Restart
:服务重启类型,默认no不重启,on-success正常退出是重启,on-failure非正常退出时重启,还有always,on-abnormal,on-abort等;
⑥RestartSec
:自动重启当前服务间隔的秒数
⑦User
:执行ExecStart命令的用户
⑧ExecStartPre
:启动当前服务之前执行的命令
⑨ExecStartPost
:启动当前服务之后执行的命令
⑩ExecReload
:重启当前服务时执行的命令
⑪ExecStop
:停止当前服务时执行的命令
⑫ExecStopPost
:停止当其服务之后执行的命令
⑬WorkingDirectory
:工作目录
3.Install:
把服务放在哪个服务组
[Install] WantedBy=multi-user.target
WantedBy
:服务所在的服务组。
multi-user.target服务组中的服务,在sudo systemctl enable xxx.service
后,符号链接被放在/etc/systemd/system/multi-user.target.wants/
目录下。而系统默认启动的Target可由sudo systemctl get-defaults
得到:
# sudo systemctl get-defaults graphical.target
graphical.target又以multi-user.target为Requires和After关系,因此开机将自启动multi-user.target服务组。
此外,.target文件用于配置服务组,但只有Unit
字段。
完整配置距离:
[Unit] Description=Xray Service After=network.target nss-lookup.target [Service] User=root CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_BIND_SERVICE AmbientCapabilities=CAP_NET_ADMIN CAP_NET_BIND_SERVICE NoNewPrivileges=true ExecStart=/usr/local/bin/xray run -config /usr/local/etc/xray/config.json Restart=on-failure RestartPreventExitStatus=23 LimitNPROC=10000 LimitNOFILE=1000000 [Install] WantedBy=multi-user.target
加载配置文件:
systemctl daemon-reload
然后我们就可以使用systemctl 命令来启动、停止、重启服务了
设置服务开机自启动:(启动xray.service)
systemctl enable xray
注:.service文件需要放在/etc/systemd/system/路径下,比如:/etc/systemd/system/xray.service