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

news2025/4/22 0:03:02

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 相关命令的使用场景、兼容性问题及安全操作方法,适用于服务器管理、故障排查等多种场景。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2339740.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【开源项目】Excel手撕AI算法深入理解(三):时序(RNN、mamba、Long Short Term Memory (LSTM)、xLSTM)

项目源码地址&#xff1a;https://github.com/ImagineAILab/ai-by-hand-excel.git 一、RNN 1. RNN 的核心思想 RNN 的设计初衷是处理序列数据&#xff08;如时间序列、文本、语音&#xff09;&#xff0c;其核心特点是&#xff1a; 隐藏状态&#xff08;Hidden State&#xff…

构建专业金融图表系统的高效路径——QtitanChart在金融行业的应用价值

QtitanChart是一个C 库&#xff0c;它代表一组控件&#xff0c;这些控件使您可以快速轻松地为应用程序提供漂亮而丰富的图表。QtitanChart在Qt.C 上实现&#xff0c;并且支持所有主要的桌面操作系统 - Windows、Linux和Mac OSX。要将QtitanChart添加到您的程序中&#xff0c;只…

多模态大语言模型arxiv论文略读(二十六)

Holistic Autonomous Driving Understanding by Bird’s-Eye-View Injected Multi-Modal Large Models ➡️ 论文标题&#xff1a;Holistic Autonomous Driving Understanding by Bird’s-Eye-View Injected Multi-Modal Large Models ➡️ 论文作者&#xff1a;Xinpeng Ding,…

Java虚拟机(JVM)平台无关?相关?

计算机的概念模型 计算机实际上就是实现了一个图灵机模型。即&#xff0c;输入参数&#xff0c;根据程序计算&#xff0c;输出结果。图灵机模型如图。 Tape是输入数据&#xff0c;Program是针对这些数据进行计算的程序&#xff0c;中间横着的方块表示的是机器的状态。 目前使…

cloudstudio学习笔记之openwebui

代码获取 git clone 参考资料 openwebui官网 https://docs.openwebui.com/getting-started/advanced-topics/development 后端启动 cd backend pip install -r requirements.txt -U sh dev.sh后端启动成功后的界面 在cloudstudio提供的vscode弹出的提示中打开浏览器并在末…

7.QT-常用控件-QWidget|font|toolTip|focusPolicy|styleSheet(C++)

