运行级别
System 运行级别 | systemd目标名称 (CentOS7) |
作用 |
0 | runlevel0.target poweroff.target |
关机 |
1 | runlevel1.target rescue.target |
救援模式 |
2 | runlevel2.target multi-user.target |
多用户模式(文本模式,命 令行模式) |
3 | runlevel3.target multi-user.target |
多用户的文本界面(文本模 式,命令行模式) |
4 | runlevel4.target multi-user.target |
多用户模式,与3一致 |
5 | runlevel5.target graphical.target |
多用户的图形界面(桌面模 式) |
6 | runlevel6.target reboot.target |
重启 |
centos7系统
查看系统启动运行级别
[root@dmxsp ~]# systemctl get-default
multi-user.target
修改默认启动运行级别
[root@dmxsp ~]# systemctl set-default graphical.target
Removed symlink /etc/systemd/system/default.target. Created symlink from /etc/systemd/system/default.target to /usr/lib/systemd/system/graphical.target.
[root@dmxsp ~]# systemctl get-default
graphical.target
系统的systemd
1.systemd的由来
Linux一直以来都是采用init进程作为祖宗进程,但是init有两个缺点:
1、启动时间长。Init进程是串行启动,只有前一个进程启动完,才会启动下一个进程。
2、启动脚本复杂,初始化完成后系统会加载很多脚本,脚本都会处理各自的情况,这会让脚本多而复杂。
Centos5 是启动速度最慢的,串行启动过程,无论进程相互之间有无依赖关系。
Centos6 相对启动速度有所改进。有依赖的进程之间依次启动而其他与之没有依赖关系的则并行同步启动。
Centos7 所有进程无论有无依赖关系则都是并行启动(当然很多时候进程没有真正启动而是只有一个信号或者说是标记而已,在真正利用的时候才会真正启动。)
2.什么是systemd
systemd即为system daemon,是linux下的一种init软件,由Lennart Poettering带头开发,并在LGPL 2.1及其后续版本许可证下开源发布,开发目标是提供更优秀的框架以表示系统服务间的依赖关系,并依此实现系统初始化时服务的并行启动,同时达到降低Shell的系统开销的效果,最终代替常用的System V与BSD风格init程序。
与多数发行版使用的System V风格init相比,systemd采用了以下新技术:
(1) 采用Socket激活式与总线激活式服务,以提高相互依赖的各服务的并行运行性能
(2) 用Cgroups代替PID来追踪进程,因此即使是两次fork之后生成的守护进程也不会脱离systemd的控制。
3.systemd的优势
1、最新系统都采用systemd管理(RedHat7,CentOS7,Ubuntu15等) systemctl
2、Centos7支持开机并行启动服务,显著提高开机启动效率。
3、Centos7关机只关闭正在运行的服务,而Centos6全部都关闭一次。
4、Centos7服务的启动与停止不在使用脚本进行管理,C7下面都是配置(/usr/lib/systemd/system/xxxx.service),也就是/etc/init.d(CentOS 6)下不在有脚本。
5、Centos7使用systemd解决原有模式缺陷,比如原有service不会关闭程序产生的子进程。
4.systemd相关配置文件
/usr/lib/systemd/system/:类似Centos6系统的启动脚本,/etc/init.d/
/etc/systemd/system/:系统配置存放,类似Centos6系统的/etc/rc.d/rcN.d/
/etc/systemd/system/multi-user.target.wants/:系统配置存放
5.systemd管理服务相关命令
systemctl管理服务的启动、重启、停止、重载、查看状态等常用命令
systemctl命令(7系 统) |
作用 |
systemctl start crond.service |
启动服务,当前正在运行 |
systemctl stop crond.service |
停止服务 |
systemctl restart crond.service |
重启服务 |
systemctl reload crond.service |
优雅的重启,重新加载配置(不终止服务,不影响正在处理的请求/用户) |
systemctl status crond.servre |
查看服务运行状态 |
systemctl is-active sshd.service |
查看服务是否在运行中 |
systemctl mask crond.servre |
禁止服务运行 |
systemctl unmask crond.servre |
取消禁止服务运行 |
systemctl 设置服务开机启动、不启动、查看各级别下服务启动状态等常用命令
systemctl命令(7系统) | 作用 |
systemctl enable crond.service |
开机自动启动 |
systemctl disable crond.service |
开机不要自动启动 |
systemctl list-unit-files | 查看各个级别下服务的启动与禁用 |
systemctl is-enabled crond.service |
查看特定服务是否为开机自启动 |
systemctl daemon reload |
创建新服务文件或者变更设置 |
systemctl 服务状态说明
服务状态 | 状态说明 |
loaded | 服务单元的配置文件已经被处理, 配置放在了 /usr/lib/systemd/system/ |
active(running) | 服务的一个或多个进程在运行中 最常见的状态 start |
active(exited) | 一次性运行的服务成功被执行并退出(服务运行后完成任务,相关进程会自动退出) |
active(waiting) | 服务已经运行但在等待某个事件 |
inactive | 服务没有在运行 stop |
enabled | 服务设定为开机运行 |
disabled | 服务设定为开机不运行 |
static | 服务不能被设定开机启动,但可以由其他服务启动该服务 |
systemctl的journalctl日志
systemctl 启动/重启/关闭 服务失败,报错
journalctl -xe -e按页显示 -x进行一些翻译,指出一些故障提示
找error 或 err 或warn 或fail
journalctl -n 20 查看最后20行
journalctl -f 动态查看日志
journalctl -p err 查看日志的级别
journalctl -u crond 查看某个服务的单元的日志