Linux init 命令
什么是 init 命令
init
是 Linux 系统中最重要的进程之一,它是系统启动后由内核创建的第一个用户级进程(PID=1),负责启动和管理系统中的所有其他进程。
关键特性
- 进程管理:作为所有进程的父进程
- 运行级别控制:管理系统不同的运行状态
- 服务管理:启动和停止系统服务
- 系统初始化:执行启动脚本和配置
init 命令的基本语法
init [运行级别]
运行级别说明
Linux 系统定义了 7 个标准运行级别:
运行级别 | 描述 | 典型用途 |
---|---|---|
0 | 关机 | 系统关机状态 |
1 | 单用户模式 | 系统维护/root权限 |
2 | 多用户模式(无NFS) | 基本多用户模式 |
3 | 完整多用户模式 | 标准命令行界面 |
4 | 保留 | 用户自定义 |
5 | 图形界面模式 | 带GUI的多用户模式 |
6 | 重启 | 系统重启 |
init 命令的实际应用
1. 查看当前运行级别
实例
who -r
# 或
runlevel
# 或
runlevel
2. 切换运行级别
实例
init 3 # 切换到多用户命令行模式
init 5 # 切换到图形界面模式
init 0 # 关机
init 6 # 重启系统
init 5 # 切换到图形界面模式
init 0 # 关机
init 6 # 重启系统
3. 紧急情况处理
实例
init 1 # 进入单用户维护模式(需要root权限)
现代Linux系统中的init演变
1. System V init
传统初始化系统,使用/etc/inittab配置文件
实例
# 典型inittab条目示例
id:3:initdefault: # 默认运行级别
si::sysinit:/etc/rc.d/rc.sysinit # 系统初始化脚本
id:3:initdefault: # 默认运行级别
si::sysinit:/etc/rc.d/rc.sysinit # 系统初始化脚本
2. Upstart (Ubuntu早期版本使用)
事件驱动的init系统
3. systemd (现代主流发行版)
实例
systemctl isolate multi-user.target # 相当于init 3
systemctl isolate graphical.target # 相当于init 5
systemctl isolate graphical.target # 相当于init 5
实践练习
练习1:运行级别切换实验
从图形界面切换到命令行模式
init 3
观察服务变化后切换回图形界面
init 5
练习2:系统维护模式体验
进入单用户模式
init 1
执行文件系统检查
fsck /dev/sda1
注意事项
- 权限要求:init命令通常需要root权限
- 谨慎使用:直接使用init 0或init 6可能导致未保存数据丢失
- 系统差异:不同发行版可能有不同的init实现
- 服务影响:切换运行级别会停止/启动相关服务
常见问题解答
Q:为什么我的系统没有/etc/inittab文件?
A:使用systemd的系统不再需要inittab,配置方式已改变
Q:如何设置默认运行级别?
对于systemd系统:
systemctl set-default multi-user.target # 相当于运行级别3
Q:init和shutdown命令有什么区别?
两者最终都会关机,但shutdown提供了更多选项(如延迟关机、广播通知等)
点我分享笔记