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

系统启动与基础命令

系统启动原理

启动流程

  1. 计算机接通电源后,系统固件(UEFI 或传统 BIOS)首先执行开机自检(POST),检测 CPU、内存、硬盘等核心硬件是否正常。
    -配置说明:启动早期按特定快捷键(如 F2)可进入固件配置界面,调整启动顺序、硬件参数等。
  2. 固件按配置的启动顺序搜索启动设备,读取磁盘主启动记录(MBR)中的引导加载器(CentOS 7 默认为 GRUB2),并将系统控制权移交 GRUB2。
    -配置说明:通过grub2-install命令可将 GRUB2 安装为磁盘默认启动加载器。
  3. GRUB2 读取/boot/grub2/grub.cfg配置文件,显示操作系统选择菜单。
    -配置说明:不可直接编辑grub.cfg,需通过修改/etc/grub.d/目录下的脚本、/etc/default/grub配置文件,再执行grub2-mkconfig命令生成新的grub.cfg
  4. 引导加载器根据选中的启动项,从磁盘加载内核(vmlinuz)和 initramfs 到内存,并将内核参数、initramfs 内存地址传递给内核。
    - initramfs 是临时内存文件系统,包含启动所需的硬件驱动、初始化脚本等,内核通过它完成硬件初始化。
    -配置说明:通过/etc/dracut.conf.d/目录、dracut命令生成 initramfs,lsinitrd命令可查看 initramfs 内容。
  5. initramfs 执行/sbin/init(CentOS 7 中该文件为 systemd 的软链接),作为系统首个进程(PID 1)。
    -配置说明:可通过内核参数init=command指定自定义初始化程序。
  6. systemd 加载内核命令行指定的 target,或系统默认的default.target(通常为文本/图形登录界面)。
    -配置说明:通过systemctl命令设置默认 target(如systemctl set-default multi-user.target)。
  7. default.target依赖sysinit.target,该 target 完成系统基础初始化:读取/etc/fstab挂载文件系统、激活日志服务(systemd-journald)等。
    -配置说明:通过/etc/fstab配置文件设置文件系统开机自动挂载规则。
  8. default.target激活所有配置为开机自启的 systemd 单元(如服务、定时器等)。
    -配置说明:通过systemctl enable <服务名>设置服务开机自启。
  9. default.target激活getty.target,打开 tty1 终端,提供用户登录入口。

使用本地ISO仓库安装图形化

  1. 关联ISO镜像

2.挂载光盘。

[root@centos ~19:31:58]# lsblk /dev/sr0NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sr011:014.4G0rom[root@centos ~19:32:12]# mkdir /dvd[root@centos ~19:32:17]# mount /dev/sr0 /dvdmount: /dev/sr0 is write-protected, mounting read-only[root@centos ~19:32:24]# ls /dvdCentOS_BuildTag GPL LiveOS RPM-GPG-KEY-CentOS-7 EFI images Packages RPM-GPG-KEY-CentOS-Testing-7 EULA isolinux repodata TRANS.TBL

3.配置仓库指向本地/dvd目录

# 备份原有仓库[root@centos ~19:32:31]# mkdir /etc/yum.repos.d/bak[root@centos ~19:32:39]# mv /etc/yum.repos.d/*repo /etc/yum.repos.d/bak# 创建本地仓库[root@centos ~19:32:47]# vim /etc/yum.repos.d/dvd.repo[dvd]name=CentOS-7 dvdbaseurl=file:///dvdgpgcheck=0enabled=1

4.安装图形化环境组

[root@centos ~19:34:47]# yum remove -y open-vm-tools[root@centos ~19:35:55]# yum groupinstall -y "Server with GUI" --skip-broken

系统 target 机制

目录和子目录、子文件之间关系:目录包含子目录和子文件。

  • service一个服务,例如sshd,提供远程执行命令、复制文件。
  • target 是一个可以包含service、time等对象的特殊unit。systemctl start target,激活该target包含的所有对象。

systemd 以 target 类型单元对各类系统单元(服务、挂载、设备等)进行分组管理,target 可嵌套依赖,形成层级化的启动逻辑。

传统 SysVinit 定义 7 个运行级别(0-6),CentOS 7 虽使用 systemd,但仍保留对运行级别的兼容映射,具体如下:

