centos7 systemctl配置开机自启动服务

2022-08-20 08:59:10 浏览数 (2)

centos7使用systemctl替代原来/etc/init.d,按官方的说法是提高系统服务的运行效率、服务配置更加简单易用,对于一些自定义的服务来配置开机自启动,是真的香!

概念理解

  • 它是服务管理工具,融合之前service和chkconfig功能于一体
  • 有系统(system)和用户(user)之分,可直接放/lib/systemd/system目录下
  • 以.service结尾,一般分为3部分:Unit、Service、Install

参数说明

Unit:主要对服务的说明

  • Description:用于描述服务而已
  • After:用于描述服务类别

Service:关键部分,服务运行的具体配置

参数太多,下面只列出几个常用的关键参数,其它根据需要自行百度: 常用Type的几种类型:

Type=simple

默认值,表示 ExecStart= 所设定的进程就是该服务的主进程。

Type=forking

后台运行的形式。以 fork 方式从父进程创建子进程,创建后父进程会立即退出,配合PIDFile=使用,以帮助 systemd 准确定位该服务的主进程。

Type=notify

与simple类似,但约定服务会在就绪后向systemd发送一个信号,需要配合NotifyAccess来让Systemd接收消息。

  • User:是设置服务运行的用户
  • Group:是设置服务运行的用户组
  • PIDFile:为存放PID的文件路径
  • ExecStart:为服务的具体运行命令
  • ExecReload:为重启命令
  • ExecStop:为停止命令
  • Environment:指定环境变量

注意:所有命令要求使用绝对路径,使用相对路径会报错。

Install:服务安装的相关设置,用来定义启动以及是否开机启动

  • WantedBy:它的值是一个或多个 Target,当前 Unit 激活时(enable)符号链接会放入/etc/systemd/system目录下面以 Target 名 .wants后缀构成的子目录中
  • Alias:当前 Unit 可用于启动的别名

使用案例

  • 以uwsgi配置为例:
代码语言:javascript复制
## cat /lib/systemd/system/uwsgi.service 
[Unit]
Description=uWSGI Emperor
After=syslog.target

[Service]
#PIDFile=/run/uwsgi.pid
ExecStart=/usr/local/bin/uwsgi --ini /home/dengzhixu/crawl_data/uwsgi.ini
Restart=always
KillSignal=SIGQUIT
Type=notify
#Type=forking
StandardError=syslog
NotifyAccess=all

[Install]
WantedBy=multi-user.target
  • 添加可执行权限:
代码语言:javascript复制
chmod  x /lib/systemd/system/uwsgi.service

常用命令

代码语言:javascript复制
## 启动服务
systemctl start uwsgi.service
  
## 停止服务
systemctl stop uwsgi.service
  
## 重启服务
service uwsgi restart
systemctl restart uwsgi.service
  
## 服务自启动
systemctl enable uwsgi.service
  
## 服务关闭自动启动
systemctl disable uwsgi.service
  
## 检查服务状态
systemctl status uwsgi.service
  
## 显示所有已启动的服务
systemctl list-units  --type=service

其它需要配置的服务,可自行参考画葫芦。 ----by 钢铁 648403020@qq.com 09.10.2020

0 人点赞