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

Linux 引导过程与服务控制

1 Linux 操作系统引导过程

系统引导是指操作系统运行的开始,在用户能够正常登录到系统之前,Linux 操作系统的引导过程将完成一系列的初始化任务,并加载必要的程序和命令终端,为用户登录做好准备。

1.1 Linux操作系统引导过程总览

在这里插入图片描述

1.1.1 开机自检

  • 检测出第一个能够引导系统的设备,比如硬盘或者光驱
    • 服务器主机开机以后,将根据主板BIOS中的设置对CPU(Central Processing Unit,中央处理器)、内存、显卡、键盘等设备进行初步检测,检测成功后根据预设的启动顺序移交系统控制权,大多时候会移交给本机硬盘。

1.1.2 MBR引导

  • 运行放在MBR扇区里的启动GRUB引导程序
    • 当从本机硬盘中启动系统时,首先根据硬盘第一个扇区中MBR(Master Boot Record,主引导记录)的设置,将系统控制权传递给包含操作系统引导文件的分区;或者直接根据MBR 记录中的引导信息调用启动菜单(如GRUB)。

1.1.3 GRUB菜单

  • GRUB引导程序通过读取GRUB配置文件来获取内核和镜像文件系统的设置和路径位置
    • 对于 Linux 操作系统来说,GRUB(GRandUnifiedBootloader,统一启动加载器)是使用最为广泛的多系统引导器程序。
    • 系统控制权传递给 GRUB 以后,将会显示启动菜单给用户选择,并根据所选项(或采用默认值)加载Linux内核文件,然后将系统控制权转交给内核。需要注意的是,CentOS 7 采用的是GRUB2 启动引导器。

1.1.4 加载Linux内核

  • 把内核和镜像文件系统加载到内存中
    • Linux内核是一个预先编译好的特殊二进制文件,介于各种硬件资源与系统程序之间,负责资源分配与调度。
    • 内核接过系统控制权以后,将完全掌控整个Linux操作系统的运行过程。

1.1.5 init进程初始化

  • 加载硬件驱动程序,内核把init进程加载到内存中运行
    • 为了完成进一步的系统引导过程,Linux 内核首先将系统中的“/sbin/init”程序加载到内存中运行(运行中的程序称为进程),init 进程负责完成一系列的系统初始化过程,最后等待用户进行登录。

1.2 系统初始化进程(init 进程)及文件

  • Linux 操作系统中的进程使用数字进行标记,每个进程的身份标记号称为PID
  • 在引导Linux 操作系统的过程中,**“/sbin/init”是内核第一个加载的程序,因此init 进程对应的PID号总是为1 **。
  • init 进程运行以后将陆续执行系统中的其他程序,不断生成新的进程,这些进程称为init进程的子进程。反过来说,init 进程是这些进程的父进程。
  • 当然,这些子进程也可以进一步生成各自的子进程,依次不断繁衍下去,最终构成一棵枝繁叶茂的进程树,共同为用户提供服务。
  • 从上述可以看出,init 进程是维持整个Linux操作系统运行的所有进程的“始祖”,因此init 进程是不允许被轻易终止的。
  • 需要切换不同的系统运行状态时,可以向init进程发送正确的执行参数,由init 自身来完成相关操作。

1.3 MBR扇区故障

1.3.1 故障原因

  • 病毒、木马等造成的破坏
  • 不正确的分区操作、磁盘读写误操作

1.3.2 故障现象

  • 找不到引导程序,启动中断
  • 无法加载操作系统,开机后黑屏

1.3.3 解决思路

  • 应提前作好备份文件
  • 以安装光盘引导进入急救模式
  • 从备份文件中恢复

1.4 GRUB引导故障

1.4.1 故障原因

  • MBR中的GRUB引导程序遭到破坏
  • grub.conf文件丢失、引导配置有误

1.4.2 故障现象

  • 系统引导停滞,显示“grub>”提示符

1.4.3 解决思路

  • 尝试手动输入引导命令
  • 进入急救模式,重写或者从备份中恢复grub.conf
  • 向 MBR 扇区中重建grub程序

