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
常用命令
代码语言: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