关于systemctl及systemd service的一些使用经验

之前一直用的是centos6.6或redhat5.x系列的,最新的一个工作里面的开发与运行环境使用的是centos7.0,发现对于开机自启和服务管理这块的变化还是蛮大的,
之前用的是rc.d、service以及chkconfig,到了centos7.0使用的是systemctl,这里主要举几个常用的例子


1、图形界面及命令行界面的切换
设置开机默认界面为图形界面systemctl set-default graphical.target
设置开机默认界面为命令行界面systemctl set-default multi-user.target
开机重启即可生效,当然也可不重启切换
切换为图形界面  systemctl start graphical.target
切换为命令行界面systemctl start multi-user.target


2、对于服务的控制
以mysqld的为例
查看状态systemctl status mysqld(缩写为状态,完整的为systemctl status mysqld.service)
当然还有start,stop,enable,disable,restart等操作(reload操作某些服务支持某些不支持)


3、编写service文件把业务进程加入到systemctl的控制之内
某些业务的需要,多多少少会有一些业务需要开机自启动,并且down掉需要自动起来,这个时候就可以自己编写一个service配置文件,这里举两个例子


1、mycat.service
mycat是一个不错的数据库中间件,有需要了解的可以自己去百度一下,之前用的版本里面没有携带开机自启的配置(最新的版本不知道有没有),于是自己写了一个mycat.service示例如下:
[Unit]
Description=mycat
After=network.target
After=syslog.target
After=mysqld.service


[Service]
Type=forking
PIDFile=/opt/servers/mycat/logs/mycat.pid
ExecStart=/opt/servers/mycat/bin/mycat start
ExecStop=/opt/servers/mycat/bin/mycat stop
Restart=always
[Install]
WantedBy=multi-user.target graphical.target




2、mytest.service
mytest是一个消息队列的读取进程,使用的是php程序写的,需要以nginx权限执行


[Unit]
Description=mytest
After=network.target
After=syslog.target
After=activemq.service


[Service]
User=nginx
Group=nginx
Type=simple
ExecStart=/opt/myproject/phpcmd/mytest
Restart=always
[Install]
WantedBy=multi-user.target graphical.target


稍微的分析一下这2个配置文件的含义
Unit 是对此服务单元的一些基本配置,比如描述、与其他服务之间的优先级等的配置
Service 指的是此服务的进程相关的,比如进程的启动方式,进程的守护(比如进程挂掉后需要怎么办,这里always指的是不管什么样都重启),进程状态的守护(针对进程假死无反应等情况)
Install 在哪种模式下启动(比如命令行模式启动,图形界面时不启动)


Description这个就不用说了看单词已经非常明白了
After指的是在某个服务之后启动,这里有几个After就是此服务在After列出的几个服务之后启动,这个需要根据业务的需要,比如上述mycat是一个数据库中间件,所以理论上应该上此系统上的mysqld服务之后启动(当然一般实际生产环境中mysqld和mycat是分开部署,这里只是一个范例以便于理解,mytest和activemq也是一样的道理)
c
User和Group这个看含义就知道,使用哪个用户和用户组启动
Type这个有好多个选项,这里只描述forking和simple,simple其实也是默认的配置,这个的含义就是ExecStart里面执行的这条命令的进程就是主进程了,这个有点饶,不过跟forking一比就明白了,如果配置forking的话说明ExecStart这条命令会生成子进程,并且ExecStart将会退出,子进程会成为此程序的守护主进程,比如像mycat、activemq之类的一般会使用一个shell脚本作为启动程序,再由shell脚本里面去使用复杂的参数调用真正的程序,也就是说ExecStart配置的会是这个shell脚本,这种情况的程序如果把Type配置为simple或不配置并且Restart配置为always,那么systemctl会不断的重启此程序


此文描述的只是个人的一点使用经验,描述起来难免会有错漏的地方,关于systemd相关service的配置可以参考文档http://www.freedesktop.org/software/systemd/man/systemd.service.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值