1.5 修复GRUB引导故障

  • 修复GRUB引导故障可以通过手动输入引导命令来完成
  1. 启动进入Live CD/USB
    • 使用可启动的Ubuntu Live CD或USB启动计算机
    • 选择 “Try Ubuntu” 而不是 “Install Ubuntu”
  2. 打开终端
    • 在Live环境中打开终端
    • 可以尝试通过按 Ctrl + Alt + T 快捷键来打开
  3. 挂载根文件系统
    • 找到根分区并将其挂载到/mnt目录下(通常是sda1)
    • sudo mount /dev/sdXn /mnt
  4. 绑定必要的文件系统
    • 绑定/proc, /sys, 和/dev文件系统以便 chroot 环境可以正常工作
      • sudo mount --bind /dev /mnt/dev
      • sudo mount --bind /proc /mnt/proc
      • sudo mount --bind /sys /mnt/sys
  5. chroot 到安装环境
    • 使用chroot 命令切换到Ubuntu安装环境
    • sudo chroot /mnt
  6. 重新安装GRUB
    • 使用grub-install命令重新安装GRUB到MBR(主引导记录)
    • grub-install /dev/sdX
      • 替换sdX 为硬盘设备名,例如sda
  7. 更新GRUB配置
    • 使用update-grub命令更新GRUB配置文件
    • lupdate-grub
  8. 卸载之前挂载的所有文件系统
    • sudo umount /mnt/dev
    • sudo umount /mnt/proc
    • sudo umount /mnt/sys
    • sudo umount /mnt
  9. 重启系统

2 Linux系统备份

系统备份是指将计算机操作系统、应用程序和系统设置等重要信息复制并存储到其他存储介质中,以防止因系统故障、病毒攻击、硬件损坏或人为误操作等原因导致的数据丢失或系统无法正常运行。

2.1 备份系统

备份系统是一个重要的任务,可以在系统出现问题时恢复到之前的稳定状态。

2.1.1 备份方法

  • 方法一:使用 tar 命令进行文件级备份
  • 方法二:使用 dd 命令进行磁盘级备份
  • 方法三:使用工具进行磁盘镜像备份
    • 如 Clonezilla,Timeshift等

2.1.2 备份类型

  • 系统备份:备份整个操作系统,包括系统文件、注册表、驱动程序等,以便在系统崩溃时能够快速恢复到备份时的状态。
  • 数据备份:备份用户数据,如文档、图片、视频、数据库等,以防止数据丢失。

2.1.3 备份形式

  • 完整备份:备份所有选定的数据,包括系统和用户数据
  • 增量备份:只备份自上次备份以来发生变化的数据
  • 差异备份:备份自上次完整备份以来发生变化的数据。

建议至少每周进行一次完整系统备份,用户数据根据重要性每日/每周备份

2.2 使用tar命令进行文件级备份

2.2.1 准备外部存储设备

插入一个足够大的外部硬盘或USB 设备来存储备份文件。

2.2.2 挂载外部存储设备

# 假设设备为/dev/sdb1
sudo mount /dev/sdb1 /mnt

2.2.3 创建备份目录

# 在外部存储设备上创建一个目录来存放备份文件
mkdir /mnt/backup

2.2.4 使用tar命令进行备份

# 使用 tar 命令备份整个根文件系统
# 排除不必要的目录,如/proc,/sys,/tmp,/run,/media,/lost+found等
sudo tar -cvpzf /mnt/backup/ubuntu_backup_$(date +%F).tar.gz \
--exclude=/mnt/backup \
--exclude=/proc \
--exclude=/tmp \
--exclude=/mnt \
--exclude=/dev \
--exclude=/sys \
--exclude=/run \
--exclude=/media \
--exclude=/var/log \
--exclude=/var/cache/apt/archives /

2.2.5 验证备份

# 解压备份文件以验证其完整性(可选)
tar -tzf /mnt/backup/ubuntu_22.04_backup.tar.gz

2.2.6 卸载外部存储设备

# 备份完成后,安全地卸载外部存储设备
sudo umount /mnt

2.2.7 备份恢复

