1.7 Systemd初始化进程
Linux操作系统开机过程首先从BIOS开始→进入"Boot Loader"→加载系统内核→内核进行初始化→启动初始化进程。初始化进程作为系统第一个进程,它需要完成Linux系统中相关的初始化工作,为用户提供合适的工作环境。红帽RHEL7系统已经替换掉了大家往常熟悉的初始化进程System V init,正式采用全新的systemd初始化进程服务,因此如果您之前学习的是红帽RHEL5或红帽RHEL6系统,那么着实会感觉很不习惯。systemd初始化进程服务采用了并发启动机制,开机速度得到了不小的提升,虽然systemd初始化进程服务已经表现出了很多新特性和不错优势,但目前还是有4个主要的吐槽点。
吐槽1:作者Lennart Poettering就职于红帽,让其他系统的粉丝很不爽。
吐槽2:systemd初始化进程服务仅仅可在Linux系统下运行,放弃了Unix系统用户。
吐槽3:接管了诸如syslogd、udev、cgroup等等服务的工作,不再甘心只做初始化进程服务。
吐槽4:使用systemd初始化进程服务后RHEL7系统变化太大,参考文档又不多,为难咱们啊!
不论怎么吐槽,既然红帽RHEL7系统选择了systemd初始化进程服务,随之也没有了“运行级别”这个概念,Linux系统启动时要做大量的初始化工作——例如挂载文件系统和交换分区,启动各类进程服务等等操作,这些都可以看作是一个个的单元(Unit),即用"目标(target)"代替了“运行级别”这个概念,区别如下表所示:
Sysvinit运行级别 | Systemd目标名称 | 作用 |
0 | runlevel0.target, poweroff.target | 关机 |
1 | runlevel1.target, rescue.target | 单用户模式 |
2 | runlevel2.target, multi-user.target | 等同于级别3 |
3 | runlevel3.target, multi-user.target | 多用户的文本界面 |
4 | runlevel4.target, multi-user.target | 等同于级别3 |
5 | runlevel5.target, graphical.target | 多用户的图形界面 |
6 | runlevel6.target, reboot.target | 重启 |
emergency | emergency.target | 紧急Shell |
如果您想要将系统默认的运行目标修改为“多用户,无图形”模式,那么则可直接用ln命令把该文件连接到/etc/systemd/system/目录即可:
对于学习过红帽RHEL6系统或已经习惯使用service、chkconfig等命令来管理系统服务的读者可能要郁闷一段时间了,因为在红帽RHEL7系统中管理服务使用的是systemctl命令,刘遄老师把相关命令的新旧命令版本总结好并制作了两张表格,您可以先大致了解一下,未来的每个章节都会使用到它们。
systemctl管理服务的启动、重启、停止、重载、查看状态的命令:
Sysvinit命令(红帽RHEL6系统) | Systemctl命令(红帽RHEL7系统) | 作用 |
service foo start | systemctl start foo.service | 启动服务 |
service foo restart | systemctl restart foo.service | 重启服务 |
service foo stop | systemctl stop foo.service | 停止服务 |
service foo reload | systemctl reload foo.service | 重新加载配置文件(不终止服务) |
service foo status | systemctl status foo.service | 查看服务状态 |
systemctl设置服务的开机启动、不启动、查看各级别下服务启动状态的命令:
Sysvinit命令(红帽RHEL6系统) | Systemctl命令(红帽RHEL7系统) | 作用 |
chkconfig foo on | systemctl enable foo.service | 开机自动启动 |
chkconfig foo off | systemctl disable foo.service | 开机不自动启动 |
chkconfig foo | systemctl is-enabled foo.service | 查看特定服务是否为开机自启动 |
chkconfig --list | systemctl list-unit-files --type=service | 查看各个级别下服务的启动与禁用情况 |
如果在centOS7系统设置默认 以某种方式启动
使用systemd创建符号链接指向默认运行级别。
修改方法为:
1.首先删除已经存在的符号链接
rm /etc/systemd/system/default.target
2.默认级别转换为3(文本模式) -s symbolic -f force
(1)ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target
或者默认级别转换为5(图形模式)
(2)ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target
3.重启 reboot
参考刘老师《Linux就该这么学》