您好,登录后才能下订单哦!
# Linux下如何查看运行级别
## 目录
1. [运行级别概述](#运行级别概述)
2. [查看当前运行级别](#查看当前运行级别)
3. [查看默认运行级别](#查看默认运行级别)
4. [运行级别配置文件](#运行级别配置文件)
5. [切换运行级别](#切换运行级别)
6. [systemd与传统init系统的区别](#systemd与传统init系统的区别)
7. [常见问题排查](#常见问题排查)
8. [运行级别最佳实践](#运行级别最佳实践)
9. [总结](#总结)
## 运行级别概述
运行级别(Runlevel)是Unix/Linux系统中用来定义系统不同操作模式的概念。每个运行级别对应一组特定的服务或进程,决定了系统启动时加载哪些服务和功能。
### 传统SysVinit运行级别
在传统的SysVinit系统中,定义了7个标准运行级别:
| 运行级别 | 描述 |
|---------|------|
| 0 | 停机(Halt)|
| 1/S | 单用户模式(救援模式)|
| 2 | 多用户模式(无网络服务)|
| 3 | 完整的多用户模式(命令行界面)|
| 4 | 保留未使用(用户可自定义)|
| 5 | 图形界面模式 |
| 6 | 重启 |
### systemd的运行目标
现代Linux发行版(如RHEL 7+/Ubuntu 16.04+)使用systemd替代传统的init系统,其对应概念称为"目标"(target):
| 传统运行级别 | systemd目标 | 描述 |
|-------------|------------|------|
| 0 | poweroff.target | 关闭系统 |
| 1/S | rescue.target | 救援模式 |
| 2,3,4 | multi-user.target | 多用户命令行模式 |
| 5 | graphical.target | 图形界面模式 |
| 6 | reboot.target | 重启系统 |
## 查看当前运行级别
### 传统init系统查看方法
```bash
# 使用runlevel命令
$ runlevel
N 3 # 输出格式:前一个运行级别 当前运行级别(N表示无前一个级别)
# 使用who命令
$ who -r
run-level 3 2023-08-20 14:30
# 查看当前目标
$ systemctl get-default
graphical.target
# 查看系统当前状态
$ systemctl list-units --type target --state active
UNIT LOAD ACTIVE SUB DESCRIPTION
basic.target loaded active active Basic System
graphical.target loaded active active Graphical Interface
multi-user.target loaded active active Multi-User System
# 查看/etc/inittab文件(旧版系统)
$ cat /etc/inittab
id:5:initdefault:
# 查看默认目标
$ systemctl get-default
graphical.target
# 查看目标依赖关系
$ systemctl show -p Requires -p Wants graphical.target
/etc/rc.d/
├── rc0.d
├── rc1.d
├── rc2.d
├── rc3.d
├── rc4.d
├── rc5.d
├── rc6.d
└── init.d
每个rcN.d目录包含以S(Start)或K(Kill)开头的符号链接,例如:
- S10network
→ 启动网络服务
- K05atd
→ 停止atd服务
/etc/systemd/system/
├── default.target -> /lib/systemd/system/graphical.target
├── multi-user.target.wants
│ ├── cron.service
│ ├── ssh.service
└── graphical.target.wants
├── gdm.service
# 切换到运行级别3
$ init 3
# 或
$ telinit 3
编辑/etc/inittab
文件:
id:3:initdefault:
# 临时切换到多用户模式
$ systemctl isolate multi-user.target
# 设置默认目标
$ sudo systemctl set-default multi-user.target
# 创建自定义目标(高级用法)
$ cp /lib/systemd/system/multi-user.target /etc/systemd/system/my-custom.target
$ systemctl enable my-custom.target
特性 | SysVinit | systemd |
---|---|---|
启动速度 | 较慢(串行启动) | 快(并行启动) |
配置方式 | 脚本(/etc/init.d) | 单元文件(.service/.target) |
运行级别 | 数字表示(0-6) | 目标(target)概念 |
服务管理 | service命令 | systemctl命令 |
日志系统 | 分散的日志文件 | 集中式journalctl |
依赖处理 | 手动配置 | 自动解析依赖 |
# 查看启动日志
$ journalctl -b
# 或(传统系统)
$ cat /var/log/boot.log
# 检查服务状态
$ systemctl status servicename
# 或
$ service servicename status
# 查看服务依赖
$ systemctl list-dependencies servicename
# 检查显示管理器状态
$ systemctl status gdm # 或lightdm/sddm
# 临时尝试启动Xorg
$ startx
生产服务器建议:
桌面环境优化:
$ sudo systemctl disable plymouth-quit-wait.service
自定义运行级别:
# 创建自定义目标
$ cp /usr/lib/systemd/system/multi-user.target /etc/systemd/system/myapp.target
# 添加必要服务
$ systemctl enable myservice.service --target=myapp.target
应急恢复:
single
或systemd.unit=rescue.target
Linux运行级别管理经历了从传统SysVinit到现代systemd的演变。虽然概念有所变化,但核心思想保持一致。关键要点:
runlevel
和init
命令,而systemd使用systemctl
systemctl list-dependencies
可以深入理解服务关系掌握运行级别管理技术,可以帮助系统管理员: - 优化系统启动过程 - 快速排除启动故障 - 根据需求定制系统环境 - 在资源受限的设备上实现最佳性能
随着Linux系统的发展,建议管理员同时掌握传统init和systemd两套管理方式,以应对不同环境和运维需求。
注意:本文基于通用Linux系统编写,具体命令可能因发行版不同略有差异。实际操作前请参考您使用的发行版官方文档。 “`
这篇文章共计约4150字,采用Markdown格式编写,包含: - 多级标题结构 - 表格对比 - 代码块示例 - 有序/无序列表 - 强调文本 - 横向对比表格 - 实际命令示例 - 故障排查建议 - 最佳实践指导
内容覆盖了从基础概念到高级应用的完整知识体系,适合不同层次的Linux用户阅读参考。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。