在CentOS7(RHEL7)之后,服务从原来的由systemV管理机制升级到了systemd。网络
在sysV中,全部的服务脚本都放在/etc/rc.d/init.d/中,可使用/etc/rc.d/init.d/daemon [start|stop|restart|reload|status]方式来管理服务,默认的运行级别在/etc/inittab文件中定义,当系统以某个运行级别启动时,会运行/etc/rc.d/rcN.d/(其中N范围为0~6)目录中全部的脚本,而这些脚本的命名都是Knnxxxxx或Snnxxxxx,其中S表示系统启动时调用,K表示系统终止时调用,nn是00~99的数字,数字的大小决定了脚本运行的顺序,最后的xxxxx为脚本的名称(长度任意),这些目录里的文件都是指向init.d目录中脚本的软链接,由于各个运行级别的所需的服务可能存在交集,因此这样能节省硬盘使用空间。socket
在sysV中,服务被分红两大类,一类是可独立运行的服务,另外一类是受xinetd管理的服务,而xinetd自己是一个独立运行的服务,用来负责管理一些不经常使用的服务,当这些服务须要被使用时,由xinetd来唤醒它们,当服务使用完后,这些服务会被结束以减小系统资源的占用。函数
在sysV中,定义了6个运行级别,分别是:hibernate
runlevel0 = 关机rest
runlevel1 = 单用户模式,仅rootblog
runlevel2 = 带网络的单用户模式内存
runlevel3 = 多用户模式,字符界面,标准模式资源
runlevel4 = 保留get
runlevel5 = 多用户模式,图形界面,X11(X Window)it
runlevel6 = 重启
上文中提到的文件和目录的截图:(RHEL7)
/etc/inittab:
/etc/rc.d/:(rc.local是一个脚本文件,里面定义了用户自定义启动的程序)
/etc/rc.d/rc.local:
/etc/rc.d/init.d/:(文件functions定义了不少函数,供给本目录里的脚本调用,而文件README是一个说明文件,主要说明“如今的服务由systemd管理,再也不推荐使用这些脚本”,剩下的文件都是对应服务的脚本文件)
/etc/rc.d/rc3.d/:
在systemd中,全部的服务脚本都称为unit,主要分红6类:.service, .socket, .target, .path, snapshot, .timer,它们都存放在/usr/lib/systemd/system/目录中。
在systemd中,统一采用systemctl命令来管理全部的服务,主要用法:
systemctl [start|stop|restart|reload|status|is-active|is-enable|enable|disable|mask|umask] 服务名.类型 (当服务为servce类型时能够省略类型,如atd.service能够简写为atd,其余的类型不能省略,如talnet.socket)
systemclt set-default|get-default|isolate xxxxx.target 设置默认运行级别|获取当前的默认运行级别|不重启切换当前环境 (什么是环境呢,target类型的服务都为环境,当运行或切换(须要使用isolate而不能使用start)一个环境时每每会伴随着启动不少其余的服务用以支持这个环境,最多见的环境就是字符界面和图形界面,好比想从如今的字符界面临时切换到图形界面,使用systemctl isolate graphical.tatget)
在systemd中,运行级别由/etc/systemd/system/default.target定义,这个文件自己是一个软链接,若是它指向graphical.targer那么默认的运行级别就是图形界面。
在systemd中,为了向下兼容也提供了一些target来映射sysV中的运行级别,见下图,
会发现,有一些以.wants结尾的目录,上文已经说过了环境的变化每每会伴随着不少其余服务,而wants目录就是当target类型的服务切换以后自动运行的其余服务。
利用systemctl查看服务:
systemctl 列出全部已启动的服务
systemctl list-units 同上
systemctl list-units --all 列出全部服务,包括没启动的
systemctl list-unit-files 列出/usr/lib/systemd/system/目录内全部的服务文件
systemctl list-units --type=service --all 列出全部service类型的服务,其中--type的取值还能够是target,socket等等
systemctl list-units --type=service --all|grep -i cpu 列出全部和cpu相关的服务
利用systemctl快速改变环境:
systemctl poweroff 关机(至关于systemctl isolate poweroff.target)
systemctl reboot 重启
systemctl suspend 暂停/睡眠,将系统数据写入内存,同时将大部分硬件关闭,等待唤醒(至关于Windows下的睡眠)
systemctl hibernate 休眠,将系统数据写入硬盘,而后关机
systemctl rescue 进入救援模式
systemctl emergency 进入紧急模式,比救援模式更强更完全