2018.07.21 16:39* 字数 1063 阅读 291评论 0喜欢 0
CentOS 7继承了RHEL 7的新的特性,如强大的systemd, 而systemd的使用也使得以往系统服务的/etc/init.d的启动脚本的方式就此改变, 也大幅提高了系统服务的运行效率。但服务的配置和以往也发生了极大的不同,同时变的简单而易用了许多。
CentOS 7的服务systemctl脚本存放在:/usr/lib/systemd/,有系统 system 和用户 user 之分, 即:/usr/lib/systemd/system 和 /usr/lib/systemd/user
这里先说明一下unit的文件位置,一般主要有三个目录:
/lib/systemd/system
/run/systemd/system
/etc/systemd/system
这三个目录的配置文件优先级依次从低到高,如果同一选项三个地方都配置了,优先级高的会覆盖优先级低的。 系统安装时,默认会将unit文件放在/lib/systemd/system目录。如果想要修改系统默认的配置,比如nginx.service,一般有两种方法:
1、在/etc/systemd/system目录下创建nginx.service文件,里面写上我们自己的配置。 在/etc/systemd/system下面创建nginx.service.d目录,在这个目录里面新建任何以.conf结尾的文件,然后写入自己的配置。推荐这种做法。
2、/run/systemd/system这个目录一般是进程在运行时动态创建unit文件的目录,一般很少修改,除非是修改程序运行时的一些参数时,即Session级别的,才在这里做修改。
每一个服务以.service结尾,一般会分为3部分:[Unit]、[Service]和[Install],nginx为例,具体内容如下:
[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
下面分别解释下着三部分的含义
PIDFile : pid文件路径 ExecStartPre :启动前要做什么,上文中是测试配置文件 -t ExecStart:启动 ExecReload:重载 ExecStop:停止 PrivateTmp:True表示给服务分配独立的临时空间
systemctl enable nginx.service
就会在 /etc/systemd/system/multi-user.target.wants/ 目录下新建一个 /usr/lib/systemd/system/nginx.service 文件的链接。
下面是几个最常用的service操作:
自启动
systemctl enable nginx.service
禁止自启动
systemctl disable nginx.service
启动服务
systemctl start nginx.service
停止服务
systemctl stop nginx.service
重启服务
systemctl restart nginx.service
查看Unit定义文件
systemctl cat nginx.service
编辑Unit定义文件
systemctl edit nginx.service
重新加载Unit定义文件
systemctl reload nginx.service
列出已启动的所有unit,就是已经被加载到内存中
systemctl list-units
列出系统已经安装的所有unit,包括那些没有被加载到内存中的unit
systemctl list-unit-files
查看服务的日志
journalctl -u nginx.service # 还可以配合`-b`一起使用,只查看自本次系统启动以来的日志
查看所有target下的unit
systemctl list-unit-files --type=target
查看默认target,即默认的运行级别。对应于旧的`runlevel`命令
systemctl get-default
设置默认的target
systemctl set-default multi-user.target
查看某一target下的unit
systemctl list-dependencies multi-user.target
切换target,不属于新target的unit都会被停止
systemctl isolate multi-user.target
关机
systemctl poweroff
重启
systemctl reboot
进入rescue模式
systemctl rescue
https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/System_Administrators_Guide/sect-Managing_Services_with_systemd-Unit_Files.html https://www.nginx.com/resources/wiki/start/topics/examples/systemd/ http://time-track.cn/systemd-introduction.html
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有