一、systemctl是什么??

 systemctl是RHEL7的服务管理工具中主要的工具,它融合之前service和chkconfig的功能于一体。可以使用它永久性或只在当前会话中启用/禁用服务。而CentOS 7继承了RHEL 7的这一新特性,从CentOS 7.x开始,CentOS开始使用systemd服务来代替daemon,原来管理系统启动和管理系统服务的相关命令全部由systemctl命令来代替。

  systemctl的使用使得以往系统服务的/etc/init.d的启动脚本的方式就此改变,也大幅度提高了系统服务的运行效率,变得简单而易用了许多。

二、systemctl的使用方法

启动一个服务  systemctl start nginx.service

关闭一个服务  systemctl stop nginx.service

重启一个服务  systemctl restart nginx.service

显示一个服务的状态     systemctl status nginx.service

在开机时启动一个服务  systemctl enable nginx.service

在开机时禁用一个服务  systemctl disable nginx.service

查看服务是否开机启动  systemctl is_enable nginx.service

要使用systemctl来进行统一管理的话,先做一些准备工作:

CentOS7的服务systemctl脚本存放在:/usr/lib/systemd/,有系统(system)和用户(user)之分,像需要开机不登陆就能运行的程序,最好还是存在系统服务里面,即:/usr/lib/systemd/system目录下,每一个服务以.service结尾,一般会分为3部分:[Unit][Service][Install]

Nginx之nginx.service文件[自定义]

 1 [Unit]
 2 Description=nginx
 3 After=network.target
 4 [Service]
 5 Type=forking
 6 PIDFile=/usr/local/nginx/logs/nginx.pid
 7 ExecStart=/usr/local/nginx/sbin/nginx
 8 ExecReload=/usr/local/nginx/sbin/nginx -s reload
 9 ExecStop=/usr/local/nginx/sbin/nginx -s stop
10 PrivateTmp=true
11 [Install]
12 WantedBy=multi-user.target

php之php.service文件[自定义]

 1 [Unit]
 2 Description=php
 3 After=network.target
 4 [Service]
 5 Type=forking
 6 ExecStart=/usr/local/php/sbin/php-fpm
 7 ExecStop=/bin/pkill -9 php-fpm
 8 PrivateTmp=true
 9 [Install]
10 WantedBy=multi-user.target

MySQL之mysql.service文件[自定义]

 1 [Unit]
 2 Description=MySQL Community Server
 3 After=network.target
 4 After=syslog.target
 5 [Install]
 6 WantedBy=multi-user.target
 7 Alias=mysql.service
 8 [Service]
 9 User=mysql
10 Group=mysql
11 #systemctl status就是根据pid来判断服务的运行状态的
12 PIDFile=/var/run/mysqld/mysqld.pid
13 # 以root权限来启动程序
14 PermissionsStartOnly=true
15 # 设置程序启动前的必要操作。例如初始化相关目录等等
16 ExecStartPre=/usr/bin/mysql-systemd-start pre
17 # 启动服务
18 ExecStart=/usr/bin/mysqld_safe
19 # Don't signal startup success before a ping works
20 ExecStartPost=/usr/bin/mysql-systemd-start post
21 # Give up if ping don't get an answer
22 TimeoutSec=600
23 #Restart配置可以在进程被kill掉之后,让systemctl产生新的进程,避免服务挂掉
24 Restart=always
25 PrivateTmp=false