Linux telinit 命令详解:运行级别切换|关机重启|系统维护一站式掌握

1. 命令简介

telinit 命令用于切换当前正在运行的 Linux 系统的运行等级(runlevel)。它是系统初始化进程 init(传统 sysvinit)或现代系统中 systemd 的一个接口,通过向 init 进程发送信号来改变系统的运行状态。该命令通常用于系统维护、关机、重启或切换多用户模式与图形界面模式。

2. 语法格式

bash

运行

复制代码
telinit [选项]... 运行等级
telinit 运行等级

3. 常用选项及参数说明

选项

表格

选项 说明
-t SECONDS 指定在发送信号给 init 进程前等待的秒数。默认值通常为 5 秒。
-e KEY=VALUE 指定一个额外的环境变量,该变量将随 RUNLEVEL 和 PREVLEVEL 一起包含在发出的 runlevel 事件中。此选项可多次使用以设置多个变量。
--help 显示帮助信息并退出。
--version 显示版本信息并退出。

运行等级参数

表格

运行等级 说明
0 停止系统(关机)。
1 或 S/s 单用户模式(救援模式),通常用于系统维护。注意:S 或 s 会尝试直接进入单用户模式而不先停止所有进程,可能导致意外状态。
2 多用户模式,不带网络服务(在某些发行版中定义不同,通常不使用)。
3 完整的多用户模式,带网络服务(文本界面)。
4 用户自定义(通常未使用,默认与等级 3 相同)。
5 多用户模式,带图形界面登录。
6 重新启动系统。
Q 或 q 通知 init 进程重新检查 /etc/inittab 文件(传统 sysvinit 系统)。
U 或 u 通知 init 进程重新执行自身,保持当前运行等级。通常用于升级 init 二进制文件后。

4. 示例用法

  • 重启系统

bash

运行

复制代码
sudo telinit 6

等同于 sudo reboot。

  • 关闭系统

bash

运行

复制代码
sudo telinit 0

等同于 sudo shutdown -h now。

  • 切换到多用户文本模式(运行等级 3)

bash

运行

复制代码
sudo telinit 3
  • 切换到图形界面模式(运行等级 5)

bash

运行

复制代码
sudo telinit 5
  • 进入单用户维护模式

bash

运行

复制代码
sudo telinit 1
  • 等待 10 秒后重启

bash

运行

复制代码
sudo telinit -t 10 6
  • 向运行等级事件添加环境变量

bash

运行

复制代码
sudo telinit -e MAINT=yes 1

这会在切换到运行等级 1 时,在事件中包含 MAINT=yes。

  • 通知 init 重新读取配置文件(传统 sysvinit)

bash

运行

复制代码
sudo telinit q

5. 注意事项

  • 权限要求:telinit 通常需要 root 权限(使用 sudo)来执行,因为它直接控制系统运行状态。
  • 运行等级差异:不同 Linux 发行版对运行等级的定义可能略有差异。例如,某些系统可能将等级 2 用作带网络的多用户模式。建议查阅发行版文档。
  • systemd 系统:在现代使用 systemd 的系统中(如 RHEL 7+、Ubuntu 15.04+),运行等级被映射到特定的 systemd 目标(target):
    • 0 → poweroff.target
    • 1 → rescue.target
    • 3 → multi-user.target
    • 5 → graphical.target
    • 6 → reboot.target 虽然 telinit 仍然可用,但推荐使用 systemctl isolate TARGET.target 命令进行切换。
  • 慎用 S/s:尽量避免直接使用 telinit S 或 telinit s,因为它可能不会正常停止服务,导致系统状态不一致。优先使用等级 1。
  • 环境变量:telinit 会读取 RUNLEVEL 环境变量来获取当前运行等级(如果设置),否则从 /var/run/utmp 读取。
  • 日志记录:每次运行等级变更都会记录到 /var/log/wtmp 中,并更新 /var/run/utmp。
  • 替代工具:对于关机和重启操作,更推荐使用 shutdown、reboot、poweroff 等命令,它们提供了更友好的用户交互和安全检查。

6. 相关文件

  • /var/run/utmp:当前运行等级和用户登录信息。
  • /var/log/wtmp:历史运行等级变更和用户登录日志。
  • /etc/inittab:传统 sysvinit 系统的初始化配置文件(现代 systemd 系统可能不存在此文件)。
相关推荐
Patrick_Wilson1 小时前
最佳实践是有保质期的:从一次 CDN external 白屏事故说起
前端·性能优化·前端工程化
QXWZ_IA2 小时前
油气储罐沉降监测用什么技术方案最好?千寻自动化监测+次声波泄漏方案
运维·科技·自动化·能源
YHHLAI2 小时前
[特殊字符] Agent 智能体开发实战 · 第一课:Tool Use —— 让大模型自动干活
前端·人工智能
nuIl2 小时前
我把 5 个编码 Agent 塞进了一个 npm 包
前端·agent·claude
L-影2 小时前
FastAPI 静态文件:Web 页面的“固定展柜”与“加速引擎”
前端·fastapi
NiceCloud喜云2 小时前
Anthropic 一周三连发:Cowork 多端、Fable 5 按需付费、J-space 论文的技术解读
java·服务器·网络·人工智能·ai
陪我去看海2 小时前
受够了 AI 写完代码留下一堆端口?我做了一个端口管理App!
前端·macos·vibecoding
Xuepoo2 小时前
我抛弃了 DOM,但保留了无障碍访问
前端
李明卫杭州2 小时前
Vue2 vs Vue3 的 h 函数:渲染函数完整迁移指南
前端