当前位置: 首页 > news >正文

Linux `init` 相关命令的完整使用指南


Linux `init` 相关命令的完整使用指南—目录

  • 一、`init` 系统简介
  • 二、运行级别(Runlevel)详解
  • 三、常用 `init` 命令及使用方法
    • 1. 切换运行级别
    • 2. 查看当前运行级别
    • 3. 服务管理
    • 4. 紧急模式(Rescue Mode)
  • 四、不同 Init 系统的兼容性
    • 1. SysVinit 与 systemd 的命令对照
    • 2. Upstart 命令(旧版 Ubuntu)
  • 五、典型使用场景
    • 1. 系统维护与修复
    • 2. 服务器环境配置
    • 3. 紧急故障排查
  • 六、高级用法与自定义配置
    • 1. 自定义运行级别服务
    • 2. 修改默认靶点(systemd)
    • 3. 创建自定义靶点
  • 七、常见问题与解决方案
    • 1. 无法切换运行级别
    • 2. 服务无法启动
    • 3. 误操作导致系统无法启动
  • 八、安全注意事项
  • 九、总结


一、init 系统简介

init(Initialization)是 Linux 系统启动的第一个进程(PID 1),负责管理系统服务的启动、停止和进程调度。不同 Linux 发行版使用不同的 init 实现:
• SysVinit(传统):基于运行级别(Runlevel)管理。
• systemd(现代主流):基于单元(Unit)和服务(Service)管理。
• Upstart(旧版 Ubuntu):事件驱动的初始化系统。

init 命令通过切换运行级别(Runlevel)控制系统状态,支持单用户模式、多用户模式、图形界面模式等场景。


二、运行级别(Runlevel)详解

运行级别定义了系统的不同状态,常见级别如下:

运行级别名称适用场景systemd 对应靶点
0关机(Shutdown)安全关闭系统poweroff.target
1单用户模式(Rescue)系统修复、密码重置rescue.target
2多用户模式(无图形)服务器维护、网络配置multi-user.target
3多用户模式(带网络)命令行环境下的多任务操作multi-user.target
4未定义(保留)自定义用途用户自定义靶点
5图形界面模式(GUI)桌面环境启动graphical.target
6重启(Reboot)重新启动系统reboot.target

三、常用 init 命令及使用方法

1. 切换运行级别

• 通用语法:

sudo init <运行级别>

• 示例:
• 关机:sudo init 0
• 进入单用户模式:sudo init 1
• 切换到多用户无图形界面:sudo init 2
• 重启系统:sudo init 6

2. 查看当前运行级别

• SysVinit:

runlevel  # 输出格式:N 当前运行级别 S 上次运行级别

• systemd:

systemctl get-default    # 查看默认靶点
systemctl list-units --type=target  # 列出所有靶点

3. 服务管理

• 启动/停止服务(SysVinit):

sudo service <服务名> start/stop/restart

• 启用/禁用开机自启(systemd):

sudo systemctl enable/disable <服务名>

• 查看服务状态:

systemctl status <服务名>  # systemd
service <服务名> status    # SysVinit

4. 紧急模式(Rescue Mode)

• 进入救援模式(systemd):

sudo systemctl rescue

• 修复文件系统:
在救援模式下,挂载根分区为读写模式:

mount -o remount,rw /

四、不同 Init 系统的兼容性

1. SysVinit 与 systemd 的命令对照

功能SysVinit 命令systemd 命令
切换运行级别init <级别>systemctl isolate <靶点>
启动服务service <服务> startsystemctl start <服务>
查看服务状态service <服务> statussystemctl status <服务>
设置开机自启chkconfig <服务> onsystemctl enable <服务>

2. Upstart 命令(旧版 Ubuntu)

• 启动服务:

sudo start <服务名>

• 停止服务:

sudo stop <服务名>

五、典型使用场景

1. 系统维护与修复

• 单用户模式重置密码:

  1. 重启系统,在 GRUB 菜单按 e 编辑内核参数,添加 init=/bin/bash
  2. 进入单用户模式后执行:
    mount -o remount,rw /
    passwd root
    

2. 服务器环境配置

• 禁用图形界面:

sudo systemctl set-default multi-user.target  # systemd
sudo chkconfig gdm off                      # SysVinit

3. 紧急故障排查

• 挂载文件系统为只读:

mount -o remount,ro /

• 检查磁盘错误:

fsck /dev/sda1

