CentOS 7 常用命令速查手册

CentOS 7 常用命令速查手册

零基础 Linux 命令行入门 · 目录结构 · 文件操作 · VI 编辑器 · 权限 · 系统运维

适用系统CentOS 7.9(命令同样适用于 RHEL 7 / Rocky 8 等)
适用读者零基础学生、云计算比赛参赛选手
内容范围9 章 + 附录,覆盖 120+ 常用命令
配套材料《VMware 虚拟机安装 CentOS 7 完全图解教程》《OpenStack 运维操作手册》
约定命令提示符中 # 表示 root 用户,$ 表示普通用户;命令本身不写前缀

目 录

  1. 认识 Linux 命令行
  2. Linux 目录结构(每个目录是干什么的)
  3. 切换目录与查看文件:pwd / cd / ls
  4. 新建、复制、剪切、删除:mkdir / cp / mv / rm
  5. 查看文件内容与查找:cat / less / grep / find
  6. 重定向与管道:> / >> / |
  7. VI / VIM 编辑器完全指南
  8. 权限、用户与提权:chmod / chown / sudo
  9. 系统、网络、软件、打包命令
  10. 附录:分类命令总表 + 学习路线

第 1 章 认识 Linux 命令行

1.1 命令行长什么样

登录 CentOS 后看到的这一行,叫做命令提示符:

[root@localhost ~]#
组成部分含义说明
root当前登录的用户名root 是超级管理员,权限最大,操作要谨慎
@分隔符固定写法
localhost主机名我们安装时改成了 controller / compute
~当前所在目录~ 代表用户的家目录(root 是 /root)
#身份标记#=root,$=普通用户

1.2 命令的通用格式

命令名   [选项]   [参数]

ls       -l         /etc
要素作用例子
命令名要执行的动作ls(列表)、cp(复制)
选项控制命令的“行为方式”,以 - 开头-l 长格式、-a 显示隐藏文件;
可合并:-la 等于 -l -a
参数命令“作用在谁身上”,通常是路径/etc、file.txt

记住三个“分隔”规则命令名、选项、参数之间必须有空格;选项和参数大小写敏感(-l 和 -L 完全不同);文件名里有空格要加引号:ls "my file"。

1.3 必须懂的符号

符号名称含义示例
~波浪号当前用户的家目录cd ~
/斜杠① 根目录;② 路径分隔符cd /、/etc/ssh
.点当前目录./run.sh 运行当前目录脚本
..两个点上一级(父)目录cd ..
-横杠上一个所在的目录(用于来回切换)cd -
*星号通配符,匹配任意多个字符rm *.log 删除所有日志
?问号通配符,匹配任意一个字符ls file?.txt
|管道把前一个命令的输出交给后一个命令处理ps -ef | grep nginx
> >>重定向输出写入文件(覆盖 / 追加)ls > a.txt
#井号注释;或 root 提示符# 这是注释

1.4 忘了命令怎么用?两招救命

man ls            # 查看 ls 的完整说明书,按 q 退出
ls --help         # 快速看参数列表(绝大多数命令都支持)

# 只想记住常用参数,看这一行就够:
man -k 关键词      # 按关键词搜索手册,如 man -k network
快捷键作用
Tab最有用:自动补全命令名或路径,连按两次列出所有候选
↑ / ↓翻历史命令,回车直接再执行
Ctrl+C中断当前正在跑的命令
Ctrl+L清屏(等价于 clear)
Ctrl+U删掉光标前整行
Ctrl+D退出当前 Shell(相当于 exit)
Ctrl+A / E光标跳到行首 / 行尾

检查点:能看懂 [root@controller ~]# 这行的每一部分;会用 Tab 补全和 ↑ 翻历史;知道 man 怎么退出(q)。

第 2 章 Linux 目录结构(每个目录是干什么的)

Windows 有 C 盘、D 盘;Linux 只有一个根目录 /,所有东西都挂在它下面,形成一棵倒过来的树。这叫 FHS 标准(文件系统层次结构标准)。

