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 2systemctl 命令。


四、相关命令详解与对比

命令适用系统效果备注
init 2SysVinit进入多用户模式(无图形界面)不推荐在 systemd 中使用
systemctl isolate multi-user.targetsystemd 系统进入多用户模式推荐在 systemd 中使用
telinit 2Upstart/SysVinit切换到运行级别 2需 root 权限

五、典型使用场景

  1. 服务器维护:
    • 关闭图形界面以释放资源,专注于命令行操作。
  2. 网络配置:
    • 修改网络接口或防火墙规则时,避免图形界面干扰。
  3. 故障排查:
    • 当图形界面崩溃时,通过多用户模式恢复服务。

六、操作步骤与示例

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 的使用场景、兼容性问题及安全操作方法,适用于服务器管理、网络配置等多种场景。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

独隅

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值