# 通过 Live USB 启动后操作
sudo mkdir /mnt/root
# sdX#为原系统分区
sudo mount /dev/sdX# /mnt/root 
sudo tar -xvpzf /path/to/backup.tar.gz -C/mnt/root--numeric-owner
sudo umount /mnt/root

2.3 dd命令磁盘镜像备份

适用场景: 严格镜像整个磁盘(慎用!需充足存储空间)

2.3.1 备份系统

sudo dd if=/dev/sdX of=/path/to/backup.imgbs=4M status=progress
  • l if=/dev/sda: 输入文件(这里是源设备)
  • of=backup.img: 输出文件(这里是目标镜像文件)
  • bs=4M: 块大小为 4MB,可以根据需要调整以优化性能
  • status=progress: 显示进度信息

2.3.2 恢复系统

# 从 backup.img 文件恢复到硬盘/dev/sda
sudo dd if=backup.img of=/dev/sdabs=4Mstatus=progress
  • if=backup.img: 输入文件(这里是源镜像文件)
  • of=/dev/sda: 输出文件(这里是目标设备)
  • bs=4M: 块大小为 4MB,与备份时保持一致
  • status=progress: 显示进度信息

2.3.3 注意事项

  • 确保有足够的空间
    在执行备份操作之前,请确保输出文件的存储位置有足够的空间。
  • 小心选择输入输出路径
    错误的选择可能导致数据丢失,仔细核对 if 和 of 参数。
  • 关闭正在运行的服务
    为了保证备份的一致性,建议在备份期间关闭不必要的服务或进入单用户模式。
  • 权限要求
    通常需要超级用户权限才能读写磁盘分区。

2.4 使用Clonezilla 进行磁盘镜像备份

  1. 下载并创建 Clonezilla 启动USB/DVD
    • 访问 Clonezilla 官方网站下载ClonezillaISO文件。
    • 使用 Rufus 或 Etcher 创建Clonezilla 启动USB/DVD。
  2. 启动到 Clonezilla
    • 插入 Clonezilla 启动介质并重启计算机。
    • 在启动时进入 BIOS 设置并将启动顺序调整为首先从USB/DVD 启动。
    • 保存设置并退出 BIOS。
    • 计算机将从 Clonezilla 启动并显示Clonezilla主界面。
  3. 选择语言和地区
    • 选择语言和地区,然后点击"OK"。
  4. 选择模式
    • 选择 “Start_Clonezilla” 并点击"Enter"。
  5. 选择磁盘到磁盘克隆
    • 选择 “device-device” 模式进行磁盘到磁盘克隆,或者选择 “disk-to-image” 模式进行磁盘到映像文件的克隆。
  6. 选择源磁盘和目标磁盘
    • 如果选择 “device-device” 模式,选择源磁盘和目标磁盘。
    • 如果选择 “disk-to-image” 模式,选择源磁盘和目标位置(通常是外部存储设备上的某个分区)。
  7. 开始克隆
    • 按照提示完成克隆过程。
  8. 完成备份
    • 克隆完成后,关闭 Clonezilla 并移除启动介质。
    • 重启系统以恢复正常操作。
  • Clonezilla 是一个强大的工具,可以进行精确的磁盘镜像备份,但需要小心操作以避免数据丢失。
  • 在进行磁盘到磁盘克隆时,目标磁盘必须有足够的空间,并且建议先备份重要数据。

2.5 Timeshift

2.5.1 备份系统

  • 适用场景: 系统级备份,可恢复系统设置、已安装软件和配置文件
  • 安装 Timeshift:
    • sudo apt update && sudo apt install timeshiftp
  • 运行 Timeshift:
    • sudo timeshift --create
  • 首次使用向导配置
    • 选择备份类型:RSYNC(推荐)或BTRFS(仅支持Btrfs文件系统)
    • 选择备份目标位置(外部硬盘或网络存储)
    • 设置备份频率(每日/每周/每月)

2.5.2 回复系统

  • 前提: 已通过 Live USB 启动Ubuntu
  • 挂载原有系统分区(假设根分区为/dev/sda1)
    • sudo mount /dev/sda1 /mnt
  • 安装 Timeshift
    • sudo apt install timeshift
  • 运行 Timeshift,选择之前备份的快照恢复

