Centos7 systemctl添加自定义系统开机服务
Centos7的服务systemctl脚本存放在: /usr/lib/systemd/
有系统(system)和用户(user)之分,需要开机不登陆就能运行的程序,存下系统服务里,即:/usr/lib/systemd/system目录下。
Centos7的每一个服务以.service结尾,一般会分为3部分:【Unit】【Service】 【Install】
【Unit】部分主要是对这个服务的说明。
- Description 用于描述服务
- After 用于描述服务类别
【Service】部分是服务的关键,是服务的一些具体运行参数的设置。
- Type=forking 是后台运行的形式
- User=users 是设置服务运行的用户
- Group=users 是设置服务运行的用户组
- PIDFile为存放PID的文件路径
- ExecStart为服务的具体运行命令
- ExecReload为重启命令
- ExecStop为停止命令
- PrivateTmp=True 表示给服务分配独立的临时空间
*注意: 【Service】部分的启动,重启,停止命令全部要求使用绝对路径。使用相对路径则会报错的。
【Install】部分是服务安装的相关设置,客设置为多用户的
- 使用systemctl start [ 服务名(也是文件名) ] 可测试服务是否可以成功运行,
- 如果不能运行则可以使用systemctl status [ 服务名(也是文件名) ]查看错误信息和其他服务信息,然后根据报错进行修改,直到可以start。
- 如果不放心还可以测试restart和stop命令。
- 接着,只要使用systemctl enable xxxxx就可以将所编写的服务添加至开机启动即可。
实例:服务用于开机运行frpc项目
#vim /usr/lib/systemd/system/frpc.service
[Unit] Description=frps daemon After=syslog.target network.target Wants=network.target [Service] Type=simple PIDFile= ExecStart=/usr/local/frpc/frpc -c /usr/local/frpc/frpc.ini ExecStop= ExecReload= Restart= always RestartSec=1min PrivateTmp=True [Install] WantedBy=multi-user.target
添加可执行权限:
chmod 754 /usr/lib/systemd/system/frpc.service
设置为开机自启动:
#systemctl enable tomcat.service
常用指令(以frpc服务为例):
启动某服务 systemctl start frpc.service 停止某服务 systemctl stop frpc.service 重启某服务 service frpc restart systemctl restart frpc.service 使某服务自动启动(如frpc服务) systemctl enable frpc.service 使某服务不自动启动 systemctl disable frpc.service 检查服务状态 systemctl status frpc.service (服务详细信息) systemctl is-active frpc.service(仅显示是否Active) 显示所有已启动的服务 systemctl list-units --type=service