1.编撰服务
cd/usr/lib/systemd/system
[Unit]
Description=描述
After=network.target
[Service]
Type=forking
ExecStart=绝对路径/xxx.sh
ExecReload=绝对路径/xxx.sh
ExecStop=绝对路径/xxx.sh
PrivateTmp=true
[Install]
WantedBy=multi-user.target
2.参数说明参数名称参数说明
[Unit]
Description
一段描述这个Unit文件的文字,一般只是简略的一句话。
Documentation
指定服务的文档,可以是一个或多个文档的URL路径。
Requires
依赖的其他Unit列表,列在其中的Unit模块会在这个服务启动的同时被启动,但是假如其中有任意一个服务启动失败,这个服务也会被中止
After
与Requires相像,但会在前面列举的所有模块全部启动完成之后,就会启动当前的服务。
Before
与After相反,在启动指定的任一个模块之前,就会首先确保当前服务早已运行。
Wants
与Requires相像,但只是在被配置的这个Unit启动时,触发启动列举的每位Unit模块,而不去考虑这种模块启动是否成功。
Conflicts
与这个模块有冲突的模块,假如列举模块中有早已在运行的,这个服务就不能启动,反之亦然。
OnFailure
当这个模块启动失败时,就手动启动列举的每位模块。
[Service]
Type
服务的类型,常用的有simple(默认类型)和forking。默认的simple类型可以适应于绝大多数的场景,因而通常可以忽视这个参数的配置。而假如服务程序启动后会通过fork系统调用创建子进程,之后关掉应用程序本身进程的情况,则应当将Type的值设置为forking,否则systemd将不会跟踪子进程的行为,而觉得服务早已退出。
Environment
为服务添加环境变量
EnvironmentFile
指定加载一个包含服务所需的环境变量列表的文件,文件中的每一行都是一个环境变量的定义。
ExecStart
这个参数是几乎每位.service文件就会有的linux自动启动服务虚拟主机 linux,指定服务启动的主要命令,在每位配置文件中只能使用一次。(须要使用绝对路径)
ExecStartPre
指定在启动执行ExecStart的命令前的打算工作,可以有多个,所有命令会根据文件中书写的次序依次被执行。
ExecStartPost
指定在启动执行ExecStart的命令后的扫尾工作,也可以有多个。
ExecStop
停止服务所须要执行的主要命令。(须要使用绝对路径)
ExecStopPost
指定在ExecStop命令执行后的扫尾工作,也可以有多个。
ExecReload
重新加载服务所需执行的主要命令。(须要使用绝对路径)
Restart
这个值用于指定在哪些情况下须要重启服务进程。常用的值有no,on-success,on-failure,on-abnormal,on-abort和always。默认值为no,即不会手动重启服务。这种不同的值分别表示了在什么情况下,服务会被重新启动
RestartSec
假如服务须要被重启,这个参数的值为服务被重启前的等待秒数。
Nice
服务的进程优先级,值越小优先级越高,默认为0。-20为最高优先级linux自动启动服务,19为最低优先级。
WorkingDirectory
指定服务的工作目录。
RootDirectory
指定服务进程的根目录(/目录),倘若配置了这个参数后,服务将难以访问指定目录以外的任何文件。
User
指定运行服务的用户,会影响服务对本地文件系统的访问权限。
Group
指定运行服务的用户组,会影响服务对本地文件系统的访问权限。
PrivateTmp
是否给服务分配独立的临时空间(true/false)
[Install]
WantedBy
和上面的Wants作用相像,只是前面列举的不是服务所依赖的模块,而是依赖当前服务的模块。“WantedBy=multi-user.target”表明当系统以多用户方法(默认的运行级别)启动时,这个服务须要被手动运行。其实还须要systemctlenable激活这个服务之后手动运行就会生效。
RequiredBy
和上面的Requires作用相像puppy linux,同样前面列举的不是服务所依赖的模块,而是依赖当前服务的模块。
Also
当这个服务被enable/disable时,将手动enable/disable前面列举的每位模块。