/ ├── bin/ 最基础的命令(ls、cp、mv…) → 现在链接到 /usr/bin ├── boot/ 内核和启动文件(vmlinuz、initramfs)——别乱动! ├── dev/ 设备文件(sda 硬盘、tty 终端、null 黑洞) ├── etc/ 所有配置文件(装完服务九成时间都在改这里) ├── home/ 普通用户的家目录(/home/zhangsan) ├── lib/ 库文件(相当于 Windows 的 dll) ├── media/ 自动挂载的移动设备(U 盘、光驱) ├── mnt/ 临时挂载点(手动挂载硬盘常用,如 /mnt/cdrom) ├── opt/ 第三方大型软件(比赛常把软件装这儿) ├── proc/ 内核和进程的虚拟信息(内存里的,不占硬盘) ├── root/ root 用户自己的家目录(不是 /home/root) ├── sbin/ 管理员专用命令(fdisk、shutdown…) ├── srv/ 服务数据目录(如 FTP 共享 /srv/ftp) ├── sys/ 硬件设备的虚拟信息(同 proc,不占硬盘) ├── tmp/ 临时文件,重启会清空 ├── usr/ 用户程序与文件(最大的目录之一) │ ├── bin/ 绝大多数命令真正的存放处 │ ├── sbin/ 管理员命令 │ ├── lib/ 32 位库;lib64/ 64 位库 │ ├── local/ 手动安装的软件默认装这里(/usr/local/bin) │ └── share/ 共享数据、文档、手册 └── var/ 经常变化的数据(variable) ├── log/ 日志都在这里(排错第一站) ├── lib/ 服务运行时的状态数据(MySQL 数据库文件默认在这) ├── www/ 网站根目录 ├── spool/ 邮件、打印队列 └── tmp/ 持久化的临时文件(重启不清)

2.1 最常用的 8 个目录速记

目录一句话记忆典型用途
/etc配置文件的家/etc/sysconfig/network-scripts/ 网卡配置
/etc/hosts 主机名解析
/etc/ssh/sshd_config SSH 配置
/root管理员的家root 登录后默认就在这
/root/openrc.sh OpenStack 认证脚本常放这
/var/log出问题先来这/var/log/messages 系统日志
/var/log/secure 登录认证日志
/var/log/nova/ OpenStack 服务日志
/usr/local/bin手动装的东西在这OpenStack 的 iaas-*.sh 脚本、自己编译的软件
/opt第三方大软件比赛环境里常放定制软件包
/mnt /media挂东西的地方mount /dev/cdrom /mnt 挂载光盘
/tmp临时中转站下载、解压临时文件,重启自动清
/boot启动文件(别碰)内核文件、GRUB 引导程序

2.2 绝对路径 vs 相对路径

类型写法含义示例
绝对路径从 / 开头不管你现在在哪,都指向同一个位置/etc/hosts
相对路径不以 / 开头相对于“当前所在目录”身在 /etc 时,hosts 就等于 /etc/hosts

小白建议:前期一律用绝对路径,最不容易出错。等熟了再用相对路径偷懒。

检查点:能说出 /etc、/var/log、/root、/usr/local/bin 各自放什么;能解释 /root 和 / 的区别。

第 3 章 切换目录与查看:pwd / cd / ls

3.1 pwd —— 我在哪儿

pwd
# 输出:/etc/sysconfig/network-scripts

pwd = print working directory,打印当前完整路径。迷路时第一个敲它。

3.2 cd —— 切换目录(change directory)

命令去哪儿说明
cd /etc进入 /etc绝对路径写法
cd ..上一级目录可以连写:cd ../.. 上两级
cd ~ 或 cd回自己的家目录root 回 /root,普通用户回 /home/用户名
cd /回根目录最顶层
cd -回上一个目录两个目录之间来回跳,超级好用
cd /root/openstack-lab多级目录一次性进入路径要写全

常见错误:cd etc 少了开头的 /,系统会去当前目录下找 etc 子目录,找不到就报 No such file or directory。记住:进系统目录永远从 / 开始写。

3.3 ls —— 列出目录内容(最常用,没有之一)

命令作用什么时候用
ls列出当前目录的文件名随便看看
ls -l长格式:权限、属主、大小、时间、名字看文件详情(记住 ll 就是它的别名)
ls -a显示隐藏文件(以 . 开头的)找 .bashrc、.treeinfo 这类文件
ls -la上面两个合体最常用组合
ls -lh大小显示成 K/M/G,人眼友好看文件有多大
ls -ltr按修改时间倒序(最新的在最下面)找刚生成的文件,排错神器
ls -ld /etc只显示 /etc 目录本身的属性看目录权限
ls /etc/ssh列出指定目录内容不切目录也能看

读懂 ls -l 的每一列

-rw-r--r--  1 root root   1866 Mar 22  2023 /etc/hosts
│└┬┘└┬┘└┬┘  │  │    │      │        │
│ │  │  │   │  │    │      │        └─ 文件名
│ │  │  │   │  │    │      └────────── 修改时间
│ │  │  │   │  │    └───────────────── 大小(字节)
│ │  │  │   │  └────────────────────── 所属组
│ │  │  │   └───────────────────────── 属主(文件归谁)
│ │  │  └───────────────────────────── 硬链接数
│ │  └──────────────────────────────── 其他人权限 r-- = 只读
│ └─────────────────────────────────── 所属组权限 r-- = 只读
└───────────────────────────────────── 文件类型 + 属主权限 rw- = 读写
                                        d=目录  l=链接  -=普通文件

检查点:会用 cd - 在两个目录来回跳;能用 ls -la 找出隐藏文件;能读懂 -rw-r--r-- 的含义。

第 4 章 新建、复制、剪切、删除