2.6 用户数据备份

  • 用推荐工具 Deja Dup
  • 适用场景: 仅备份个人文件(文档、图片、下载等)
    1. 安装 Deja Dup(默认可能已安装)
      sudo apt install deja-dup
    2. 打开 Deja Dup -> 设置备份位置(云存储或本地磁盘)
    3. 手动触发备份:点击立即备份

3 Linux root用户密码遗忘

3.1 遗忘root用户密码

  • 故障原因: 遗忘root用户的密码
  • 故障现象
    • 无法进行需要root权限的管理操作
    • 若没有其他可用帐号,将无法登录系统
  • 解决思路:进入急救模式,重设密码

3.2 修复过程

3.2.1 首先开机按住shift按键进入GRUB模式

  • GRUB(Grand Unified Bootloader)是一个流行的引导加载程序,它负责在计算机启动时加载并运行操作系统。它充当了计算机硬件和操作系统之间的桥梁。
    • Ubuntu。这是启动 Ubuntu 操作系统的默认选项,会使用预设的标准内核和启动参数。选择这个选项会直接启动到正常的Ubuntu桌面环境。大多数情况下都是默认选择这个选项。
    • Ubuntu 高级选项。这个选项会展开一个子菜单,提供更多启动Ubuntu 的选项,当需要对 Ubuntu 的启动过程进行更精细的控制时,例如选择不同的内核、修复系统问题、进行内存测试等,可以使用这个选项。

3.2.2 选择第二项高级选项->恢复模式

在这里插入图片描述
在这里插入图片描述

3.2.3 进入恢复菜单后

  • 用箭头键选择「dpkg」,按Tab键选中「OK」,然后按回车确认
    在这里插入图片描述
    • Resume
      这个选项会退出_recovery mode_并尝试正常启动Ubuntu。它会从当前状态恢复到正常的启动过程,如果觉得问题已经解决或不需要进一步的维护,可以选择这个选项。
    • Clean
      这个选项会清理系统中的旧安装文件和不必要的包,以释放磁盘空间。它特别有用当的系统由于磁盘空间不足而无法正常启动时。
    • Dpkg
      这个选项会使用 dpkg 工具修复系统中的破损包。如果的系统升级或安装过程被中断,这个选项可以帮助恢复和修复包管理器的问题
    • Fsck
      这个选项会执行文件系统检查(File SystemCheck),检查并尝试修复文件系统中的错误。特别适用于系统在突然断电后可能出现的文件系统问题
    • Grub
      这个选项会更新 GRUB 引导加载程序,扫描SSD或其他存储设备上的可用操作系统,并将它们添加到GRUB启动菜单中。注意,这个操作需要小心,因为如果破坏了GRUB,可能会失去访问_recovery mode_的能力
    • Network
      这个选项会启用网络功能,允许通过互联网访问资源,但这并不意味着它会自动连接到无线网络。需要手动配置网络连接
    • Root
      这个选项会进入 root 终端 shell,给以超级用户权限执行命令的能力。可以使用这个 shell 来安装或卸载软件,编辑配置文件,手动修复 GRUB 等高级维护任务
    • System-summary
      这个选项会显示的系统的概要信息,包括硬件和软件配置。如果需要向 IT 管理员或技术支持人员提供系统信息,可以使用这个选项

3.2.4 选择「Yes」继续

在这里插入图片描述

3.2.5 系统将更新包缓存

  • 当系统询问是否升级时,选择忽略并输入 d 查看详情。
    在这里插入图片描述
    在这里插入图片描述

3.2.6 进入shell终端

  • 包的详细信息会显示出来,此时输入命令进入root Shell
    • !/bin/bash
      在这里插入图片描述
      在这里插入图片描述

3.2.7 修改root密码

  • 现在我们就拿到了root 访问权限,可以使用命令重置 root 密码:
    • passwd
    • 系统会要求输入两次新密码进行确认。出于安全考虑,输入的密码不会显示出来。
  • 完成后,使用reboot命令重启系统,就可以用新密码登录 root 用户账户了

