Linux下如何查看运行级别

发布时间:2022-01-26 09:45:40 作者:小新
来源:亿速云 阅读:208
# 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

systemd系统查看方法

# 查看当前目标
$ 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

查看默认运行级别

传统init系统

# 查看/etc/inittab文件(旧版系统)
$ cat /etc/inittab
id:5:initdefault:

systemd系统

# 查看默认目标
$ systemctl get-default
graphical.target

# 查看目标依赖关系
$ systemctl show -p Requires -p Wants graphical.target

运行级别配置文件

SysVinit系统目录结构

/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服务

systemd服务单元

/etc/systemd/system/
├── default.target -> /lib/systemd/system/graphical.target
├── multi-user.target.wants
│   ├── cron.service
│   ├── ssh.service
└── graphical.target.wants
    ├── gdm.service

切换运行级别

临时切换(传统init)

# 切换到运行级别3
$ init 3
# 或
$ telinit 3

永久切换(传统init)

编辑/etc/inittab文件:

id:3:initdefault:

systemd系统切换

# 临时切换到多用户模式
$ 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

systemd与传统init系统的区别

特性 SysVinit systemd
启动速度 较慢(串行启动) 快(并行启动)
配置方式 脚本(/etc/init.d) 单元文件(.service/.target)
运行级别 数字表示(0-6) 目标(target)概念
服务管理 service命令 systemctl命令
日志系统 分散的日志文件 集中式journalctl
依赖处理 手动配置 自动解析依赖

常见问题排查

1. 运行级别切换失败

# 查看启动日志
$ journalctl -b
# 或(传统系统)
$ cat /var/log/boot.log

2. 服务未按预期启动

# 检查服务状态
$ systemctl status servicename
# 或
$ service servicename status

# 查看服务依赖
$ systemctl list-dependencies servicename

3. 图形界面无法启动

# 检查显示管理器状态
$ systemctl status gdm  # 或lightdm/sddm

# 临时尝试启动Xorg
$ startx

运行级别最佳实践

  1. 生产服务器建议

    • 使用运行级别3/multi-user.target
    • 禁用不必要的图形服务
    • 通过SSH进行远程管理
  2. 桌面环境优化

    • 使用运行级别5/graphical.target
    • 考虑禁用开机动画加速启动
    $ sudo systemctl disable plymouth-quit-wait.service
    
  3. 自定义运行级别

    # 创建自定义目标
    $ cp /usr/lib/systemd/system/multi-user.target /etc/systemd/system/myapp.target
    # 添加必要服务
    $ systemctl enable myservice.service --target=myapp.target
    
  4. 应急恢复

    • 单用户模式(运行级别1)忘记root密码时:
      • 在GRUB菜单按’e’编辑启动参数
      • 在linux行末尾添加singlesystemd.unit=rescue.target
      • Ctrl+X启动

总结

Linux运行级别管理经历了从传统SysVinit到现代systemd的演变。虽然概念有所变化,但核心思想保持一致。关键要点:

  1. 传统系统使用runlevelinit命令,而systemd使用systemctl
  2. 生产环境通常使用多用户模式(3/multi-user.target)
  3. 通过systemctl list-dependencies可以深入理解服务关系
  4. 日志分析是排查运行级别问题的关键

掌握运行级别管理技术,可以帮助系统管理员: - 优化系统启动过程 - 快速排除启动故障 - 根据需求定制系统环境 - 在资源受限的设备上实现最佳性能

随着Linux系统的发展,建议管理员同时掌握传统init和systemd两套管理方式,以应对不同环境和运维需求。

注意:本文基于通用Linux系统编写,具体命令可能因发行版不同略有差异。实际操作前请参考您使用的发行版官方文档。 “`

这篇文章共计约4150字,采用Markdown格式编写,包含: - 多级标题结构 - 表格对比 - 代码块示例 - 有序/无序列表 - 强调文本 - 横向对比表格 - 实际命令示例 - 故障排查建议 - 最佳实践指导

内容覆盖了从基础概念到高级应用的完整知识体系,适合不同层次的Linux用户阅读参考。

推荐阅读:
  1. linux几个运行级别
  2. CentOS下linux的运行级别和开机过程详解

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

linux

上一篇:python的内存分配机制是什么

下一篇:@Transactional注解怎么用

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》