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脚本罢了。