在这里插入图片描述

4 Linux服务控制

4.1 Systemd简介

  • systemd 是一种用于Linux 操作系统的系统和服务管理器,被设计为 init 系统的替代品。它负责在系统启动时启动系统组件,以及在系统运行期间管理系统进程。
  • 自从 Linux 内核 2.6.32 版本后,许多主流的Linux发行版,如 Fedora、Ubuntu、Debian和CentOS,都采用了 systemd 作为默认的初始化系统。

4.2 Systemd核心概念

4.2.1 单元(Units)

systemd 以单元为基本管理对象,每个单元代表系统中的一个资源或服务

单元类型扩展名说明
Service.service描述一个系统服务
Socket.socket描述一个进程间通信的套接字
Device.device描述一个内核识别的设备文件
Mount.mount描述一个文件系统的挂载点
Automount.automount描述一个文件系统的自动挂载点
Swap.swap描述一个内存交换设备或交换文件
Path.path描述一个文件系统中文件或目录
Timer.timer描述一个定时器(用于实现类似cron的任务调度)
Snapshot.snapshot用于保存一个systemd的状态
Scope.scope使用systemd的总线接口以编程的方式创建外部进程
Slice.slice描述居于Cgroup的一组通过层次组织的管理系统进程
Target.target描述一组systemd的单元

4.2.2 单元文件

  • 定义单元的行为和配置,通常位于/lib/systemd/system/ 或/etc/systemd/system/目录下。
  • 单元文件的基本结构包括[Unit]、[Service]、[Install]等。
  • 文件主要有四种类型:.mount、.service、.target、.wants
    • .mount文件
      • 定义了一个挂载点,[Mount]节点里配置了What,Where,Type三个数据项。
      • 等同于:mount -t hugetlbfs /dev/hugepages hugetlbfs
    • .service文件
      • 定义了一个服务,分为[Unit],[Service],[Install]三个小节
      • [Unit]
        • Description:描述
        • After:在network.target,auditd.service启动后才启动
        • ConditionPathExists:执行条件
      • [Service]
        • EnvironmentFile:变量所在文件
        • ExecStart:执行启动脚本
        • Restart:fail时重启
      • [Install]
        • Alias:服务别名
        • WangtedBy:多用户模式下需要的
    • .target
      • 定义了一些基础的组件,供.service文件调用
    • .wants文件/目录
      • 定义了要执行的文件集合
      • 每次执行,.wants文件夹里面的文件都会执行

4.2.3 依赖关系

  • 单元之间可以通过依赖关系(如Requires、Wants、Before、After)来定义启动顺序和条件。

4.3 系统服务控制

  • 服务:特殊的应用程序,一般在后台一直执行
    • 系统服务:给系统提供服务功能
    • 应用服务:给人提供服务
  • 通过systemctl 命令工具可以实现对指定系统服务的控制
  • 语法:systemctl 控制类型 服务名称
  • 常见控制类型:
    • start(启动):运行指定的系统服务程序,实现服务功能。
    • stop(停止):终止指定的系统服务程序,关闭相应的功能。
    • restart(重启):先退出,再重新运行指定的系统服务程序。
    • reload(重载):不退出服务程序,只是刷新配置。在某些服务中与restart 的操作相同。
    • status(查看状态):查看指定的系统服务的运行状态及相关信息。

4.3.1 管理服务

  • 启动服务:systemctl start 服务名.service
  • 停止服务:systemctl stop 服务名.service
  • 重启服务:systemctl restart 服务名.service
  • 重新加载服务配置(不重启服务):systemctl reload 服务名.service
  • 查看服务状态:systemctl status 服务名.service

4.3.2 启用/禁用服务自启动

  • 设置服务开机自启动:systemctl enable 服务名.servicep
  • 取消服务开机自启动:systemctl disable 服务名.servicep
  • 查看服务是否设置为开机自启动:systemctl is-enabled 服务名.service