运行级别对应 systemd target作用描述
0-关机(halt):终止所有进程并关闭电源,对应命令shutdown -h now
1emergency.target/rescue.target单用户模式:仅 root 可登录,无网络服务,用于系统修复(如密码找回)。
2-多用户模式(无 NFS):支持多用户登录,但不启动网络文件系统,部分发行版与级别 3 功能一致。
3multi-user.target完全多用户模式(文本界面):启动所有网络服务,命令行登录,无图形界面。
4-预留级别:默认未使用,可自定义用途。
5graphical.target图形化多用户模式:在级别 3 基础上启动图形界面(GNOME/KDE),图形登录。
6-重启(reboot):终止所有进程并重启,对应命令shutdown -r now

切换当前系统的运行target

#切换为文本界面[root@centos ~13:31:33]# systemctl isolate multi-user.target#切换为图像界面[root@centos ~13:35:33]# systemctl isolate graphical.target

ROOT 密码重置

  1. 重启系统,中断 GRUB2 菜单倒计时,选中第一个内核条目并按e编辑。
  2. 定位到linux16开头的行,行尾添加rd.break(在 initramfs 移交控制权前中断),按Ctrl+x启动。
  3. 系统进入 root shell,此时根文件系统(/sysroot)为只读挂载,重新挂载为读写:
bashswitch_root:/# mount -o rw,remount /sysroot
  1. 切换根目录到 /sysroot(实际系统根目录):
shswitch_root:/# chroot /sysroot
  1. 设置新密码
bashsh-4.2#passwd
  1. 退出 chroot 环境并继续启动:
bash sh-4.2# exit switch_root:/# exit

SELinux

firewalld 管理网络数据包。

Secure Enhance Linux:给每个文件都贴上一个标签。

应用程序httpd打标签A,提供/usr/share/nginx/html目录给客户端,/usr/share/nginx/html目录也打上标签A。

生活场景:门禁卡 702 打标签 A - 702 打标签A。

Shell 特殊变量

SHELL位置参数变量

Shell 进程中的特殊状态变量

$?

作用:获取执行上一个指令的执行状态返回值:0为成功,非零为失败,这个变量最常用。

[laoma@shell ~]$lshello script.sh showargs.sh[laoma@shell ~]$echo$?0[laoma@shell ~]$ls/root ls: 无法打开目录/root: 权限不够[laoma@shell ~]$echo$?2# man ls查看,退出码含义[laoma@shell ~]$manls......Exit status:0ifOK,1ifminor problems(e.g., cannot access subdirectory),2ifserious trouble(e.g., cannot access command-line argument).

Shell 内置变量命令

bash Shell 包含一些内置命令。 这些内置命令在目录列表里是看不见的,它们由 Shell 本身提供。常用的内部命令有:echoevalexecreadshift等。

下面简单介绍几个最常用的内置命令的格式和功能。

echo

echo命令参数选项:

  • -n,不换行输出内容。
  • -e,解析转义字符(见下面的字符)

转义字符:

  • \n,换行。
  • \t,制表符(tab)。
  • \b,退格。
[root@centos bin15:49:53]# echo -n hello worldhello world[root@centos bin15:52:50][root@centos bin15:56:45]# echo -en "hell\ni"hell i[root@centos bin15:59:04]#[root@centos bin15:54:06]# echo -e "hello\tworld"hello world[root@centos bin15:54:45]# echo -n "hello" ;echo -e "\rworld"world

read

案例:开发set_pass设置密码,例如set_pass laoma,提示用户输入密码,然后设置为相应密码。

[root@centos bin16:13:27]# vim set_pass#!/bin/bashread-s-p"请输入用户$1新密码:"passwordecho$password|passwd--stdin$1[root@centos bin16:14:49]# chmod +x /root/bin/set_pass[root@centos bin16:15:10]# set_pass cyh请输入用户 cyh 新密码:Changing passwordforuser cyh. passwd: all authentication tokens updated successfully.

案例:开发工具my_select,模拟tzselect,不需要时间判断。

