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 系统可能不存在此文件)。
相关推荐
RisunJan8 分钟前
Linux命令-sftp(SSH 文件传输协议客户端)
linux·运维
LDZKKJ34 分钟前
OpenAI模型“越狱“入侵Hugging Face——AI安全史上的至暗时刻
网络·人工智能·安全
别惊醒渔人1 小时前
Vue3 Diff 优化:最长递增子序列 LIS
前端·javascript·vue.js
颜酱1 小时前
07 | 把字段与指标同步到 Qdrant(生成阶段)
前端·人工智能·后端
用户059540174461 小时前
把AI长期记忆测试从手动验证换成pytest,2天揪出11个隐藏Bug
前端·css
极客先躯2 小时前
高级java每日一道面试题-2026年05月03日-实战篇[Docker]-如何实现容器化环境的数据加密?
java·运维·docker·容器·金融·加解密·高级面试
xqqxqxxq2 小时前
Java Socket 多人聊天室(私聊+群聊)技术笔记(V4版本)
java·网络·笔记
龙仔7252 小时前
人大金仓OS_Core数据库自动备份实施笔记(银河麒麟Linux)
linux·数据库·笔记·备份·人大金仓
lichenyang4532 小时前
从 Vite 空项目到 AIGC 图片工作台:我如何打通生图、任务轮询、生成库与 Canvas 动态特效
前端·人工智能
老杨聊技术3 小时前
CentOS 7 安装 MySQL 8 保姆级教程
linux·mysql·centos