4.1 mkdir —— 建目录

mkdir test              # 建一个名叫 test 的目录
mkdir -p /a/b/c/d       # -p:一次性建出多层目录(父目录不存在也自动建)
mkdir dir1 dir2 dir3    # 一次建多个

-p 是刚需:不加 -p 时,如果 /a 不存在,mkdir /a/b 直接报错。-p 还会在目录已存在时不报错,脚本里必带。

4.2 touch —— 建空文件

touch a.txt              # 新建一个空文件
touch f1 f2 f3           # 一次建多个
touch a.txt              # 文件已存在时:只更新修改时间,不报错

4.3 cp —— 复制(copy)★重点

命令作用说明
cp a.txt b.txt复制文件并改名目录里多出一个 b.txt,a.txt 还在
cp a.txt /tmp/复制到指定目录名字不变
cp -r /etc/ssh /tmp/复制目录必须加 -rr = recursive 递归,把里面全部内容一起复制
cp -p a.txt /tmp/保留原文件的权限、属主、时间备份配置时建议加
cp -a /etc/ /backup/归档复制(= -dpr 全保留)完整备份的最佳选择
cp -i a.txt /tmp/覆盖前先问一句 y/n防手抖
cp -v *.conf /tmp/显示复制过程批量复制时看得清楚
cp -f a.txt b.txt强制覆盖,不询问脚本里常用

最常见的坑对目录用 cp 忘了 -r,会报 omitting directory;
另外 Linux 里 cp默认会直接覆盖同名文件且不提示(root 用户尤甚),重要操作请养成先 ls 确认目标目录的习惯。

4.4 mv —— 剪切 / 移动 / 重命名(move)★重点

mv 一个命令干三件事,是 Linux 里最“一专多能”的命令:

场景命令结果
剪切文件到别的目录mv a.txt /tmp/a.txt 从原处消失,出现在 /tmp 下
重命名文件mv old.txt new.txt同目录内改名,内容不变
重命名目录mv olddir newdir目录改名,不需要 -r
移动整个目录mv /data/mysql /opt/整个目录连内容一起搬走
批量移动mv *.log /var/log/配合通配符
覆盖前提示mv -i a.txt /tmp/目标已存在时问一下

为什么 mv 这么快?如果源和目标在同一个分区,mv 只改目录项指针,不搬数据,所以瞬间完成;跨分区才会真正复制+删除。这也是“剪切”和“复制后删除”的本质区别。

4.5 rm —— 删除 ★最危险

