Linux telinit 命令详解:运行级别切换|关机重启|系统维护一站式掌握
1. 命令简介telinit 命令用于切换当前正在运行的 Linux 系统的运行等级runlevel。它是系统初始化进程 init传统 sysvinit或现代系统中 systemd 的一个接口通过向 init 进程发送信号来改变系统的运行状态。该命令通常用于系统维护、关机、重启或切换多用户模式与图形界面模式。2. 语法格式bash运行telinit [选项]... 运行等级 telinit 运行等级3. 常用选项及参数说明选项表格选项说明-t SECONDS指定在发送信号给 init 进程前等待的秒数。默认值通常为 5 秒。-e KEYVALUE指定一个额外的环境变量该变量将随 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。切换到多用户文本模式运行等级 3bash运行sudo telinit 3切换到图形界面模式运行等级 5bash运行sudo telinit 5进入单用户维护模式bash运行sudo telinit 1等待 10 秒后重启bash运行sudo telinit -t 10 6向运行等级事件添加环境变量bash运行sudo telinit -e MAINTyes 1这会在切换到运行等级 1 时在事件中包含 MAINTyes。通知 init 重新读取配置文件传统 sysvinitbash运行sudo telinit q5. 注意事项权限要求telinit 通常需要 root 权限使用 sudo来执行因为它直接控制系统运行状态。运行等级差异不同 Linux 发行版对运行等级的定义可能略有差异。例如某些系统可能将等级 2 用作带网络的多用户模式。建议查阅发行版文档。systemd 系统在现代使用 systemd 的系统中如 RHEL 7、Ubuntu 15.04运行等级被映射到特定的 systemd 目标target0 → poweroff.target1 → rescue.target3 → multi-user.target5 → graphical.target6 → 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 系统可能不存在此文件。