font API说明font()获取当前widget的字体信息.返回QFont对象.setFont(const QFont& font)设置当前widget的字体信息. 属性说明family字体家族.⽐如"楷体",“宋体”,"微软雅⿊"等.pointSize字体⼤⼩weight字体粗细.以数值⽅式表⽰粗细程度取值范围为[…

机器学习核心算法全解析:从基础到进阶的 18 大算法模型

在机器学习领域&#xff0c;算法模型是解决实际问题的核心工具。 不同的算法适用于不同的数据场景和任务需求&#xff0c;理解它们的原理与应用是掌握机器学习的关键。 以下将详细解析 18 个核心算法模型&#xff0c;涵盖监督学习、无监督学习、集成学习和深度学习等多个领域…

线性代数 | 知识点整理 Ref 1

注&#xff1a;本文为 “线性代数 | 知识点整理” 相关文章合辑。 因 csdn 篇幅合并超限分篇连载&#xff0c;本篇为 Ref 1。 略作重排&#xff0c;未整理去重。 图片清晰度限于引文原状。 如有内容异常&#xff0c;请看原文。 线性代数知识汇总 Arrow 于 2016-11-27 16:27:5…

【深度学习入门_NLP自然语言处理】序章

本部分开始深度学习第二大部分NLP章节学习&#xff0c;找了好多资料&#xff0c;终于明确NLP的学习目标了&#xff0c;介于工作之余学习综合考量&#xff0c;还是决定以视频学习为主后期自主实践为主吧。 分享一个总图&#xff0c;其实在定位的时候很迷茫&#xff0c;单各章节…

蓝桥杯 二进制问题 刷题笔记

8.二进制问题 - 蓝桥云课 存入N的二进制每一位作为基准数组 算出方案数 从高位往低位用dfs枚举每一位是放1还是放0 #include<iostream> #include<vector> #define ll long long using namespace std;ll dp[65][65]; ll num; ll k; vector<ll> vec;ll cal(l…

mapbox基础,加载视频到地图

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:mapbox 从入门到精通 文章目录 一、🍀前言1.1 ☘️mapboxgl.Map 地图对象1.2 ☘️mapboxgl.Map style属性1.3 ☘️raster 栅格图层 api二、🍀加载视频到…

RNN - 循环神经网络(实现)

写在前面 在RNN - 循环神经网络&#xff08;概念介绍&#xff09;中&#xff0c;介绍了一下 RNN 的相关概念&#xff0c;下面就基于概念对 RNN 进行两种实现。从零开始实现和简洁实现。 从 0 开始实现 首先导入必要的环境&#xff0c;使用 H.G.Wells 的时光机器数据集上训练…

【unity游戏开发入门到精通——UGUI】RectTransform矩形变换组件

注意&#xff1a;考虑到UGUI的内容比较多&#xff0c;我将UGUI的内容分开&#xff0c;并全部整合放在【unity游戏开发——UGUI】专栏里&#xff0c;感兴趣的小伙伴可以前往逐一查看学习。 文章目录 一、RectTransform组件介绍二、RectTransform组件参数1、Pivot 轴心点2、Ancho…

C语言复习笔记--字符函数和字符串函数(上)

在编程的过程中&#xff0c;我们经常要处理字符和字符串&#xff0c;为了⽅便操作字符和字符串&#xff0c;C语⾔标准库中提供了 ⼀系列库函数&#xff0c;接下来我们就学习⼀下这些函数。 首先来看下字符函数. 字符分类函数 C语⾔中有⼀系列的函数是专⻔做字符分类的&#xf…

Apipost,前端后端测试都在用的接口设计调试工具

大家好&#xff0c;我是袁庭新。给大家介绍一个后端、前端、测试都在用的接口测试工具——Apipost。Apipost主要分为5个大模块&#xff0c;贯穿一个API从设计到测试完成上线的研发全周期。 1.Apipost介绍 Apipost官方地址&#xff1a;https://www.apipost.cn。如下图所示。 A…

十倍开发效率 - IDEA 插件之RestfulBox - API

提高效率不是为了完成更多的任务&#xff0c;而是有充足的时间摸鱼。 快速体验 RestfulBox - API 是 IDEA 的插件&#xff0c;适合本地测试接口&#xff0c;完全不需要对项目进行任何以来。 接口管理&#xff1a;支持接口扫描、浏览、搜索、跳转、导入和导出。支持接口请求&a…

2025 年网络安全的挑战与机遇

2024 年是网络安全领域风云变幻的一年。从备受瞩目的勒索软件攻击所带来的影响&#xff0c;到人工智能工具日益商品化&#xff0c;挑战不断增加。 关键基础设施的漏洞变得极为明显&#xff0c;身份盗窃次数也达到了前所未有的程度。然而&#xff0c;在这一片混乱之中&#xff…

IP数据报

IP数据报组成 IP数据报&#xff08;IP Datagram&#xff09;是网络中传输数据的基本单位。 IP数据报头部 版本&#xff08;Version&#xff09; 4bit 告诉我们使用的是哪种IP协议。IPv4版本是“4”&#xff0c;IPv6版本是“6”。 头部长度&#xff08;IHL&#xff0c;Intern…

【Lua语言】Lua语言快速入门

初始Lua Lua是一种轻量小巧的脚本语言&#xff0c;他使用标准C语言编写并以源代码形式开放。这意味着Lua虚拟机可以很方便的嵌入别的程序中&#xff0c;从而为应用程序提供灵活的扩展和定制功能。同时&#xff0c;在目前脚本引擎中&#xff0c;Lua的运行速度占有绝对优势。 变…

Silverlight发展历程(微软2021年已经停止支持Silverlight 5)

文章目录 Microsoft Silverlight 发展历程引言起源与背景&#xff08;2006-2007&#xff09;互联网技术格局与微软的挑战WPF/E 项目的启动 Silverlight 1.0 的诞生&#xff08;2007&#xff09;正式命名与首次发布初步的市场定位 Silverlight 2.0&#xff1a;真正的突破&#x…