Pages

Sunday, 19 January 2020

service


service最初是用于SysV启动方式中,用于启动、停止、重启服务,具体功能与被启动的服务有关,被启动的服务存放在/etc/init.d/下(实际上是/etc/rc.d/init.d,因为/etc/init.d/是软链到/etc/rc.d/init.d/),所以其实被启动的服务是一个“启动脚本”,在里面有shell自己写了start函数,stop函数,然后service start/stop就是调用脚本里的start和stop函数(你可以自己找个shell看看,比如vim /etc/init.d/network)。
但是,假如/etc/init.d/下的启动脚本没有写start函数,service一样可以启动它,理由很简单,start就是把那个启动脚本里的shell都运行一遍嘛,你自己用./的方式也能运行(而且service也是用这个原理)。
由于CentOS系统从CentOS7开始,用systemd代替了SysV启动方式,这时service为了兼容CentOS7,做了一层判断,如果是CentOS7,那么会自动调用systemctl来操作,否则还是去/etc/init.d/找到对应的脚本来执行。
使用which service命令可以找到service命令在哪里,然后你可以直接用cat打开它,你会发现,service命令只不过是个shell脚本罢了。