4.3.3 查看系统状态

  • 查看系统所有已启动的服务和单元:systemctl list-units
  • 查看所有可用的单元:systemctl list-unit-files
  • 查看启动失败的服务:systemctl --failed

4.4 示例

  • 控制类型“restart”用在需要释放旧的资源全部从头开始的情况,它会先关闭相应的服务程序,然后重新运行。
  • 例如:当在网卡的配置文件中设置了新的IP地址以后,为了激活新的 IP 地址,可以重新启动名称为network的系统服务。
    • systemctl restart networkd-dispatcher.service
  • 注意
    • 对于在实际生产环境中运行的服务器,不要轻易执行stop或restart 操作,以免造成客户端访问中断,带来不必要的损失。
    • 若只是要为系统服务启用新的配置,可以采用相对温和一些的“reload”参数重新加载配置,而不是生硬地执行“restart”。
  • 例如,对正在为用户提供Web 访问的httpd服务,当需要应用新的配置时
    • 建议执行:systemctl reloadhttpd.service 命令来重新载入配置
    • 而不是执行:systemctl restart httpd.service
  • 当使用systemctl status 服务名.service时,可以查看服务的当前状态
    在这里插入图片描述
    • Loaded(服务状态):表示服务单元配置文件是否已加载,并显示服务对应的绝对路径以及是否启用。可能的状态包括:
      • enabled:服务已启用,将在开机时自动启动
      • disabled:服务已禁用,开机时不会自动启动
      • static:服务不能自行启动,但可能被其他启用的服务唤醒
      • masked:服务已被屏蔽,无法启动,通常是因为存在指向 /dev/null 的符号链接
    • Active:表示服务的当前活动状态,可能的状态包括:
      • active (running):服务正在运行
      • active (exited):服务已成功执行完毕并退出,通常用于一次性任务
      • active (waiting):服务正在运行,但正在等待其他事件才能继续处理
      • inactive:服务当前未运行
    • Main PID:显示服务的主进程ID(PID),可用于进一步监控或管理服务进程。
    • CGroup:显示服务所属的控制组(CGroup)信息,控制组用于资源管理和限制。
    • Memory:内存使用信息
    • CPU:CPU使用信息
    • 日志信息:显示服务的日志输出,包括启动信息、运行状态和可能的错误消息,有助于了解服务的运行情况和排查问题。

4.5 特殊模式

  • 进入暂停模式:systemctl suspend
  • 进入休眠模式:systemctl hibernate
  • 强制进入救援模式:systemctl rescue
  • 强制进入紧急救援模式:systemctl emergency

5 Linux运行级别

  • 运行级别(Runlevel)是Linux系统中用于定义系统启动和运行状态的一种机制。
  • 系统根据不同的运行级别启动不同的服务和程序,以满足不同的使用需求。

5.1 运行级别的定义和用途

Linux系统共有7个运行级别,每个级别都有特定的用途:

  • 运行级别0:所有进程被终止,机器将有序地停止,通常用于关机。
  • 运行级别1:单用户模式,仅启动必要的系统服务,用于系统维护和修复。
  • 运行级别2:多用户模式,但不启动图形界面。
  • 运行级别3:完全多用户模式,启动图形界面,但不启动图形化管理器。
  • 运行级别4:系统未使用,保留级别。
  • 运行级别5:启动图形界面,用户可以登录并进行操作。
  • 运行级别6:系统正常关闭并重启。

5.2 systemd中的Target概念

  • 在systemd系统中,传统的“运行级别”概念被更灵活的“target”替代。每个target代表系统应当达到的一种服务/功能层级。
运行级别Systemd的Target说明
0target关机状态,使用该级别时将会关闭主机
1rescue.target单用户模式,不需要密码验证即可登录系统,多用于系统维护
2multi-user.target用户定义/域特定运行级别。默认等同于3
3multi-user.target字符界面的完整多用户模式,大多数服务器主机运行在此级别
4multi-user.target用户定义/域特定运行级别。默认等同于3
5graphical.target图形界面的多用户模式,提供了图形桌面操作环境
6reboot.target重新启动,使用该级别时将会重启主机
  • 不同的 target 代表系统不同的运行状态,所启用的服务或程序也不一样。
  • 例如,对于互联网中的网站、电子邮件等服务器来说,只需要运行在文本模式就可以了,无须启用图形桌面程序。

