目录
三个部分[Unit]、[Service]、[Install]配置说明
即看即用
- 在 /lib/systemd/system/ 下创建一个配置文件,比如:vsftpd.service/vsftpd.target
- 写配置文件
[Unit]
Description=vsftpd lightweight npm proxy registry
[Service]
Type=simple
Restart=on-failure
User=verdaccio
ExecStart=/usr/bin/vsftpd--config /etc/vsftpd/config.yaml
[Install]
WantedBy=multi-user.target
- 添加启动权限
# chmod +x vsftpd.service
启动服务:systemctl start vsftpd.service
关闭服务:systemctl stop vsftpd.service
重启服务:systemctl restart vsftpd.service
显示服务的状态:systemctl status vsftpd.service
在开机时启用服务:systemctl enable vsftpd.service
在开机时禁用服务:systemctl disable vsftpd.service
查看服务是否开机启动:systemctl is-enabled vsftpd.service
查看已启动的服务列表:systemctl list-unit-files|grep enabled
查看启动失败的服务列表:systemctl --failed
详细说明
systemctl 的用途
有时我们将自定义程序注册为systemd service 进程管理,交由系统管理,可以方便启动停止,亦可以实现服务异常退出重启,开机自启动。 减少自定义程序服务管理的时间消耗。
用法
1、新增配置文件a.service(添chmod +x a.service),按要求里面写start、stop等对应要执行的操作。
2、配置文件放到/usr/lib/systemd/system文件夹下
3、可以用systemctl管理执行了:systemctl stop xxx,systemctl start xxx
例子:以管理我们的程序verdaccio为例
第1步:创建一个systemd unit 配置文件,比如:verdaccio.service,一般放在 /lib/systemd/system/ 下
内容如下:
[Unit]
Description=Verdaccio lightweight npm proxy registry
[Service]
Type=simple
Restart=on-failure
User=verdaccio
ExecStart=/usr/bin/verdaccio --config /etc/verdaccio/config.yaml
[Install]
WantedBy=multi-user.target
第2步:添加tomcat.service文件的启动权限
# chmod +x tomcat.service
第3步:使用
开机自启动:
systemctl enable verdaccio.service
立即启动:
systemctl start verdaccio.service
重新启动:
systemctl restart verdaccio.service
运行状态:
systemctl status verdaccio.service
原文链接:https://www.icode9.com/content-3-952939.html
开机启动
systemctl脚本存放在:/usr/lib/systemd/,有系统(system)和用户(user)之
分,需要开机不登陆就能运行的程序,存在系统服务里,即:/usr/lib/systemd/system目录下.
每一个服务以.service结尾,一般会分为3部分:[Unit]、[Service]和[Install]
[Unit]
部分主要是对这个服务的说明,内容包括Description和After,Description 用于描述服务,
After用于描述服务类别
[Service]部分是服务的关键,是服务的一些具体运行参数的设置.
Type=forking是后台运行的形式,
User=users是设置服务运行的用户,
Group=users是设置服务运行的用户组,
PIDFile为存放PID的文件路径,
ExecStart为服务的具体运行命令
ExecReload为重启命令
ExecStop为停止命令,
PrivateTmp=True表示给服务分配独立的临时空间
[Service]
注意:[Service]部分的启动、重启、停止命令全部要求使用绝对路径,使用相对路径则会报
错!
[Install]
[Install]部分是服务安装的相关设置,可设置为多用户的
首先,使用systemctl start [ 服务名(也是文件名) ] 可测试服务是否可以成功运行,如果不能运行 则可以使用systemctl status [ 服务名(也是文件名) ]查看错误信息和其他服务信息,然后根据报
错进行修改,直到可以start,如果不放心还可以测试restart和stop命令。
接着,只要使用systemctl enable xxxxx就可以将所编写的服务添加至开机启动即可。
[Unit]
Description=springboot webapp
After=springboot-webapp.service
[Service]
WorkingDirectory=/home/hlooc/app/springboot-webapp
Type=forking
Environment="JAVA_HOME=/home/hlooc/app/jdk1.8.0_202"
Environment="PATH=/home/hlooc/app/jdk1.8.0_202/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/hlooc/.local/bin:/home/hlooc/bin"
Environment="CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar"
User=hlooc
Group=hlooc
PIDFile=/home/hlooc/app/springboot-webapp/upp.pid
ExecStart=/home/hlooc/app/springboot-webapp/start.sh
ExecStop=/home/hlooc/app/springboot-webapp/stop.sh
PrivateTmp=true
[Install]
WantedBy=multi-user.target
服务操作
添加可执行权限:
chmod 754 /usr/lib/systemd/system/springboot-webapp.service
设置为开机自启动:
systemctl enable springboot-webapp.service
常用指令(以springboot-webapp服务为例):
启动某服务
systemctl start springboot-webapp.service
停止某服务
systemctl stop springboot-webapp.service
重启某服务
service springboot-webapp restart
systemctl restart springboot-webapp.service
使某服务自动启动(如springboot-webapp服务)
systemctl enable springboot-webapp.service
使某服务不自动启动
systemctl disable springboot-webapp.service
检查服务状态
systemctl status springboot-webapp.service (服务详细信息)
systemctl is-active springboot-webapp.service(仅显示是否Active)
显示所有已启动的服务
systemctl list-units --type=service
-----------------------------------
Linux使用systemctl自启动服务
https://blog.51cto.com/u_15127670/4380043
设置程序开机启动、关闭、启用/禁用服务以vsftpd为例
启动服务:systemctl start vsftpd.service
关闭服务:systemctl stop vsftpd.service
重启服务:systemctl restart vsftpd.service
显示服务的状态:systemctl status vsftpd.service
在开机时启用服务:systemctl enable vsftpd.service
在开机时禁用服务:systemctl disable vsftpd.service
查看服务是否开机启动:systemctl is-enabled vsftpd.service
查看已启动的服务列表:systemctl list-unit-files|grep enabled
查看启动失败的服务列表:systemctl --failed
systemctl设置程序开机启动、关闭、启用/禁用服务以vsftpd为例
原文:https://www.cnblogs.com/Li-JT/p/14018659.html
.service 参数详解(更具体的可参考http://www.jinbuguo.com/systemd/systemd.service.html)
三个部分[Unit]、[Service]、[Install]配置说明
service文件中包含三个部分,分别是:[Unit]、[Service]、[Install]
[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 文件都会有的,指定服务启动的主要命令,在每个配置文件中只能使用一次。需要使用绝对路径 |
ExecStartPre | 指定在启动执行 ExecStart 的命令前的准备工作,可以有多个,所有命令会按照文件中书写的顺序依次被执行。 |
ExecStartPost | 指定在启动执行 ExecStart 的命令后的收尾工作,也可以有多个。 |
ExecStop | 停止服务所需要执行的主要命令。需要使用绝对路径 |
ExecStopPost | 指定在 ExecStop 命令执行后的收尾工作,也可以有多个。 |
ExecReload | 重新加载服务所需执行的主要命令。需要使用绝对路径 |
Restart | 这个值用于指定在什么情况下需要重启服务进程。常用的值有 no,on-success,on-failure,on-abnormal,on-abort 和 always。默认值为 no,即不会自动重启服务。这些不同的值分别表示了在哪些情况下,服务会被重新启动 |
RestartSec | 如果服务需要被重启,这个参数的值为服务被重启前的等待秒数。 |
Nice | 服务的进程优先级,值越小优先级越高,默认为0。-20为最高优先级,19为最低优先级。 |
WorkingDirectory | 指定服务的工作目录。 |
RootDirectory | 指定服务进程的根目录( / 目录),如果配置了这个参数后,服务将无法访问指定目录以外的任何文件。 |
User | 指定运行服务的用户,会影响服务对本地文件系统的访问权限。 |
Group | 指定运行服务的用户组,会影响服务对本地文件系统的访问权限。 |
PrivateTmp | 是否给服务分配独立的临时空间(true/false) |
[Install] 部分 | |
---|---|
WantedBy | 和前面的 Wants 作用相似,只是后面列出的不是服务所依赖的模块,而是依赖当前服务的模块。“WantedBy=multi-user.target” 表明当系统以多用户方式(默认的运行级别)启动时,这个服务需要被自动运行。当然还需要 systemctl enable 激活这个服务以后自动运行才会生效 |
RequiredBy | 和前面的 Requires 作用相似,同样后面列出的不是服务所依赖的模块,而是依赖当前服务的模块。 |
Also | 当这个服务被 enable/disable 时,将自动 enable/disable 后面列出的每个模块。 |
其中[Service] 部分Restart里面对应命令对应的情况如下图
作者:Hmcf
链接:https://www.jianshu.com/p/bc17d3162a48