Linux `init 1` 相关命令的完整使用指南—目录
一、init
系统简介
init
(Initialization)是 Linux 系统启动的第一个进程(PID 1),负责管理系统服务的启动、停止和进程调度。不同 Linux 发行版使用不同的 init
实现:
• SysVinit(传统):基于运行级别(Runlevel)管理。
• systemd(现代主流):基于单元(Unit)和服务(Service)管理。
init 1
是 运行级别 1 的命令,通常用于进入单用户模式(Single User Mode),仅允许 root 用户登录,适用于系统维护或紧急修复。
二、init 1
的含义与作用
• 运行级别 1:在 SysVinit 中表示单用户模式,在 systemd 中对应 rescue.target
。
• 核心作用:
• 禁用所有非必要服务,仅保留基础系统功能。
• 仅允许 root 用户登录,禁止普通用户访问。
• 用于系统故障修复、文件系统检查或关键配置修改。
三、不同 Init 系统下的 init 1
行为
1. SysVinit(如 CentOS 6、Debian 7)
• 命令:
sudo init 1
• 效果:
• 停止所有非必要服务(如网络、数据库)。
• 切换到单用户模式,仅 root 用户可登录。
2. systemd(如 CentOS 7+、Ubuntu 16.04+)
• 兼容性:systemd 保留了 init
命令的软链接,但实际行为由 systemd 处理:
ls -l /sbin/init
# 输出类似:lrwxrwxrwx 1 root root 16 Apr 1 10:00 /sbin/init -> /lib/systemd/systemd
• 执行效果:
• init 1
会被重定向到 systemctl rescue
,进入救援模式(类似单用户模式)。
3. Upstart(如 Ubuntu 14.04)
• 不支持 init 1
:需改用 telinit 1
或 systemctl
命令。
四、相关命令详解与对比
命令 | 适用系统 | 效果 | 备注 |
---|---|---|---|
init 1 | SysVinit | 进入单用户模式 | 不推荐在 systemd 中使用 |
systemctl rescue | systemd 系统 | 进入救援模式(单用户模式) | 推荐在 systemd 中使用 |
telinit 1 | Upstart/SysVinit | 切换到运行级别 1 | 需 root 权限 |
systemctl isolate rescue.target | systemd | 精确切换到救援目标 | 更规范的 systemd 命令 |
五、进入单用户模式的典型场景
- 系统崩溃修复:
• 文件系统损坏时,进入单用户模式挂载文件系统为只读模式进行检查。 - 密码重置:
• 忘记 root 密码时,通过单用户模式绕过登录验证。 - 关键服务修复:
• 停止异常服务(如数据库、网络服务),手动修复配置。
六、操作步骤与示例
1. 使用 init 1
进入单用户模式(SysVinit)
# 切换到运行级别 1
sudo init 1
# 系统会终止非必要服务,进入单用户模式
# 登录后仅显示 root shell
2. 使用 systemctl rescue
(systemd)
# 进入救援模式
sudo systemctl rescue
# 系统自动停止图形界面和无关服务,进入单用户环境
3. 从单用户模式恢复默认运行级别
# 返回默认运行级别(如 systemd 的 multi-user.target)
sudo systemctl default
# 或 SysVinit 中执行:
sudo init 3 # 切换到多用户模式(无图形界面)
sudo init 5 # 切换到图形界面(如适用)
七、高级用法与注意事项
1. 强制进入单用户模式(修复引导问题)
• 修改 GRUB 引导参数:
在 GRUB 启动菜单中按 e
编辑内核参数,添加 single
或 init=/bin/bash
,强制进入单用户模式。
2. 挂载文件系统为读写模式
# 默认挂载为只读,需重新挂载为读写
mount -o remount,rw /
3. 禁用自动挂载服务
• 防止干扰修复:
systemctl stop systemd-udevd # 停止设备管理器
八、常见问题与解决方案
1. 无法切换到运行级别 1
• 原因:权限不足或服务依赖未解除。
• 解决:
sudo chmod +s /sbin/init # 赋予执行权限(谨慎操作)
2. 单用户模式下网络不可用
• 预期行为:非必要服务(如 NetworkManager
)已被停止。
• 手动启用网络:
ifconfig eth0 up # 启用网卡(根据实际接口名调整)
dhclient eth0 # 获取 IP 地址
3. 退出单用户模式后服务未恢复
• 原因:服务未正确配置自动启动。
• 修复:
systemctl enable <service-name> # 重新启用服务
九、总结
• init 1
的核心作用:进入单用户模式,隔离系统环境以进行紧急维护。
• 推荐命令:
• SysVinit:sudo init 1
• systemd:sudo systemctl rescue
• 注意事项:
• 避免在单用户模式下执行高风险操作。
• 修复完成后务必恢复默认运行级别。
通过本指南,您可以全面掌握 Linux 系统中 init 1
的使用场景、兼容性问题及安全操作方法,适用于服务器管理、故障排查等多种场景。