六、高级用法与自定义配置

1. 自定义运行级别服务

• 添加服务到运行级别(SysVinit):

  1. 创建符号链接至对应运行级别目录:
    ln -s /etc/init.d/nginx /etc/rc3.d/S20nginx
    
  2. 启用服务:
    chkconfig --level 3 nginx on
    

2. 修改默认靶点(systemd)

• 永久修改默认运行级别:

sudo systemctl set-default graphical.target  # 设置为图形界面
sudo systemctl set-default rescue.target     # 设置为救援模式

3. 创建自定义靶点

• 示例:创建名为 custom.target 的靶点:

sudo nano /etc/systemd/system/custom.target

内容:

[Unit]
Description=Custom Target
Requires=multi-user.target
After=multi-user.target

• 启用自定义靶点:

sudo systemctl enable custom.target

七、常见问题与解决方案

1. 无法切换运行级别

• 原因:权限不足或服务依赖未解除。
• 解决:

sudo chmod +s /sbin/init  # 赋予执行权限(谨慎操作)

2. 服务无法启动

• 诊断步骤:

  1. 查看日志:
    journalctl -u <服务名>  # systemd
    tail -f /var/log/<服务名>.log
    
  2. 检查依赖关系:
    systemctl list-dependencies <服务名>
    

3. 误操作导致系统无法启动

• 恢复方法:

  1. 进入救援模式(systemctl rescue)。
  2. 挂载根分区并修复配置:
    mount /dev/sda1 /mnt
    chroot /mnt
    

八、安全注意事项

  1. 谨慎操作运行级别:避免在生产环境中随意切换级别导致服务中断。
  2. 备份配置文件:修改 /etc/inittab 或 systemd 配置前,务必备份原文件。
  3. 限制 root 权限:非必要情况下避免使用 sudo 执行高风险命令。

九、总结

init 的核心作用:管理系统运行状态和服务生命周期。
• 推荐命令:
• 切换运行级别:sudo init <级别>systemctl isolate <靶点>
• 服务管理:systemctl start/stop <服务>
• 紧急修复:systemctl rescue
• 最佳实践:优先使用 systemd 命令,定期备份配置,避免直接操作底层运行级别。


通过本指南,您可以全面掌握 Linux 系统中 init 相关命令的使用场景、兼容性问题及安全操作方法,适用于服务器管理、故障排查等多种场景。


相关文章:

  • Spring Cloud Alibaba微服务-微服务介绍和搭建
  • 高级java每日一道面试题-2025年4月12日-微服务篇[Nacos篇]-Nacos中Raft算法的应用场景及其工作原理是怎样的?
  • Excel表格文件转为JSON格式数据
  • 使用datax通过HbaseShell封装writer和reader同步hbase数据到hbase_踩坑_细节总结---大数据之DataX工作笔记008
  • Day2-UFS协议栈
  • uniapp使用createSelectorQuery,boundingClientRect获取宽度和高度不准确的可用的解决方案
  • STM32 HAL库 内部传感器驱动实现
  • 写书的三驾马车
  • 回归,git 分支开发操作命令
  • ONLYOFFICE深度解锁系列.2-Excel 跨文件数据整合实战指南-可道云的另一个严重bug
  • Vscode --- LinuxPrereqs │远程主机可能不符合 glibc 和 libstdc++ Vs code 服务器的先决条件
  • STM32 串口中断接收方式笔记:HAL_UART_Receive_IT vs __HAL_UART_ENABLE_IT
  • 用GitHub Actions实现CI/CD
  • 【uniapp】uni.setClipboardData 方法失效 bug 解决方案
  • 阿里云OSS应对DDoS攻击策略
  • TDengine 存储引擎剖析:数据文件与索引设计(二)
  • 告别昂贵语音合成服务!用GPT-SoVITS生成你的个性化AI语音
  • 【eNSP实验】OSPF单区域配置
  • 高效培训,借助课程编辑器塑造卓越团队​
  • BH1750光照传感器---附代码
  • 中国证监会副主席李明:目前A股估值水平仍处于相对低位
  • 上海青少年书法学习园开园:少年以巨笔书写《祖国万岁》
  • 2025吉林市马拉松开跑,用赛道绘制“博物馆之城”动感地图
  • 美联储计划裁员约10%
  • 江苏省委组织部副部长高颜已任南京市委常委、组织部部长
  • “家国万里时光故事会” 举行,多家庭共话家风与家国情怀