5.3 查看运行级别

  1. runlevel命令
  2. systemctl工具
runlevel
systemctl get-default

在这里插入图片描述

5.4 切换运行级别

  • 当用户需要将系统转换为其他的target 时,可以通过传统的 init 程序进行,只要使用与运行级别相对应的数字(0~6)作为命令参数即可,或者使用systemctl命令进行目标切换。
  • 例如,为了节省系统资源,将系统运行的target由图形模式5切换为字符模式3,可以执行
    • init 3 或 systemctl isolate multi-user.target
  • 命令查看系统中默认有多少种target
    • systemctl list-units --type=target -all
  • 通过切换 target 的操作,还可以实现两个特殊的功能,那就是关机和重启。
    • 运行级别 0、6 分别对应关机、重启这两个特殊模式,因此只要执行“init 0”与“init 6”命令就可以实现相应的关机、重启操作了
      • init 0 //关闭当前系统
      • init 6 //重启当前系统
    • 而运行级别 0、6 又分别对应着systemd的“poweroff.target”和“reboot.target”目标,因此执行“systemctl poweroff”与“systemctlreboot”命令也可以实现相应的关机、重启操作
      • systemctl poweroff //关闭当前系统
      • systemctl reboot //重启当前系统

5.5 永久切换运行级别

  • 上述内容中的运行级别切换均为临时切换,若要永久切换运行级别,可通过ln(链接)命令指定当前系统的默认运行级别。
  • 执行如下命令可将当前系统的开机默认运行级别从graphical.target 更改为multi-user.target。
    • ln -sf /lib/systemd/system/multi-user.target/etc/systemd/system/default.target
      • -s 选项表示创建软链接
      • -f 表示强行删除任何已存在的目标文件
http://www.xdnf.cn/news/13495.html

相关文章:

  • TBvision 静态测试以及生成报告教程
  • GlusterFS 分布式文件系统
  • 【笔记】NVIDIA AI Workbench 中 sudo 密码问题排查与解决
  • 电流传感器在汽车中的应用:从BMS电池管理到电机控制的工程解析
  • 纯血Harmony NETX 5小游戏实践:趣味三消游戏(附源文件)
  • 「Java流程控制」顺序结构
  • 华为Pura 80系列发布 6499元起
  • 如何利用测试Agent自动分析覆盖率报告与缺陷趋势
  • 第十四章 Linux实操篇——进程管理(重点)
  • 锂电池(3V/3.3V/3.7V)升压 5V 全场景方案:大小电流 DC-DC 芯片参数对比与选型指南
  • 台湾TEMI协会竞赛——1、龙舟机器人组装教学
  • Spring事务同步器(TransactionSynchronizationManager)+ 事务钩子函数的使用案例
  • 行为设计模式之Observer(观察者)
  • 【20】番茄叶片病害数据集(有v5/v8模型)/YOLO番茄叶片病害检测
  • 分布式ID实现方案实战示例总结
  • Qt工作总结06 < QMap<> 和QVector<QPair>、以及QPair<>和QMakePair<> >
  • Windows 安装以及配置Docker全流程 - Docker Toolbox
  • 聊天室项目多进程纯C版
  • JAVA学习
  • 粉尘检测仪监测技术方案
  • 黑马教程强化day2-2
  • 新闻类鸿蒙应用全链路运维指南:高并发场景下的稳定保障
  • Android的Dalvik和ART
  • 树莓派超全系列教程文档--(64)rpicam-apps可用选项介绍之相机控制选项
  • 顶级视频生成大模型分析:Seedance 1.0 Pro (字节跳动) - 新晋榜首
  • 洛谷B3612 【深进1.例1】求区间和
  • 论文笔记 -《MegaBlocks- Efficient Sparse Training with Mixture-of-Experts》
  • 【Cross-Language Binary-Source Code Matching with Intermediate Representations】
  • SD卡及FATFS文件系统
  • 马里兰大学:LLM过度思考降低性能