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

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


相关文章:

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

Linux init 相关命令的完整使用指南—目录 一、init 系统简介二、运行级别&#xff08;Runlevel&#xff09;详解三、常用 init 命令及使用方法1. 切换运行级别2. 查看当前运行级别3. 服务管理4. 紧急模式&#xff08;Rescue Mode&#xff09; 四、不同 Init 系统的兼容性1. Sy…...

【开源项目】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…...

嵌入式音视频开发指南:从MPP框架到QT实战全解析

嵌入式音视频开发指南:从MPP框架到QT实战全解析 一、音视频技术全景概述 1.1 技术演进里程碑 2003-2010年:标清时代(H.264/AVC + RTMP)2011-2018年:高清时代(H.265/HEVC + WebRTC)2019-至今:智能时代(AV1 + AI编解码 + 低延迟传输)1.2 现代音视频技术栈 #mermaid-s…...

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

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

如何通过window端来ssh连接本地虚拟机的ubuntu

首先在 Ubuntu 虚拟机上安装和配置 SSH 服务&#xff1a; # 安装 SSH 服务器 sudo apt update sudo apt install openssh-server# 检查 SSH 服务状态 sudo systemctl status ssh# 如果没有启动&#xff0c;则启动 SSH 服务 sudo systemctl start ssh# 设置开机自启动 sudo sys…...

问题:el-tree点击某节点的复选框由半选状态更改为全选状态以后,点击该节点展开,懒加载出来子节点数据以后,该节点又变为半选状态

具体问题场景&#xff1a; 用户点击父节点复选框将其从半选变为全选&#xff08;此时子节点尚未加载&#xff09;。 点击节点展开触发懒加载&#xff0c;加载子节点。 子节点加载后&#xff0c;组件重新计算父节点状态&#xff0c;发现并非所有子节点被选中&#xff0c;因此父节…...

【Rust 精进之路之第8篇-工具赋能】深入 Cargo:依赖管理、构建配置与工作空间 (Workspace)

系列: Rust 精进之路:构建可靠、高效软件的底层逻辑 作者: 码觉客 发布日期: 2025-04-20 引言:超越构建,Cargo 是 Rust 生态的引擎 在我们的 Rust 学习之旅初期(第二篇),我们已经与 Cargo 有过初步的接触。我们学会了使用 cargo new 创建项目骨架,用 cargo build 编…...

多模态大语言模型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;中间横着的方块表示的是机器的状态。 目前使…...

Ubuntu 安装 Docker 教程(官方推荐方式)

✅ 步骤 1&#xff1a;卸载旧版本&#xff08;如果有&#xff09; for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done---### ✅ 步骤 2&#xff1a;更新 APT 索引并安装依赖项bash sudo a…...

Win10 C盘空间不足清理方法

当Windows 10系统的C盘空间不足时&#xff0c;可以采取以下方法进行清理&#xff1a; 1. 清理临时文件 打开“设置” > “系统” > “存储”。 点击“临时文件”&#xff0c;勾选要删除的临时文件、系统缓存等&#xff0c;然后点击“删除文件”。 2. 使用磁盘清理工具…...

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;单各章节…...

Windows常用维护命令

系统信息查询 systeminfo&#xff1a;查看系统详细信息&#xff0c;如操作系统版本、处理器信息、内存配置等。hostname&#xff1a;显示计算机名称。ver&#xff1a;显示 Windows 版本。 网络诊断 ipconfig&#xff1a;查看 IP 配置&#xff0c;如 IP 地址、子网掩码、网关等。…...

Java 2025:解锁未来5大技术趋势,Kotlin融合AI新篇

各位Java开发者们好&#xff01;&#x1f680; 2025年的Java世界正在经历一场前所未有的技术变革。作为深耕Java领域多年的技术博主&#xff0c;今天我将带大家深入探索Java生态即将迎来的5大技术趋势&#xff0c;特别是Kotlin的深度融合和AI技术的新篇章。准备好了吗&#xff…...

IcePlayer音乐播放器项目分析及学习指南

IcePlayer音乐播放器项目分析及学习指南 项目概述 IcePlayer是一个基于Qt5框架开发的音乐播放器应用程序&#xff0c;使用Visual Studio 2013作为开发环境。该项目实现了音乐播放、歌词显示、专辑图片获取等功能&#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…...

20. git diff

基本概述 git diff的作用是&#xff1a;比较代码差异 基本用法 1.工作区 VS 暂存区 git diff [file]2.暂存区 VS 最新提交 git diff --staged [file] # 或 git diff --cached [file]3.工作区 VS 最新提交 git diff HEAD [file]高级用法 1.比较两个提交间的差异 git dif…...

深入剖析 MySQL 中用户授权机制及操作

在数据库管理的庞大体系中&#xff0c;MySQL 作为一款广泛应用的开源关系型数据库管理系统&#xff0c;其用户授权机制对于保障数据安全、确保数据库稳定运行以及满足多样化的业务需求起着举足轻重的作用。当我们遭遇 “Access denied for user icoolkj% to database icoolkj-a…...

mapbox基础,加载视频到地图

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

synchronized 与分布式锁

1. synchronized 关键字 定义&#xff1a; synchronized 是 Java 提供的一个内置锁机制&#xff0c;用于控制多线程对共享资源的并发访问。 它可以修饰方法或代码块&#xff0c;确保同一时刻只有一个线程可以执行被 synchronized 修饰的代码。作用范围&#xff1a; 只能用于单…...

获取视频封面

目录 实现方式注意事项代码实现 实现方式 通过 video 元素canvas 元素的方式实现 生成 video 和 canvas 元素当 video 元素资源加载完成时&#xff0c;将 video 元素绘制到 canvas 画布上&#xff0c;然后通过 toBlob 或则 toDataURL 获取到对应的封面图片资源 注意事项 vid…...

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

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

【FAQ】HarmonyOS SDK 闭源开放能力 —Health Service Kit

1.问题描述&#xff1a; 按照官方文档调用healthStore API申请用户授权&#xff1b;有拉起授权弹窗&#xff0c;但是无回调&#xff0c;检查权限接口也无回调。 解决方案&#xff1a; 1、接口调用前&#xff0c;需先使用init方法进行初始化&#xff0c;没有回调的问题请确认…...

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

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

【Rust 精进之路之第4篇-数据基石·上】标量类型:整数、浮点数、布尔与字符的精妙之处

系列&#xff1a; Rust 精进之路&#xff1a;构建可靠、高效软件的底层逻辑 作者&#xff1a; 码觉客 发布日期&#xff1a; 2025-04-20 引言&#xff1a;构成万物的“原子”——标量类型 在上一篇文章【变量观】中&#xff0c;我们深入探讨了 Rust 如何通过 let、mut、const…...

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

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