命令删除什么风险
rm a.txt删文件删前会问(如果设了别名)
rm -i a.txt删前询问确认低
rm -r mydir/递归删目录及里面所有内容中
rm -rf mydir/强制递归删除,不问不提示极高
rm -rf /*—删库跑路级别,绝对不能碰

Linux 没有回收站!删掉就是真删了,rm -rf 不会进任何垃圾桶。三条铁律:

  1. 敲 -rf 之前,先把命令里的路径原封不动 ls 一遍,确认要删的东西是对的;
  2. 通配符要谨慎:rm -rf /tmp/test/* 没问题,rm -rf /tmp/test/* 手滑多敲一个空格变成 rm -rf /tmp/test/ * 就删根目录了;
  3. 变量一定要加引号:rm -rf "$DIR/",否则 DIR 为空时会变成 rm -rf /。

安全的删除习惯(推荐照做)

# ① 先看清楚要删的是什么
ls -la /tmp/test/

# ② 用 -i 一个个确认(少量文件)
rm -ri /tmp/test/

# ③ 大量文件先改名“隔离”,观察几天再删
mv /tmp/test /tmp/test.delete.20261006

# ④ 真要删,明确写全路径,不用通配符
rm -rf /tmp/test.delete.20261006

4.6 ln —— 创建链接(快捷方式)

ln -s /usr/local/bin/python3 /usr/bin/python3   # 软链接(类似 Windows 快捷方式,用 -s)
ln  a.txt b.txt                                  # 硬链接(同一份数据多个名字,少用)

软链接 vs 硬链接:软链接存的是“路径”,原文件删了链接就失效(红色闪烁);硬链接和原文件是平等的两个名字,删掉一个另一个照常能用。99% 的场景用软链接(-s)。

检查点:能说出 cp 和 mv 的本质区别;能默写“复制目录”的正确命令;能背出删库跑路命令长什么样并知道永远不要敲。

第 5 章 查看文件内容与查找

5.1 查看内容:按文件大小选工具

命令用途常见参数
cat 文件一次全打出来,适合小文件cat -n 显示行号
less 文件大文件首选,可分页浏览空格翻页、q 退出、/关键词 搜索
head -n 20 文件看前 20 行(默认 10 行)快速看文件头
tail -n 20 文件看最后 20 行看日志尾部
tail -f 文件实时滚动跟踪新内容盯日志用这个,Ctrl+C 退出
wc -l 文件统计行数wc -c 字节数、-w 单词数
nl 文件带行号输出
tac 文件倒着显示(最后一行先出)
diff a b比较两个文件的差异改配置前后对比
# 实战:盯着 OpenStack 服务的日志看报错
tail -f /var/log/nova/nova-compute.log

5.2 grep —— 在内容里搜关键词

命令作用
grep root /etc/passwd找出包含 root 的行
grep -i error log.txt-i 忽略大小写(ERROR/error 都命中)
grep -n error log.txt-n 显示行号
grep -v "^#" file.conf-v 反向:不包含的行(去掉注释行看有效配置)
grep -r "keyword" /etc/-r 递归搜索整个目录
grep -c error log.txt-c 只输出匹配的行数
grep -E "err|warn" log.txt-E 用扩展正则(或关系)

比赛高频组合:看配置文件的“有效内容”(去掉空行和注释)
grep -vE "^\s*#|^\s*$" /etc/neutron/neutron.conf

5.3 find —— 按条件找文件

find / -name "*.conf"                  # 全盘找 .conf 文件
find /etc -name "hosts"                # 在 /etc 下找 hosts
find /var/log -name "*.log" -size +10M # 找大于 10MB 的日志
find /tmp -mtime +7                    # 找 7 天前修改过的文件
find /data -type d -name "test"        # 只找目录(-type f 只找文件)
find /etc -name "*.conf" -ls           # 找到并列出详情

# 找到后直接批量操作(删除 7 天前的日志,注意先 ls 验证)
find /var/log -name "*.log" -mtime +7 -exec rm -f {} \;
对照findgrep
找什么按文件名/属性找文件按文件内容找关键词
例子find / -name "a.txt"grep "a" /etc/passwd

5.4 which / whereis —— 命令装在哪

which python3        # 命令的可执行文件路径
whereis python3      # 可执行文件 + 手册 + 源码位置
rpm -qf $(which ls)  # 反查这个命令属于哪个软件包

检查点:会用 tail -f 实时盯日志;能用 grep -v 过滤掉注释行;知道找“文件名”用 find、找“内容”用 grep。

第 6 章 重定向与管道

6.1 输出重定向

符号含义示例
>标准输出覆盖写入文件ls -l > list.txt
>>标准输出追加到文件末尾echo "done" >> log.txt
2>错误输出写入文件ls /nofile 2> err.txt
&>正确+错误都写入sh run.sh &> out.log
2>&1把错误合并到标准输出sh run.sh > out.log 2>&1
<从文件读取作为输入mysql -u root -p < init.sql
>/dev/null丢弃输出(黑洞)command >/dev/null 2>&1 静默执行

最经典的误会:script.sh > log.txt 2>&1 & 是“后台运行并把所有输出记到日志”,比赛跑安装脚本时经常这样用。

6.2 管道 |

把前面命令的输出,当作后面命令的输入。可以串联多个,形成一条“流水线”。

ps -ef | grep nginx                  # 在所有进程里筛出 nginx
cat access.log | grep "404" | wc -l   # 统计 404 出现了多少行
ls -l | sort -k5 -n | tail -5         # 按文件大小排序,看最大的 5 个
systemctl list-units --type=service | grep openstack   # 查 OpenStack 服务
history | grep yum | tail -20         # 找以前执行过的 yum 命令

6.3 tee —— 既显示在屏幕又存文件

sh deploy.sh 2>&1 | tee deploy.log        # 边看边存(覆盖)
sh deploy.sh 2>&1 | tee -a deploy.log     # 边看边存(追加)

检查点:能说清 > 和 >> 的区别;能写出“命令跑完把日志存下来还能看屏幕”的一行命令。

第 7 章 VI / VIM 编辑器完全指南

为什么必须学 vi?Linux 服务器上不一定装了 nano,但一定装了 vi。比赛中改配置文件(网卡、openrc.sh、hadoop 配置……)基本全靠它。刚上手会觉得别扭,练熟 20 分钟就能受益整个比赛周期。

7.1 三种模式(理解这个,vi 就通了一半)

┌──────────────────────────┐ │ ① 命令模式(默认) │ ← 打开文件就在这 │ 按键=执行操作,不能打字 │ └───────┬──────────┬───────┘ i / a / o : 或 / Esc ↓ ↓ ↑ ┌───────────────┐ ┌──────────────┴─────────┐ │ ② 编辑模式 │ │ ③ 末行模式 │ │ 正常打字输入内容 │ │ 底部出现 : 可输命令 │ └───────────────┘ │ w 保存 q 退出 wq 存退 │ └────────────────────────┘ 铁律:不管在哪个模式,狂按 Esc 都能回到①命令模式。

模式怎么进能干什么怎么出
① 命令模式打开文件默认就在移动光标、删除、复制、粘贴—
② 编辑模式按 i / a / o打字输入内容(左下角显示 — INSERT –)按 Esc
③ 末行模式命令模式下按 : 或 /保存、退出、查找替换、显示行号按 Esc 或回车执行后自动返回

7.2 打开与关闭

命令作用
vi /etc/hosts打开文件(不存在则新建)
vi +12 file打开并定位到第 12 行(排错时按日志行号直接跳过去)
vim filevim 是 vi 的增强版,支持语法高亮(推荐)
:w保存(write)
:q退出
:wq 或 ZZ保存并退出(最常用)
:q!不保存强制退出(改乱了想重来)
:w newfile另存为新文件
:x保存退出(只有改动过才写盘)

7.3 命令模式常用操作(打开就能用)

移动光标

按键作用按键作用
h j k l左 下 上 右w / b跳到下/上一个单词
0 / ^行首$行尾
gg文件第一行G文件最后一行
10G 或 :10跳到第 10 行Ctrl+f/b下/上翻页

删除、复制、粘贴、撤销

按键作用记忆
x删除光标处一个字符—
dd删除(剪切)整行d = delete
5dd删除从当前行起 5 行数字 + dd
yy复制整行y = yank
3yy复制 3 行数字 + yy
p / P粘贴到光标后 / 前paste
dw删除一个单词d + w
d$ 或 D删除光标到行尾—
u撤销(后悔药,可连按)undo
Ctrl+r重做(撤销撤销)redo
r替换当前一个字符(不进入编辑模式)replace

进入编辑模式的几种姿势

按键插入位置使用时机
i光标前插入默认选择,改配置常用
a光标后插入在行尾补内容方便
o在下一行新开一行插入加新配置行最方便
O在上一行新开一行插入在文件开头加内容
I / A行首 / 行尾插入—

7.4 末行模式(: 开头)常用

命令作用
:set nu显示行号(强烈建议打开)
:set nonu取消行号
:%s/old/new/g全文替换 old → new(g = 每行所有匹配)
:s/old/new/g只替换当前行
:10,20s/old/new/g只替换 10~20 行
:%s/old/new/gc替换前逐个确认(c = confirm,保险)
/关键词向下查找;n 下一个,N 上一个
?关键词向上查找
:noh取消搜索高亮
:g/^#/d删除所有以 # 开头的行(清理配置注释,实战超好用)
:g/^$/d删除所有空行
:r file2把另一个文件的内容读进来插到当前行后
:e!放弃修改,重新加载文件

7.5 实战:用 vi 改网卡配置(跟着做一遍就会了)

# 目标:把 /etc/hosts 里加一行  192.168.100.20  compute

vi /etc/hosts
# ① 打开后进入命令模式,按 G 跳到文件最后一行
# ② 按 o 在下面新开一行,自动进入编辑模式
# ③ 输入:192.168.100.20  compute
# ④ 按 Esc 回到命令模式(多余动作:连按几下 Esc 也没关系)
# ⑤ 输入 :wq  回车  → 保存并退出
# ⑥ 验证
cat /etc/hosts

7.6 卡住了怎么办(新手三大救助)

症状原因解法
打字乱七八糟,字母不对还在命令模式,按键被当命令了先按 Esc,再按 i 进编辑模式
底部一直显示 -- INSERT -- 退不出在编辑模式,:wq 被当文字打进去了先按 Esc,再输 :wq
想放弃所有修改—Esc 然后 :q!
提示 E212: Can't open file for writing权限不足(普通用户改 /etc):w !sudo tee %,或退出后用 sudo 重新打开
提示 Swap file ... already exists上次没正常退出(或另一人在编辑)确认无人再用后按 E 直接编辑,或删掉 .swp 文件

速记口诀(背下来)“i 进 Esc 出,冒号 wq 是保存;错了按 u,不改 :q! 跑。”

检查点:能独立完成“打开文件 → 跳到末尾 → 新增一行 → 保存退出”全流程;会用 :%s///g 做全文替换;知道 :q! 是不保存退出。

第 8 章 权限、用户与提权

8.1 权限的含义

-rw-r--r--  root  root
 ││││││││   │     └─ 所属组
 │││││││└── 其他人(others) 权限
 │││└───── 所属组(group) 权限
 │└─────── 属主(user/owner) 权限
 └──────── 类型:- 文件  d 目录  l 链接
权限字母数字对文件的意义对目录的意义
读r4能看内容能列出目录里的文件(ls)
写w2能修改内容能在目录内新建/删除文件
执行x1能作为程序运行能进入目录(cd)
无–0——
数字组合常见用途
777rwxrwxrwx所有人可读写执行(危险,尽量别用)
755rwxr-xr-x脚本、可执行文件、Web 目录
644rw-r–r–普通配置文件的标准权限
600rw——-私钥、密码文件(如 .ssh/id_rsa)
700rwx——只有自己能进的私有目录

8.2 chmod —— 改权限

# 数字法(推荐,简洁)
chmod 755 run.sh          # 属主可读写执行,其他只读+执行
chmod 644 app.conf        # 标准配置文件
chmod 600 id_rsa          # 私钥必须 600,否则 SSH 拒绝使用
chmod -R 755 /var/www     # -R 递归改整个目录

# 字母法
chmod +x run.sh           # 给所有人加执行权限
chmod u+x run.sh          # 只给属主加执行权限(u=user g=group o=others a=all)
chmod o-w file            # 去掉其他人的写权限

SSH 私钥高频坑:把 id_rsa 权限设成 644 会导致 UNPROTECTED PRIVATE KEY FILE 报错,SSH 直接拒绝登录。必须 chmod 600 ~/.ssh/id_rsa。做免密互信时经常遇到。

8.3 chown —— 改属主与属组

chown zhangsan file.txt              # 改属主
chown zhangsan:dev file.txt          # 同时改属主和属组
chown -R apache:apache /var/www/     # 递归改整个网站目录
chgrp dev file.txt                   # 只改属组

8.4 用户与用户组

useradd zhangsan                     # 建用户(家目录 /home/zhangsan)
useradd -m -s /bin/bash lisi         # -m 建家目录,-s 指定登录 shell
passwd zhangsan                      # 给用户设密码(输入两次,不回显)
usermod -aG wheel zhangsan           # 把用户加入 wheel 组(获得 sudo 权限)
userdel -r zhangsan                  # 删用户并删除其家目录(-r)
id zhangsan                          # 查看用户的 uid/gid/所属组
whoami                               # 我现在是谁
groups                               # 当前用户属于哪些组
who / w                              # 谁在线
文件内容
/etc/passwd用户基本信息(用户名:密码占位:UID:GID:描述:家目录:shell)
/etc/shadow加密后的密码(只有 root 能读)
/etc/group组信息
/etc/sudoerssudo 授权配置(必须用 visudo 编辑,别直接 vi)

8.5 su 与 sudo —— 提权

su -                      # 切换到 root(- 表示同时加载 root 的环境变量,建议带上)
su - zhangsan             # 切换到普通用户
exit                      # 退回原用户
sudo vi /etc/hosts        # 以 root 权限执行单条命令
sudo -i                   # 直接进入 root 环境
sudo -l                   # 查看我能 sudo 哪些命令
对比susudo
要谁的密码root 的密码自己的密码
切换方式切换成另一个用户(持续)单条命令临时提权
审计不记录有日志(/var/log/secure)
推荐服务器日常运维生产环境更推荐

检查点:知道 755/644/600 分别用在什么地方;会用 chmod +x 让脚本可执行;知道 su - 和 su 的差别。

第 9 章 系统、网络、软件、打包命令

9.1 systemctl —— 服务管理(CentOS 7 的核心)

systemctl start httpd          # 启动
systemctl stop httpd           # 停止
systemctl restart httpd        # 重启
systemctl reload httpd         # 重载配置(不中断连接,配置支持时优先用)
systemctl status httpd         # 查看状态(重点看 active(running) 和最后几行日志)
systemctl enable httpd         # 设为开机自启
systemctl disable httpd        # 取消开机自启
systemctl is-enabled httpd     # 查询是否自启

systemctl list-units --type=service --state=running   # 列出正在运行的服务
systemctl list-unit-files | grep openstack            # 找 OpenStack 相关服务
systemctl daemon-reload                               # 改了 unit 文件后刷新

排错顺序:systemctl status xxx → 看 Active 是 active 还是 failed → 看下面日志尾巴 → 不够就去 journalctl -u xxx -n 50 或 /var/log/xxx。

9.2 关机、重启、查看系统信息

shutdown -h now         # 立刻关机
shutdown -r now         # 立刻重启
shutdown -r +10         # 10 分钟后重启
shutdown -c             # 取消已计划的关机
reboot                  # 重启(等价)
poweroff                # 关机(等价)
init 0 / init 6         # 老的写法:0=关机 6=重启

hostnamectl                              # 查看主机名和系统信息
hostnamectl set-hostname controller      # 永久修改主机名(改完要 exec bash 或重登录)
uptime                                   # 开机多久了 + 负载
uname -r                                 # 内核版本
cat /etc/centos-release                  # 系统版本
date                                     # 当前时间
date -s "2026-10-06 22:00:00"            # 改时间(比赛环境时区/时间要一致)
timedatectl                              # 时区与时间状态
timedatectl set-timezone Asia/Shanghai   # 设时区

9.3 磁盘与容量

df -h                    # 各分区使用率(人眼友好,-h)
df -h /                  # 只看根分区
du -sh /var/log          # 统计目录总大小
du -sh /* 2>/dev/null | sort -h   # 找出谁最占地方
fdisk -l                 # 列出所有磁盘和分区
lsblk                    # 树形显示磁盘和分区(更直观)
mount /dev/sdb1 /mnt     # 挂载
umount /mnt              # 卸载
blkid                    # 查看分区 UUID(改 fstab 要用)
free -h                  # 内存使用(-h 人眼友好)
free -m                  # 以 MB 显示

9.4 进程与资源

top                      # 实时资源监控(q 退出,P 按 CPU 排序,M 按内存排序)
ps -ef                   # 列出所有进程(经典写法)
ps aux                   # 同上,显示更全(含 CPU/内存占比)
ps -ef | grep nginx      # 过滤出 nginx 进程
pgrep -l nginx           # 更简洁的进程查找
kill 12345               # 结束 PID 为 12345 的进程(温和)
kill -9 12345            # 强制杀死(进程不响应时用,慎用)
pkill -f nginx           # 按名字/命令行匹配批量杀
killall nginx            # 按进程名杀
nohup ./run.sh &         # 后台运行且不随终端关闭而退出
jobs                     # 看当前终端的后台任务
Ctrl+Z 然后 bg           # 把前台任务挂起到后台

9.5 网络排查

ip addr                  # 查看所有网卡和 IP(CentOS 7 首选,替代 ifconfig)
ip a                     # 同上(简写)
ip route                 # 查看路由表(看默认网关)
ip link set ens33 up     # 启用网卡
ss -tlnp                 # 查看正在监听的 TCP 端口 + 对应进程(替代 netstat)
ss -tlnp | grep 8080     # 某端口被谁占用
ping -c 4 192.168.100.20 # 测试连通性,-c 指定次数
ping -c 2 www.baidu.com  # 测试外网 + DNS
traceroute 8.8.8.8       # 路由追踪
nslookup baidu.com       # DNS 解析测试
cat /etc/resolv.conf     # 看 DNS 服务器
systemctl restart network    # 重启网络服务(CentOS 7)
nmcli connection show        # 查看网络连接
nmtui                        # 图形化网络配置界面(新手友好)
curl -I http://192.168.100.10      # 测试 HTTP 服务
curl -O http://x/y.rpm             # 下载文件
wget http://x/y.rpm                # 下载文件(更常用)

网络排错四步:① ip a 有没有 IP → ② ping 网关 通不通 → ③ ping 8.8.8.8 出不出得去 → ④ ping 域名 解析正不正常。四步定位到具体环节。

9.6 软件包管理(yum / rpm)

操作yum(推荐)rpm(底层)
安装yum install -y httpdrpm -ivh x.rpm
卸载yum remove httpdrpm -e httpd
查是否安装yum list installed | grep httpdrpm -qa | grep httpd
查包内容—rpm -ql httpd
查命令属于谁yum provides */lsrpm -qf $(which ls)
更新全部yum update -y—
清缓存yum clean all && yum makecache—

