centos7 systemctl配置开机自启动服务

  • A+
所属分类:linux技术
摘要

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

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配置为例:
## 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 
  • 添加可执行权限:
chmod +x /lib/systemd/system/uwsgi.service 

常用命令

## 启动服务 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 钢铁 [email protected] 09.10.2020