3、Centos7通过systemctl enble配置服务自启动
在Centos7后,更推荐通过systemctl来控制服务。
任务 | 旧指令 | 新指令 |
使某服务自动启动 | Chkconfig --level 3 httpd on | systemctl enable httpd.service |
使某服务不自动启动 | chkconfig --level 3 httpd off | systemctl disable httpd.service |
检查服务状态 | service httpd status | systemctl status httpd.service (服务详细信息) systemctl is-active httpd.service(仅显示是否Active) |
显示所有已启动的服务 | chkconfig --list | systemctl list-unit-files systemctl list-units --type=service |
启动某服务 | service httpd start | systemctl start httpd.service |
停止某服务 | service httpd stop | systemctl stop httpd.service |
重启某服务 | service httpd restart | systemctl restart httpd.service |
1、systemctl服务的目录介绍
知道服务的管理是通过 systemd,而 systemd 的配置文件大部分放置于 /usr/lib/systemd/目录内。但是 Red Hat 官方文件指出, 该目录的文件主要是原本软件所提供的设置,建议不要修改!而要修改的位置应该放置于 /etc/systemd/system/目录内。
详情查看:https://wizardforcel.gitbooks.io/vbird-linux-basic-4e/content/150.html
Centos 系统服务脚本目录:
/usr/lib/systemd/
有系统(system)和用户(user)之分,如需要开机没有登陆情况下就能运行的程序,存在系统服务(system)里,即:
/usr/lib/systemd/system/
反之,用户登录后才能运行的程序,存在用户(user)里,服务以.service结尾。
/usr/lib/systemd/user/
2、建立kibana开机服务
1)、建立kibana服务文件
cd /etc/systemd/system/ vim kibana.service
脚本内容:
[Unit] Description=nginx After=network.target [Service] Type=forking User=nginx Group=nginx ExecStart=/etc/init.d/nginx start ExecReload=/etc/init.d/nginx restart ExecStop=/etc/init.d/nginx stop PrivateTmp=true [Install] WantedBy=multi-user.target
注意⚠️:
这里ExecStart、ExecReload、ExecStop的命令还是借助了上文在/etc/init.d目录下配置kibana脚本来实现。
[Service]的启动、重启、停止命令全部要求使用绝对路径
[Install]服务安装的相关设置,可设置为多用户
参数说明:
Description:描述服务
After:描述服务类别
[Service]服务运行参数的设置
Type=forking是后台运行的形式
User 服务启动用户
Group 服务启动用户组
ExecStart 为服务的具体运行命令
ExecReload 为重启命令
ExecStop 为停止命令
PrivateTmp=True表示给服务分配独立的临时空间
2)、赋予执行权限
chmod 754 kibana.service
依照上面的表格,权限组合就是对应权限值求和,如下:
7 = 4 + 2 + 1 读写运行权限
5 = 4 + 1 读和运行权限
4 = 4 只读权限.
这句命令的意思是将filename文件的读写运行权限赋予文件所有者,把读和运行的权限赋予群组用户,把读的权限赋予其他用户。
3)、服务的启动、停止、开机启动
查看服务状态
//重新加载某个服务的配置文件,如果新安装了一个服务,归属于 systemctl 管理,要是新服务的服务程序配置文件生效,需重新加载 systemctl daemon-reload //查看服务状态 systemctl status kibana.service
启动服务
其中,disabled说明服务还没有开启开机自启动。
开启服务开机启动
systemctl enable kibana.service
服务状态说明:
systemctl status 服务名称
状态 | 说明 |
loaded | 系统服务已经初始化完成,加载过配置 |
active(running) | 正有一个或多个程序正在系统中执行, vsftpd就是这种模式 |
atcive(exited) | 僅執行一次就正常結束的服務, 目前並沒有任何程序在系統中執行 |
atcive(waiting) | 正在執行當中,不過還再等待其他的事件才能继续处理 |
inactive | 服务关闭 |
enbaled | 服务开机启动 |
disabled | 服务开机不自启 |
static | 服务开机启动项不可被管理 |
failed | 服务开机启动项不可被管理 |
常用服务文件
1.nginx.service
[Unit] Description=nginx - high performance web server After=network.target remote-fs.target nss-lookup.target [Service] Type=forking ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf ExecReload=/usr/local/nginx/sbin/nginx -s reload ExecStop=/usr/local/nginx/sbin/nginx -s stop [Install] WantedBy=multi-user.target
2.mysql.service
[Unit] Description=mysql After=network.target remote-fs.target nss-lookup.target [Service] Type=forking ExecStart=/usr/local/mysql/support-files/mysql.server start #ExecReload=/usr/local/mysql/support-files/mysql.server restart #ExecStop=/usr/local/mysql/support-files/mysql.server stop #PrivateTmp=true [Install] WantedBy=multi-user.target
4.redis.service
[Unit] Description=Redis After=network.target remote-fs.target nss-lookup.target [Service] Type=forking ExecStart=/usr/local/bin/redis-server /etc/redis.conf ExecStop=kill -INT `cat /tmp/redis.pid` User=www Group=www [Install] WantedBy=multi-user.target
5.supervisord.service
[Unit] Description=Process Monitoring and Control Daemon After=rc-local.service [Service] Type=forking ExecStart=/usr/bin/supervisord -c /etc/supervisord.conf SysVStartPriority=99 [Install] WantedBy=multi-user.target
总结
本文主要总结了Centos上配置开机自启动的3种方式
方式一:直接在/etc/rc.d/rc.local中添加服务启动命令
方式二:通过chkconfig配置服务自启动
方式三:Centos7通过systemctl enble配置服务开机自启动