Linux `init 2` 相关命令的完整使用指南—目录
一、init
系统简介
init
(Initialization)是 Linux 系统启动的第一个进程(PID 1),负责管理系统服务的启动、停止和进程调度。不同 Linux 发行版使用不同的 init
实现:
• SysVinit(传统):基于运行级别(Runlevel)管理。
• systemd(现代主流):基于单元(Unit)和服务(Service)管理。
init 2
是 运行级别 2 的命令,通常用于进入多用户模式(Multi-User Mode),禁用图形界面,仅允许 root 用户和授权用户登录,适用于服务器维护或网络配置。
二、init 2
的含义与作用
• 运行级别 2:在 SysVinit 中表示多用户模式(无图形界面),在 systemd 中对应 multi-user.target
。
• 核心作用:
• 停止图形界面服务(如 Xorg、GDM)。
• 保留网络服务和关键后台进程(如 SSH、数据库)。
• 适用于服务器环境的多用户交互。
三、不同 Init 系统下的 init 2
行为
1. SysVinit(如 CentOS 6、Debian 7)
• 命令:
sudo init 2
• 效果:
• 停止图形界面服务(如 GDM、LightDM)。
• 保留网络服务(如 SSH、HTTP)。
• 仅允许 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 2
会被重定向到 systemctl isolate multi-user.target
,进入多用户模式。
3. Upstart(如 Ubuntu 14.04)
• 不支持 init 2
:需改用 telinit 2
或 systemctl
命令。
四、相关命令详解与对比
命令 | 适用系统 | 效果 | 备注 |
---|---|---|---|
init 2 | SysVinit | 进入多用户模式(无图形界面) | 不推荐在 systemd 中使用 |
systemctl isolate multi-user.target | systemd 系统 | 进入多用户模式 | 推荐在 systemd 中使用 |
telinit 2 | Upstart/SysVinit | 切换到运行级别 2 | 需 root 权限 |
五、典型使用场景
- 服务器维护:
• 关闭图形界面以释放资源,专注于命令行操作。 - 网络配置:
• 修改网络接口或防火墙规则时,避免图形界面干扰。 - 故障排查:
• 当图形界面崩溃时,通过多用户模式恢复服务。
六、操作步骤与示例
1. 使用 init 2
进入多用户模式(SysVinit)
# 切换到运行级别 2
sudo init 2
# 系统会终止图形界面服务,进入命令行模式
# 登录后显示多用户 shell
2. 使用 systemctl
(systemd)
# 进入多用户模式
sudo systemctl isolate multi-user.target
# 查看当前活动目标
systemctl get-default
3. 从多用户模式恢复默认运行级别
# 返回图形界面(运行级别 5)
sudo systemctl isolate graphical.target
# 或使用 SysVinit 命令
sudo init 5
七、高级用法与注意事项
1. 自定义运行级别服务
• 添加服务到运行级别 2(SysVinit):
编辑 /etc/init.d/<service-name>
,在 /etc/rc2.d/
目录创建符号链接:
ln -s /etc/init.d/nginx /etc/rc2.d/S20nginx
2. 强制进入多用户模式(修复图形界面故障)
• 修改 GRUB 引导参数:
在 GRUB 启动菜单中按 e
编辑内核参数,添加 systemd.unit=multi-user.target
。
3. 检查当前运行级别
# SysVinit
runlevel
# systemd
systemctl list-units --type=target
八、常见问题与解决方案
1. 无法切换到运行级别 2
• 原因:权限不足或服务依赖未解除。
• 解决:
sudo chmod +s /sbin/init # 赋予执行权限(谨慎操作)
2. 网络服务未启动
• 预期行为:非必要服务(如图形界面)被停止,但网络服务应保留。
• 手动启用网络:
systemctl start NetworkManager # 启用 NetworkManager
ifup eth0 # 启用网卡(根据实际接口名调整)
3. 退出多用户模式后服务未恢复
• 原因:服务未正确配置自动启动。
• 修复:
systemctl enable <service-name> # 重新启用服务
九、总结
• init 2
的核心作用:进入多用户模式,禁用图形界面以专注于命令行操作。
• 推荐命令:
• SysVinit:sudo init 2
• systemd:sudo systemctl isolate multi-user.target
• 注意事项:
• 避免在生产环境中随意切换运行级别导致服务中断。
• 维护完成后务必恢复默认运行级别。
通过本指南,您可以全面掌握 Linux 系统中 init 2
的使用场景、兼容性问题及安全操作方法,适用于服务器管理、网络配置等多种场景。