本地 yum 源(比赛离线环境必会)

mkdir -p /opt/repo
mount -o loop /dev/cdrom /mnt          # 挂载 ISO
cp -r /mnt/* /opt/repo/                # 复制到本地
vi /etc/yum.repos.d/local.repo         # 新建源文件
# 内容:
# [local]
# name=Local
# baseurl=file:///opt/repo
# enabled=1
# gpgcheck=0
yum clean all && yum makecache         # 刷新

9.7 压缩与打包(tar)

命令作用解释
tar -czvf bak.tar.gz /etc/打包+压缩c=创建 z=gzip压缩 v=显示过程 f=文件名
tar -xzvf bak.tar.gz解压x=解压(默认解到当前目录)
tar -xzvf bak.tar.gz -C /opt/解压到指定目录-C 指定目标
tar -tzvf bak.tar.gz只查看内容不解压t=list
tar -czvf bak.tar.gz --exclude=*.log /app/排除某些文件备份时很实用
zip -r a.zip dir/打成 zip(要传 Windows 用)需装 zip
unzip a.zip解压 zip需装 unzip

口诀:打包压缩是czvf(“创—压—看—名”),解压是xzvf(“解—压—看—名”)。记住这两条能覆盖 95% 的场景。

9.8 scp / rsync —— 跨机器传文件

# 本机 → 远程
scp file.txt root@192.168.100.20:/root/
scp -r /data/ root@192.168.100.20:/opt/      # -r 传目录

# 远程 → 本机
scp root@192.168.100.20:/root/a.txt /tmp/

# 两台远程机器之间(在本地执行,数据在远端直传)
scp -3 root@a:/x.txt root@b:/y.txt

# rsync:增量同步,传大量文件更快
rsync -avz --progress /data/ root@192.168.100.20:/data/

9.9 SSH 免密互信(比赛/集群必备)

# ① 生成密钥对(一路回车,不要设密码短语)
ssh-keygen -t rsa

# ② 把公钥拷到对端(会要求输一次对方密码)
ssh-copy-id root@192.168.100.20
ssh-copy-id root@192.168.100.10

# ③ 验证:应该直接登录,不再要密码
ssh root@192.168.100.20 "hostname"

# 私钥权限必须是 600,否则报错
chmod 600 ~/.ssh/id_rsa

9.10 其他高频小工具

history                  # 查看历史命令
history | grep yum       # 找以前敲过的 yum 命令
!123                     # 重新执行历史里第 123 条命令
!!                       # 重复执行上一条命令
!yum                     # 重复执行最近一条以 yum 开头的命令
clear                    # 清屏(或 Ctrl+L)
echo "hello"             # 输出
echo $PATH               # 打印环境变量
env                      # 列出所有环境变量
export VAR=value         # 设置环境变量(当前会话有效)
alias ll='ls -l'         # 设别名
source /root/openrc.sh   # 加载脚本(在当前 shell 生效,不新开进程)
seq 1 5                  # 输出 1 到 5
basename /a/b/c.txt      # 取文件名 → c.txt
dirname  /a/b/c.txt      # 取目录   → /a/b

检查点:会用 systemctl status 查服务;会用 ip a + ping 排网络;能默写 tar 打包和解压命令;会做两台机器的免密互信。

附录 分类命令总表 + 学习路线

A.1 命令速查总表

类别命令一句话说明
目录操作pwd显示当前路径
cd 路径切换目录(cd .. 上一级、cd - 回去、cd ~ 回家)
ls -la列出全部文件含隐藏,长格式
mkdir -p a/b/c递归创建目录
rmdir 空目录删除空目录(非空要用 rm -r)
tree树形展示目录(需安装)
文件操作touch f新建空文件 / 更新时间戳
cp -r a b复制(目录必须加 -r)
mv a /tmp/剪切/移动;同目录内写两个名字就是重命名
rm -rf 目录删除(不可恢复,慎用)
ln -s 源 链接名创建软链接(快捷方式)
查看内容cat -n f全量输出+行号(小文件)
less f分页浏览(大文件),/ 搜索,q 退出
head -20 f看前 20 行
tail -f f实时跟踪日志新增内容
grep -in 词 f按内容搜索(-n 行号 -i 忽略大小写)
find / -name "*.conf"按文件名/属性查找
权限用户chmod 755 f数字法改权限
chmod +x f加可执行权限
chown u:g f改属主与属组
su - / sudo cmd切换 root / 单条命令提权
系统服务systemctl start/stop/restart/status 服务服务启停与状态
systemctl enable 服务设为开机自启
ps -ef | grep x查进程
kill -9 PID强制结束进程
top实时资源监控
reboot / shutdown -h now重启 / 关机
磁盘网络df -h分区使用率
du -sh 目录目录总大小
lsblk / fdisk -l查看磁盘分区
ip a / ip route查看 IP / 路由
ss -tlnp查看监听端口
ping -c 4 IP连通性测试
软件打包yum install -y 包安装软件
rpm -qa | grep 包查已安装的包
tar -czvf a.tar.gz dir/打包压缩
tar -xzvf a.tar.gz -C /opt/解压到指定目录

A.2 三条“必背”组合拳

# ① 服务起不来怎么查
systemctl status xxx        # 先看状态
journalctl -u xxx -n 50     # 再看这个服务的日志
tail -f /var/log/xxx/xxx.log # 再看应用日志

# ② 网络不通怎么查
ip a                        # 有没有 IP
ping 网关                    # 通不通
ping 8.8.8.8                # 出不出得去
cat /etc/resolv.conf        # DNS 对不对

# ③ 磁盘满了怎么查
df -h                       # 哪个分区满
du -sh /* | sort -h         # 谁最占地方
find /var/log -size +100M   # 找大日志文件

A.3 学习路线(建议按顺序练)

阶段练什么验收标准
第 1 天cd / ls / pwd / mkdir / touch能在目录树里自由走动,能建目录建文件
第 2 天cp / mv / rm / cat / less能完成“复制配置→改名→改内容→查看”闭环
第 3 天vi 编辑器(重点练)能不看笔记改完一个配置文件并保存
第 4 天chmod / chown / su / sudo能解释 755/644/600 的区别并正确使用
第 5 天systemctl / ip / df / ps / kill能独立排查“服务没起来”“网络不通”“磁盘满”
第 6 天yum / tar / scp / ssh 免密能搭好两台机器的免密互信
进阶《OpenStack 运维操作手册》能用命令行创建并管理云主机

配套材料

  • 《VMware 虚拟机安装 CentOS 7 完全图解教程》——装系统、配网络、分区
  • 《OpenStack 私有云安装教程(chinaskills v2.0.3)》——搭 OpenStack 集群
  • 《OpenStack 运维操作手册》——服务启停、命令行建云主机、原理与优化

CentOS 7 常用命令速查手册 · 共 9 章 + 附录,覆盖 120+ 命令
命令均基于 CentOS 7.9 验证;# 开头命令需 root 权限或用 sudo 执行。

上一篇
下一篇