[root@centos bin16:23:14]# vim my_select[root@centos bin16:23:37]# chmod +x my_select[root@centos bin16:24:10]# my_selectmy_select: line13: o:commandnot found#? 5Pleaseselecta country.1)Afghanistan18)Israel35)Palestine2)Armenia19)Japan36)Philippines3)Azerbaijan20)Jordan37)Qatar4)Bahrain21)Kazakhstan38)Russia5)Bangladesh22)Korea(North)39)Saudi Arabia6)Bhutan23)Korea(South)40)Singapore7)Brunei24)Kuwait41)Sri Lanka8)Cambodia25)Kyrgyzstan42)Syria9)China26)Laos43)Taiwan10)Cyprus27)Lebanon44)Tajikistan11)East Timor28)Macau45)Thailand12)Georgia29)Malaysia46)Turkmenistan13)Hong Kong30)Mongolia47)United Arab Emirates14)India31)Myanmar(Burma)48)Uzbekistan15)Indonesia32)Nepal49)Vietnam16)Iran33)Oman50)Yemen17)Iraq34)Pakistan#? 6Pleaseselectone of the followingtimezone regions.1)Beijing Time2)Xinjiang Time#? 8The following information has been given: China Beijing Time ThereforeTZ=Asia/Shanghai will be used. Localtimeis now: Fri Apr1016:16:09 CST2026. Universal Time is now: Fri Apr1008:16:09 UTC2026. Is the above information OK?1)Yes2)No#? 1You canmakethis change permanentforyourself by appending the lineTZ=Asia/Shanghai;exportTZ to thefile.profileinyour home directory;thenlog out and loginagain. Here is that TZ value again, thistimeon standard output so that you can use the /usr/bin/tzselectcommandinshell scripts: Asia/Shanghai

数值计算

下面就给大家介绍一下常见的 Shell 算术运算符:

  • +、-一元正号和负号。
  • +、-,加法和减法。
  • *、/、%,乘法、除法、取余(取模)。
  • **,幂运算。
  • ++、–,增加及减少,可前置也可放在变量结尾。
  • !、&&、||,逻辑非(取反)、逻辑与(and)、逻辑或(or)。
  • <、<=、>、>=,比较符号(小于、小于等于、大于、大于等于)。
  • ==、!=、=,比较符号(相等、不相等,对于字符串也可以表示相当于)。
  • <<、>>,向左移位、向右移位。
  • ~、|、&、^,按位取反、按位异或、按位与、按位。
  • =、+=、-=、*=、/=、%=,赋值运算符,例如a+=1相当于a=a+1a-=1相当于a=a-1

Shell 中常见的算术运算命令:

  • $(()),用于整数运算的常用运算符,效率很高。
  • $[],用于整数运算。
  • bc,Linux下的一个计算器程序(适合整数及小数运算)。

**示例1:**简单的数值计算。

[root@centos ~16:49:19]# echo $((1+1))2[root@centos ~16:51:35]# echo $((6*3))18[root@centos ~16:52:02]# ((i=5))[root@centos ~16:52:17]# ((i=i*2))[root@centos ~16:52:24]# echo $i10

**示例2:**复杂的数值计算。

[root@centos ~16:52:31]# ((a=1+2**3-4*3))[root@centos ~16:53:22]# echo $a-3[root@centos ~16:53:28]# b=$((a=1+2**3-4%3))[root@centos ~16:53:59]# echo $b8[root@centos ~16:54:04]# a=$((100*(100+1)/2))[root@centos ~16:54:41]# echo $a5050

**示例3:**特殊运算符号

[root@centos ~16:54:45]# a=8;echo $((a+=1))9[root@centos ~16:55:54]# echo $((a**2))81

**示例4:**比较和判断

[root@centos ~16:55:58]# ((3<8))[root@centos ~16:56:33]# echo $?0[root@centos ~16:56:38]# echo $((3<8))1[root@centos ~16:56:48]# ((3>8))[root@centos ~16:57:11]# echo $?1[root@centos ~16:57:17]# echo $((3>8))0[root@centos ~16:58:11]# echo $((3==3))1[root@centos ~16:58:27]# if ((8>7 && 5==5));then echo yes;fiyes

**示例5:**变量前后使用–和++特殊运算符的表达式

[root@centos ~17:00:33]# echo $((a++))10[root@centos ~17:00:43]# echo $a11[root@centos ~17:00:48]# echo $((--a))10[root@centos ~17:00:58]# echo $a10

**示例6:**通过 (())运算后赋值给变量

[root@centos ~17:01:04]# num=99[root@centos ~17:02:39]# echo $((numm+1))1[root@centos ~17:02:50]# echo $((num+1))100[root@centos ~17:02:56]# num=$((num+1))[root@centos ~17:03:07]# echo $num100

let 命令

let运算命令的语法格式为:let 表达式

let表达式的功能等同于:((表达式))

示例:

[root@centos ~ 17:03:24]# i=i+8 [root@centos ~ 17:03:29]# echo $i i+8 [root@centos ~ 17:03:33]# i=2 [root@centos ~ 17:03:46]# let i=i+8 [root@centos ~ 17:03:52]# echo $i 10

bc 命令

bc是UNIX/Linux下的计算器,因此,除了可以作为计算器来使用,还可以作为命令行计算工具使用。

