在RHEL6系统中是利用service和chkconfig来管理服务的,而在RHEL7中则是用systemctl来管理服务,RHEL7利用systemctl管理服务大部分都是调用的以前RHEL6中的启动脚本,感觉就是把RHLE6里的东西封装了一下,没多大实质的变化,反而还让老玩家有点反感,但不可否认的是RHEL7比RHEL6开机速度快,启动机制上还是有区别的,RHEL6:UPstart (init) RHLE7:Systemd ,但今天不谈这个,只谈chkconfig和service。
chkconfig 设置是当前不生效,linux重启后才生效,
service 设置是即时生效,linux关机重启后设置失效
例如:
chkconfig iptables on #设置iptables开机自启动,重启生效
chkconfig iptables off #设置iptables开机不自启,重启生效
例如:
service iptables start #立即开启 iptables ,重启失效
service iptables stop #立即开启 iptables ,重启失效
开机启动哪些服务是先根据/etc/inttabl设置的开机默认级别来判断的,比如默认级别是3,则会调用rc3.d下的文件,如何调用的我在后面讲,不说深了,免得理解起来麻烦。
service启动服务流程:
例如:service httpd start
service命令是直接去调用/etc/rc.d/init/下httpd启动脚本(shell脚本),脚本里封装了很多函数比如start、stop等 ,这些函数是去调用真正的服务管理程序的,那些程序是编译好的二进制程序。
chkconfig设置开机自启动
例如: chkconfig httpd on #级别3运行,其他级别一样·
chkconfig调用的是/etc/rc.d/rc3.d/下的文件,rc3.d/下的文件就很有意思了 ,比如文件 s01httpd ,s01意思是启动级别为1, s01httpd 意思就是第一个启动httpd服务, s01httpd是个软链接文件链接到/etc/rc.d/init/httpd服务启动脚本,
chkconfig开机时这样做的:根据/rc3.d/下的文件名来启动服务,比如发现有s01httpd文件,它就调用service httpd start 来启动服务,关键是文件名前面的S ,它代表启动的意思,如果将文件名前S改成K,那么这个服务开机时是不会启动的。
联系客服