示例:

[root@centos ~17:03:55]# bcbc1.06.95 Copyright1991-1994,1997,1998,2000,2004,2006Free Software Foundation, Inc. This isfreesoftware with ABSOLUTELY NO WARRANTY. For detailstype`warranty'.1+3*4-6/3^3%413scale=41/3 .3333 quit

综合案例

通过一条命令计算输出1+2+3+...+10的表达式,并计算出结果,请使用bc命令计算。输出内容如1+2+3+4+5+6+7+8+9+10=55

[root@centos ~16:44:45]# echo {1..10}12345678910[root@centos ~16:48:09]# echo {1..10} | tr ' ' '+'1+2+3+4+5+6+7+8+9+10[root@centos ~16:48:21]# echo "Today is $(date +%A)"Today is Friday[root@centos ~16:48:52]# echo $[12+3]15[root@centos ~16:49:11]# echo $[ $(echo {1..10} | tr ' ' '+') ]55

quit

## 综合案例 通过一条命令计算输出 `1+2+3+...+10` 的表达式,并计算出结果,请使用bc命令计算。输出内容如`1+2+3+4+5+6+7+8+9+10=55`。 ~~~bash [root@centos ~ 16:44:45]# echo {1..10} 1 2 3 4 5 6 7 8 9 10 [root@centos ~ 16:48:09]# echo {1..10} | tr ' ' '+' 1+2+3+4+5+6+7+8+9+10 [root@centos ~ 16:48:21]# echo "Today is $(date +%A)" Today is Friday [root@centos ~ 16:48:52]# echo $[12+3] 15 [root@centos ~ 16:49:11]# echo $[ $(echo {1..10} | tr ' ' '+') ] 55
http://www.jsqmd.com/news/634152/

相关文章:

  • 如何构建高效QQ机器人:go-cqhttp技术深度解析与实战指南
  • 存储那么贵,何不白嫖飞书云文件空间匮
  • 如何用Tomodoro网页番茄钟终结分心困扰:3步打造高效专注工作流
  • Linux-编译器
  • ReadCat开源小说阅读器:从入门到精通的完整实战指南
  • 【异常】安装hermes-agent.git提示error: RPC failed; curl 56 OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 110
  • 万物识别模型部署全攻略:环境配置+代码运行,新手必看
  • imagemagick6.2.7 批量处理nscripter的绿幕立绘到透明png的教程
  • 实测阿里Qwen-Image-2512镜像:ComfyUI操作,生成效果惊艳
  • 龙芯k - 走马观碑组MPU驱动移植啃
  • 热议知名的建筑节能改造企业,哪家靠谱选它不踩坑 - 工业品网
  • 2026年Ei 检索核心期刊目录(最新版)
  • PDE (Processing D Editor) 三维场景编辑器 · 软件白皮书 · 基于 v..境
  • Omni-Vision Sanctuary 跨平台开发:利用WSL2在Windows下进行模型调试
  • Gemma-3 Pixel Studio效果展示:PNG透明通道保留下的精准前景物体识别
  • 密码学工具箱ToolsFx:新手也能快速上手的终极指南 [特殊字符]
  • 总结鹅绒被源头工厂排名,说说性价比高的鹅绒被品牌怎么选 - 工业设备
  • nli-distilroberta-base嵌入式设备展望:从STM32到边缘AI的轻量化之路
  • Minecraft Region Fixer终极指南:拯救你的损坏游戏世界
  • UniApp权限管理进阶:用uni-popup优雅实现权限申请前的目的告知(兼容安卓13+)
  • 写代码易错点整理
  • 终极指南:DeepSeek-OCR如何通过SAM+CLIP双编码器实现高精度文档识别
  • 从“实体分类学”到“关系语法学”:DOS模型的理论品格与未来潜能
  • 2026奇点大会倒计时92天!AIAgent开发入门黄金窗口期:掌握这6个可复用Agent模式,抢占首批企业落地席位
  • ESP32与LVGL实战:高效图片显示方案解析
  • DeepSeek-OCR:视觉压缩如何重塑长文本处理?解析DeepEncoder的架构设计与效率突破
  • 口碑好的鹅绒被品牌分享,防钻绒无异味的优质之选推荐 - 工业品牌热点
  • DRV8303电机驱动芯片SPI配置详解:以STM32 HAL库为例,搞懂读写时序与寄存器映射
  • 分享荧光渗透检测线供应商选购要点,选对品牌少走弯路 - 工业品网
  • 微信公众号自动化发布:从零到一的完整指南