无论是刚刚接触 Linux 的新手,还是需要快速查阅、查漏补缺的有经验用户,这份按“高频使用场景”分类的命令汇总都能为你提供直接的帮助。它涵盖了 Linux 所有核心操作命令,每个命令都附有详细说明和实操例子,排版清晰,手机上也能轻松阅读。
一、基础入门(新手必看,老鸟回顾)
这部分是 Linux 操作的基石,不管做什么操作大概率都会用到,建议熟记。
1. 登录与退出
ssh:远程登录 Linux 服务器(最常用)。
- 说明:用于通过网络远程连接到 Linux 主机,是运维、开发的必备命令。
- 例子:
ssh root@192.168.1.100 (root 是用户名,192.168.1.100 是服务器IP,回车后输入密码即可登录)。
exit:退出当前登录会话。
- 说明:退出远程登录或本地终端,简单直接。
- 例子:
exit (输入后直接退出,远程连接会断开)。
logout:退出登录(与 exit 类似,多用于远程登录)。
ssh-keygen:生成 SSH 密钥对(免密登录必备,开发/运维高频)。
- 说明:生成公钥 (
id_rsa.pub) 和私钥 (id_rsa),将公钥上传到目标服务器,实现免密码登录。
- 例子1:
ssh-keygen -t rsa (默认生成 RSA 密钥对,一路回车即可,密钥存放在 ~/.ssh 目录下)。
- 例子2:
ssh-keygen -t rsa -C “your_email@xxx.com” (添加邮箱备注,便于区分密钥用途)。
ssh-copy-id:上传 SSH 公钥到目标服务器(免密登录配置)。
- 说明:无需手动复制公钥,一键上传到目标服务器的
~/.ssh/authorized_keys 文件。
- 例子:
ssh-copy-id root@192.168.1.100 (将本地公钥上传到 192.168.1.100 的 root 用户,后续 ssh 登录无需输密码)。
2. 帮助命令(不会就查,不用死记)
man:查看命令的详细手册(最权威)。
- 说明:几乎所有 Linux 命令都有
man 手册,包含命令用法、参数、示例。
- 例子:
man ls (查看 ls 命令的详细说明,按 q 退出手册)。
--help:查看命令的简易帮助(快速查阅)。
- 说明:比
man 更简洁,只显示核心参数和用法。
- 例子:
ls --help (查看 ls 命令的简易帮助)。
help:查看 shell 内置命令的帮助(比如 cd, exit)。
- 说明:
man 无法查看内置命令的详细帮助,用 help 即可。
- 例子:
help cd (查看 cd 命令的用法)。
二、文件操作(高频!每天必用)
Linux 中“一切皆文件”,文件操作是最基础、最常用的场景,包含创建、删除、移动、复制、权限修改等。
1. 文件/目录创建与删除
touch:创建空文件(也可修改文件时间戳)。
- 说明:快速创建一个或多个空文件,无需打开编辑器。
- 例子1:
touch test.txt (创建一个名为 test.txt 的空文件)。
- 例子2:
touch a.txt b.txt c.txt (一次性创建 3 个空文件)。
mkdir:创建目录(文件夹)。
- 说明:
-p 参数可创建多级目录(非常实用)。
- 例子1:
mkdir test (创建一个名为 test 的单级目录)。
- 例子2:
mkdir -p /home/test/data (创建多级目录,即使 home/test 不存在也能自动创建)。
rm:删除文件/目录(谨慎使用!删除后无法恢复)。
- 说明:
-f 强制删除(不提示),-r 递归删除(删除目录及里面所有内容)。
- 例子1:
rm test.txt (删除单个文件,会提示确认,输入 y 确认删除)。
- 例子2:
rm -f test.txt (强制删除文件,不提示)。
- 例子3:
rm -rf test (强制删除 test 目录及里面所有内容,高危命令,务必确认路径正确)。
2. 文件/目录移动与复制
cp:复制文件/目录。
- 说明:
-r 递归复制(复制目录必备),-v 显示复制过程(可选)。
- 例子1:
cp test.txt /home (将 test.txt 复制到 /home 目录下)。
- 例子2:
cp -rv test /home (将 test 目录及里面所有内容,复制到 /home 目录,显示复制过程)。
mv:移动文件/目录(也可用于重命名)。
- 说明:移动文件时,若目标路径与原路径相同,就是重命名。
- 例子1:
mv test.txt /home (将 test.txt 移动到 /home 目录下)。
- 例子2:
mv test.txt test1.txt (将 test.txt 重命名为 test1.txt)。
- 例子3:
mv test /home (将 test 目录移动到 /home 目录下)。
rsync:高效复制/同步文件/目录(运维高频,比 cp 更实用)。
- 说明:支持增量同步(只复制变化的文件)、跨服务器同步,适合大文件、批量文件同步,
-a 归档模式(保留权限、时间戳等),-v 显示过程。
- 例子1:
rsync -av /home/test /backup (将 /home/test 目录增量同步到 /backup 目录,保留原属性)。
- 例子2:
rsync -av root@192.168.1.100:/home/data /local/data (将远程服务器的 /home/data 同步到本地 /local/data)。
3. 文件/目录查看与切换
cd:切换工作目录(最常用)。
- 说明:
. 表示当前目录,.. 表示上一级目录,~ 表示当前用户的家目录(root 家目录是 /root,普通用户是 /home/用户名)。
- 例子1:
cd /home (切换到 /home 目录,绝对路径)。
- 例子2:
cd test (切换到当前目录下的 test 目录,相对路径)。
- 例子3:
cd .. (切换到上一级目录)。
- 例子4:
cd ~ (切换到当前用户的家目录)。
- 例子5:
cd - (切换到上一次所在的目录)。
ls:查看当前目录下的文件/目录。
- 说明:
-l 显示详细信息(权限、大小、修改时间等),-a 显示隐藏文件(以 . 开头的文件),-h 以人性化单位显示大小(KB、MB等)。
- 例子1:
ls (简单查看当前目录下的文件/目录,不显示隐藏文件)。
- 例子2:
ls -l (查看详细信息,很多人习惯用 ll 代替 ls -l)。
- 例子3:
ls -ah (查看当前目录下所有文件/目录,包括隐藏文件,人性化显示大小)。
- 例子4:
ls /home (查看 /home 目录下的文件/目录)。
pwd:查看当前工作目录的绝对路径。
- 说明:防止迷路,不知道自己当前在哪个目录时,输入
pwd 即可。
- 例子:
pwd (输出示例:/home/test)。
tree:以树形结构查看目录(直观)。
- 说明:默认不安装,可通过包管理命令安装(比如
yum install tree、apt install tree)。
- 例子1:
tree (查看当前目录的树形结构)。
- 例子2:
tree /home (查看 /home 目录的树形结构)。
find:查找文件/目录(运维/开发高频,按名称、类型、大小等筛选)。
- 说明:最灵活的查找命令,支持多条件筛选,
-name 按名称查找,-type 按类型(f文件、d目录),-size 按大小,-mtime 按修改时间。
- 例子1:
find /home -name “test.txt” (在 /home 目录下,查找名称为 test.txt 的文件)。
- 例子2:
find /root -type d -name “test*” (在 /root 目录下,查找以 test 开头的目录)。
- 例子3:
find /var -size +100M (在 /var 目录下,查找大小超过 100M 的文件,+ 表示大于,- 表示小于)。
- 例子4:
find /home -mtime -7 (在 /home 目录下,查找近 7 天修改过的文件/目录)。
locate:快速查找文件(比 find 快,基于数据库)。
- 说明:依赖
/var/lib/mlocate/mlocate.db 数据库,需定期更新(updatedb 命令),适合快速查找常用文件。
- 例子1:
updatedb (更新查找数据库,首次使用或文件刚创建时需执行)。
- 例子2:
locate test.txt (快速查找所有名为 test.txt 的文件,瞬间出结果)。
4. 文件权限修改(重要!避免权限不足)
Linux 文件/目录有 3 类权限:读(r,4)、写(w,2)、执行(x,1),对应 3 类用户:所有者(u)、所属组(g)、其他用户(o),用 chmod 命令修改。
chmod:修改文件/目录权限。
- 说明:两种用法:数字法(推荐,简单好记)、符号法(灵活)。
- 例子1(数字法):
chmod 755 test.txt
- 解释:7(所有者:rwx=4+2+1)、5(所属组:r-x=4+0+1)、5(其他用户:r-x=4+0+1),最常用的权限(文件可执行、目录可进入)。
- 例子2(数字法):
chmod 644 test.txt
- 解释:6(所有者:rw-=4+2+0)、4(所属组:r–=4+0+0)、4(其他用户:r–=4+0+0),普通文件常用权限(只读,不可执行)。
- 例子3(符号法):
chmod u+rwx,g+rx,o+rx test.txt (和 755 效果一致,u 给所有者加 rwx,g/o 给所属组/其他用户加 rx)。
- 例子4(符号法):
chmod u-w test.txt (给所有者减去写权限)。
chown:修改文件/目录的所有者和所属组。
- 说明:
-R 递归修改(修改目录及里面所有内容的所有者)。
- 例子1:
chown root test.txt (将 test.txt 的所有者改为 root)。
- 例子2:
chown root:root test.txt (将 test.txt 的所有者和所属组都改为 root)。
- 例子3:
chown -R root test (将 test 目录及里面所有内容的所有者改为 root)。
chgrp:修改文件/目录的所属组(单独修改组,不如 chown 常用)。
- 例子:
chgrp root test.txt (将 test.txt 的所属组改为 root)。
chattr:设置文件特殊属性(防止误删、篡改,运维高频)。
- 说明:常用
+i(锁定文件,无法修改、删除、重命名)、-i(解锁),需 root 权限,适合保护配置文件。
- 例子1:
chattr +i /etc/passwd (锁定 /etc/passwd 文件,防止误删或篡改,即使 root 也无法删除)。
- 例子2:
chattr -i /etc/passwd (解锁 /etc/passwd 文件,恢复正常操作)。
lsattr:查看文件特殊属性(配合 chattr 使用)。
- 说明:查看文件是否设置了
chattr 特殊属性,比如 i 锁定属性。
- 例子:
lsattr /etc/passwd (查看 /etc/passwd 的特殊属性,若有 i 则表示已锁定)。
5. 管道与重定向(新手难点,一次性搞懂)
管道(|)和重定向(>、>>、<)是 Linux 高效操作的核心,能将多个命令组合使用,大幅提升效率。
(1)管道 |
说明:将前一个命令的输出,作为后一个命令的输入,相当于“串联”命令。
- 例子1:
ls -l | grep test (查看当前目录下详细信息,筛选出包含 test 的行)。
- 例子2:
ps aux | wc -l (查看系统所有进程,统计进程总数)。
- 例子3:
cat /etc/passwd | head -5 (查看 /etc/passwd 文件内容,只显示前 5 行)。
- 例子4:
df -h | grep /home | awk ‘{print $5}’ (查看 /home 分区的使用率,只输出使用率字段)。
(2)重定向
>:覆盖重定向(将命令输出写入文件,若文件存在则覆盖原有内容)。
- 例子1:
ls -l > file.txt (将 ls -l 的输出,写入 file.txt,若 file.txt 存在则覆盖)。
- 例子2:
echo “hello linux” > test.txt (将字符串“hello linux”写入 test.txt,覆盖原有内容)。
>>:追加重定向(将命令输出写入文件,若文件存在则追加到末尾,不覆盖)。
- 例子1:
ls -l >> file.txt (将 ls -l 的输出,追加到 file.txt 末尾)。
- 例子2:
echo “hello world” >> test.txt (将字符串“hello world”追加到 test.txt 末尾)。
<:输入重定向(将文件内容作为命令的输入)。
- 例子:
wc -l < test.txt (统计 test.txt 文件的行数,相当于 cat test.txt | wc -l)。
2>:错误重定向(将命令的错误输出,写入文件,不显示在终端)。
- 例子:
ls /test 2> error.txt (ls /test 会报错,将错误信息写入 error.txt,终端不显示错误)。
&>:将正确输出和错误输出,都写入文件。
- 例子:
ls /test &> all.txt (不管 ls /test 是正确还是错误,输出都写入 all.txt)。
&>/dev/null:忽略所有输出(正确+错误,运维高频,避免日志冗余)。
- 说明:
/dev/null 是“黑洞”设备,写入的内容会被丢弃,适合后台运行命令时屏蔽输出。
- 例子:
nohup python test.py &>/dev/null & (后台运行 python 脚本,忽略所有输出,不生成日志文件)。
三、文本查看和处理(运维/开发高频)
Linux 中查看、编辑、筛选文本文件是家常便饭,比如查看日志、修改配置文件,这部分命令必须熟练掌握。
1. 文本查看(不修改文件,仅查看)
cat:查看文件全部内容(适合小文件)。
- 说明:一次性显示文件所有内容,文件太大时会刷屏,不适合大文件。
- 例子1:
cat test.txt (查看 test.txt 全部内容)。
- 例子2:
cat -n test.txt (查看 test.txt 内容,显示行号)。
more:分页查看文件内容(适合大文件,向下翻页)。
- 说明:按空格键向下翻页,按
q 退出查看,无法向上翻页。
- 例子:
more /var/log/messages (分页查看系统日志文件)。
less:分页查看文件内容(推荐,适合大文件,可上下翻页)。
- 说明:功能比
more 强大,按 ↑ 向上翻页、↓ 向下翻页,按 / 输入关键词搜索,按 q 退出。
- 例子:
less /var/log/messages (分页查看系统日志,支持搜索)。
head:查看文件前 N 行(默认前 10 行)。
- 说明:
-n 指定行数,常用查看文件开头(比如配置文件的头部说明)。
- 例子1:
head test.txt (查看 test.txt 前 10 行)。
- 例子2:
head -5 test.txt (查看 test.txt 前 5 行)。
tail:查看文件后 N 行(默认后 10 行,高频查看日志)。
- 说明:
-n 指定行数,-f 实时监控文件变化(最常用,查看实时日志)。
- 例子1:
tail test.txt (查看 test.txt 后 10 行)。
- 例子2:
tail -5 test.txt (查看 test.txt 后 5 行)。
- 例子3:
tail -f /var/log/nginx/access.log (实时监控 Nginx 访问日志,按 Ctrl+C 停止监控)。
tac:反向查看文件内容(从最后一行开始,倒序显示)。
- 例子:
tac test.txt (倒序查看 test.txt 内容)。
nl:查看文件内容并显示行号(比 cat -n 更灵活)。
- 说明:可自定义行号格式,默认只给非空行显示行号。
- 例子1:
nl test.txt (查看 test.txt 内容,给非空行显示行号)。
- 例子2:
nl -b a test.txt (给所有行(包括空行)显示行号)。
grep -A/-B/-C:筛选文本并显示上下文(运维查日志高频)。
- 说明:
-A 显示匹配行后 N 行,-B 显示匹配行前 N 行,-C 显示匹配行前后 N 行(上下文)。
- 例子:
grep -A 3 -B 2 “error” /var/log/nginx/error.log (筛选日志中包含 error 的行,显示前 2 行、后 3 行上下文,快速定位错误原因)。
2. 文本编辑(修改文件内容)
vi/vim:Linux 内置文本编辑器(最常用,必须掌握基础操作)。
- 说明:
vim 是 vi 的增强版,功能更强大,默认内置,分为 3 种模式:命令模式、插入模式、末行模式。
- 基础操作步骤:
- 输入
vim test.txt (打开 test.txt 文件,进入命令模式)。
- 按
i 键(进入插入模式,此时可以编辑文件内容)。
- 编辑完成后,按
Esc 键(退出插入模式,回到命令模式)。
- 输入
:wq (末行模式,保存并退出)。
- 常用快捷键(命令模式下):
dd:删除当前行。
yy:复制当前行。
p:粘贴复制的内容。
u:撤销上一步操作。
:set nu:显示行号。
:q!:强制退出,不保存修改。
:w:保存修改,不退出。
nano:简易文本编辑器(适合新手,操作简单)。
- 说明:界面简洁,不用记复杂快捷键,按
Ctrl+O 保存,Ctrl+X 退出。
- 例子:
nano test.txt (打开 test.txt 编辑,编辑完成后按 Ctrl+O 保存,回车确认,再按 Ctrl+X 退出)。
sed 补充(批量替换、插入,开发/运维高频)。
- 说明:补充常用场景,比如批量替换多文件、在指定行插入内容。
- 例子1:
sed -i ‘s/old/new/g’ *.txt (批量替换当前目录下所有 .txt 文件中的 old 为 new,直接修改原文件)。
- 例子2:
sed -i ‘5a hello’ test.txt (在 test.txt 第 5 行后面插入 hello 字符串)。
- 例子3:
sed -i ‘5i hello’ test.txt (在 test.txt 第 5 行前面插入 hello 字符串)。
awk 补充(按条件筛选、统计,运维查日志高频)。
- 说明:补充常用场景,比如统计日志中某个 IP 的访问次数、筛选特定状态码。
- 例子1:
awk ‘{print $1}’ /var/log/nginx/access.log | sort | uniq -c | sort -nr (统计 Nginx 访问日志中,每个 IP 的访问次数,按次数降序排列)。
- 例子2:
awk ‘$9==”404″‘ /var/log/nginx/access.log (筛选 Nginx 访问日志中,状态码为 404 的所有请求)。
dos2unix/unix2dos:转换文件换行格式(开发高频,解决 Windows 和 Linux 换行冲突)。
- 说明:Windows 换行格式是
\r\n,Linux 是 \n,直接复制文件会出现 ^M 符号,需转换。
- 例子1:
dos2unix test.txt (将 Windows 格式的 test.txt 转换为 Linux 格式,去除 ^M 符号)。
- 例子2:
unix2dos test.txt (将 Linux 格式的 test.txt 转换为 Windows 格式,适合 Windows 编辑)。
3. 文本筛选与替换
grep:筛选文本中包含指定关键词的行(最常用,搜索神器)。
- 说明:
-i 忽略大小写,-n 显示行号,-v 反向筛选(显示不包含关键词的行),-r 递归搜索(搜索目录下所有文件)。
- 例子1:
grep “test” test.txt (在 test.txt 中,筛选包含“test”的行)。
- 例子2:
grep -in “test” test.txt (筛选包含“test”的行,忽略大小写,显示行号)。
- 例子3:
grep -rv “test” /home (在 /home 目录下,递归搜索所有文件,显示不包含“test”的行)。
- 例子4:
grep “^test” test.txt (筛选以“test”开头的行,^ 表示开头)。
- 例子5:
grep “test$” test.txt (筛选以“test”结尾的行,$ 表示结尾)。
sed:文本替换、删除、插入(流式编辑器,适合批量处理)。
- 说明:常用替换功能,格式:
sed ‘s/原内容/替换内容/选项’ 文件名。
- 例子1:
sed ‘s/test/hello/’ test.txt (将 test.txt 中每一行的第一个“test”替换为“hello”,不修改原文件,仅显示结果)。
- 例子2:
sed ‘s/test/hello/g’ test.txt (g 表示全局替换,将每一行所有“test”都替换为“hello”)。
- 例子3:
sed -i ‘s/test/hello/g’ test.txt (-i 表示直接修改原文件,全局替换)。
- 例子4:
sed ‘3d’ test.txt (删除 test.txt 第 3 行,不修改原文件)。
- 例子5:
sed -i ‘3d’ test.txt (直接删除 test.txt 第 3 行)。
awk:文本分析、提取(按列筛选,适合处理结构化文本)。
- 说明:默认以空格、制表符为分隔符,
$1 表示第一列,$2 表示第二列,以此类推,$0 表示整行。
- 例子1:
awk ‘{print $1,$3}’ test.txt (提取 test.txt 中每一行的第一列和第三列,显示出来)。
- 例子2:
awk -F “,” ‘{print $2}’ test.txt (-F 指定分隔符为逗号,提取第二列)。
- 例子3:
awk ‘$1==”test” {print $0}’ test.txt (筛选第一列为“test”的行,显示整行内容)。
sort:文本排序。
- 说明:
-n 按数字排序,-r 反向排序(从大到小),-k 指定按某一列排序。
- 例子1:
sort test.txt (按字母顺序排序 test.txt 内容)。
- 例子2:
sort -n test.txt (按数字大小排序)。
- 例子3:
sort -nrk 2 test.txt (按第二列数字,反向排序)。
uniq:去除重复行(需先排序,否则无效)。
- 说明:
-c 统计重复行的次数。
- 例子1:
sort test.txt | uniq (先排序,再去除重复行)。
- 例子2:
sort test.txt | uniq -c (去除重复行,并统计每一行出现的次数)。
cut:按列提取文本(简单高效,比 awk 更简洁)。
- 说明:
-d 指定分隔符,-f 指定提取的列数,适合简单的列提取场景。
- 例子1:
cut -d “,” -f 1,3 test.txt (以逗号为分隔符,提取 test.txt 的第 1 列和第 3 列)。
- 例子2:
cut -c 1-5 test.txt (提取每一行的前 5 个字符)。
tr:字符替换/删除(简单字符处理,比 sed 简洁)。
- 说明:替换单个字符或删除指定字符,适合快速处理文本中的特殊字符。
- 例子1:
tr ‘a’ ‘A’ < test.txt (将 test.txt 中的所有小写 a 替换为大写 A)。
- 例子2:
tr -d ‘ ‘ < test.txt (删除 test.txt 中的所有空格)。
- 例子3:
tr -d ‘\r’ < test.txt > new.txt (删除 Windows 格式文件中的 \r 符号,等同于 dos2unix)。
四、磁盘操作(查看磁盘空间、挂载,避免磁盘满)
磁盘满是 Linux 服务器常见问题,定期查看磁盘空间、挂载磁盘,是运维必备操作。
1. 磁盘空间查看
df:查看磁盘分区的整体空间使用情况。
- 说明:
-h 以人性化单位显示(KB、MB、GB),最常用。
- 例子:
df -h (查看所有磁盘分区的空间使用情况,包括总大小、已用、可用、使用率)。
- 输出解读:
Filesystem(文件系统)、Size(总大小)、Used(已用)、Avail(可用)、Use%(使用率)、Mounted on(挂载点)。
du:查看目录/文件的空间占用情况(具体到某个目录/文件)。
- 说明:
-h 人性化显示,-s 显示总大小(不显示子目录细节),-sh 常用组合(查看目录总大小)。
- 例子1:
du -sh /home (查看 /home 目录的总空间占用)。
- 例子2:
du -h /home (查看 /home 目录及所有子目录、文件的空间占用,详细显示)。
- 例子3:
du -sh * (查看当前目录下所有文件/目录的总大小)。
du -x:查看指定分区的空间占用(排除其他分区的文件,运维高频)。
- 说明:避免跨分区统计,比如查看
/home 分区(挂载在 /dev/sda3)的占用,排除其他分区的软链接文件。
- 例子:
du -xsh /home (仅统计 /home 分区自身的文件/目录占用,不包含其他分区的内容)。
df -i:查看磁盘 inode 使用率(避免 inode 满导致无法创建文件)。
- 说明:Linux 中每个文件对应一个 inode,inode 满时,即使磁盘有空间也无法创建文件。
- 例子:
df -i (查看所有分区的 inode 总数量、已用数量、使用率)。
2. 磁盘分区与挂载
fdisk:查看磁盘分区信息、创建/删除分区(谨慎使用!)。
- 说明:磁盘分区的核心命令,需 root 权限,删除分区会丢失数据。
- 例子1:
fdisk -l (查看所有磁盘的分区信息,比如 /dev/sda、/dev/sdb)。
- 例子2:
fdisk /dev/sda (对 /dev/sda 磁盘进行分区操作,进入交互模式,按 m 查看帮助,按 q 退出不保存)。
mount:挂载磁盘/分区(将磁盘挂载到指定目录,才能使用)。
- 说明:临时挂载(重启后失效),永久挂载需修改
/etc/fstab 文件。
- 例子1(临时挂载):
mount /dev/sdb1 /mnt/data (将 /dev/sdb1 分区,挂载到 /mnt/data 目录)。
- 例子2(永久挂载):先执行
echo “/dev/sdb1 /mnt/data ext4 defaults 0 0” >> /etc/fstab,再执行 mount -a (使配置生效,重启后仍有效)。
- 备注:
ext4 是 Linux 常用文件系统,需根据实际磁盘文件系统修改(比如 xfs)。
umount:卸载磁盘/分区(卸载前需确保没有程序正在使用该分区)。
- 例子1:
umount /mnt/data (通过挂载点卸载)。
- 例子2:
umount /dev/sdb1 (通过分区路径卸载)。
- 注意:若提示“device is busy”,表示有程序正在使用该分区,先关闭程序或切换到其他目录,再卸载。
lsblk:查看磁盘和分区的树形结构(直观,比 fdisk 更简洁)。
- 例子:
lsblk (显示所有磁盘、分区的结构,以及挂载点)。
blkid:查看磁盘分区的 UUID 和文件系统(永久挂载推荐用 UUID)。
- 说明:UUID 是磁盘分区的唯一标识,用 UUID 挂载可避免磁盘顺序变化导致挂载失败。
- 例子1:
blkid (查看所有分区的 UUID、文件系统)。
- 例子2:
blkid /dev/sdb1 (查看 /dev/sdb1 分区的 UUID 和文件系统)。
- 例子3(UUID 永久挂载):
echo “UUID=xxxx-xxxx-xxxx /mnt/data ext4 defaults 0 0” >> /etc/fstab (将 xxxx 替换为实际 UUID)。
mount -o remount,rw:重新挂载分区为可读写模式(运维应急高频)。
- 说明:系统异常时,分区可能被挂载为只读模式(
ro),无法修改文件,需重新挂载为可读写(rw)。
- 例子:
mount -o remount,rw /dev/sda3 (将 /dev/sda3 分区重新挂载为可读写模式)。
3. 磁盘检查与修复
fsck:检查并修复文件系统错误(磁盘损坏时使用,谨慎!)。
- 说明:修复前需卸载磁盘,否则可能损坏数据。
- 例子:
fsck /dev/sdb1 (检查并修复 /dev/sdb1 分区的文件系统错误,按 y 确认修复)。
e2fsck:专门修复 ext 系列文件系统(ext2/ext3/ext4,比 fsck 更精准)。
- 说明:针对 ext 系列文件系统,修复功能更强大,需卸载分区后使用。
- 例子1:
e2fsck -f /dev/sdb1 (强制检查 /dev/sdb1 分区,即使文件系统无明显错误)。
- 例子2:
e2fsck -p /dev/sdb1 (自动修复可修复的错误,无需手动按 y 确认)。
xfs_repair:修复 xfs 文件系统(CentOS 7+ 常用)。
- 说明:xfs 文件系统无法用
fsck 修复,需用 xfs_repair,修复前需卸载分区。
- 例子:
xfs_repair /dev/sdb1 (检查并修复 /dev/sdb1 分区的 xfs 文件系统错误)。
五、网络操作(远程连接、端口查看、网络测试)
Linux 服务器大多是远程部署,网络操作必不可少:远程登录、查看端口、测试网络连通性、配置 IP 等。
1. 网络状态查看
ifconfig:查看/配置网卡信息(传统命令,部分系统默认不安装)。
- 说明:查看网卡 IP、MAC 地址、子网掩码等信息,可临时配置 IP。
- 例子1:
ifconfig (查看所有网卡的信息)。
- 例子2:
ifconfig eth0 192.168.1.101 netmask 255.255.255.0 (临时给 eth0 网卡配置 IP 和子网掩码,重启后失效)。
ip:查看/配置网卡信息(推荐,替代 ifconfig 的新命令)。
- 说明:功能更强大,覆盖
ifconfig 所有功能,还能查看路由、ARP 等。
- 例子1:
ip addr (查看所有网卡的 IP、MAC 等信息,最常用)。
- 例子2:
ip route (查看系统路由表,比如默认网关)。
- 例子3:
ip link (查看网卡状态,是否启用)。
netstat:查看网络连接、端口占用情况(传统命令)。
- 说明:
-t 查看 TCP 连接,-u 查看 UDP 连接,-l 查看监听端口,-n 不解析域名(速度快),-p 显示占用端口的进程(需 root 权限)。
- 例子1:
netstat -tlnp (查看所有正在监听的 TCP 端口,显示进程名称,最常用)。
- 例子2:
netstat -an (查看所有网络连接,不解析域名,速度快)。
ss:查看网络连接、端口占用情况(推荐,替代 netstat 的新命令)。
- 说明:速度比
netstat 快,功能更强大,参数和 netstat 类似。
- 例子1:
ss -tlnp (和 netstat -tlnp 效果一致,查看监听的 TCP 端口)。
- 例子2:
ss -an (查看所有网络连接)。
- 例子3:
ss -tlnp | grep 80 (查看 80 端口的占用情况)。
ip neigh:查看 ARP 缓存表(查看局域网内设备的 MAC 地址,排查网络连通性)。
- 说明:ARP 缓存表记录了 IP 地址和 MAC 地址的对应关系,排查局域网丢包、IP 冲突时常用。
- 例子:
ip neigh (查看所有 ARP 缓存记录,包括 IP、MAC、网卡、状态)。
netstat -rn:查看路由表(和 ip route 类似,传统用法)。
- 例子:
netstat -rn (查看系统路由表,显示目标网络、网关、网卡,不解析域名)。
ss -s:查看网络连接统计信息(运维排查网络负载高频)。
- 说明:统计 TCP/UDP 连接的数量、状态(比如
ESTABLISHED、LISTEN),快速判断网络负载。
- 例子:
ss -s (输出 TCP/UDP 连接统计,包括监听、建立、关闭等状态的连接数)。
2. 网络连通性测试
ping:测试网络连通性(最常用,检测是否能访问目标 IP/域名)。
- 说明:发送 ICMP 数据包,检测目标是否可达,按
Ctrl+C 停止。
- 例子1:
ping 192.168.1.100 (测试与 192.168.1.100 的连通性)。
- 例子2:
ping www.baidu.com (测试与百度域名的连通性,检测网络是否能上网)。
- 例子3:
ping -c 4 www.baidu.com (发送 4 个数据包后停止,不一直 ping)。
telnet:测试目标 IP+端口是否可达(检测端口是否开放)。
- 说明:简单直观,若端口开放则能连接,若关闭则提示连接失败。
- 例子:
telnet 192.168.1.100 80 (测试 192.168.1.100 的 80 端口是否开放)。
curl:发送 HTTP 请求、测试接口、下载文件(多功能)。
- 说明:比
telnet 更灵活,可测试 HTTP/HTTPS 端口,还能下载文件。
- 例子1:
curl www.baidu.com (发送 HTTP 请求,获取百度首页内容)。
- 例子2:
curl -I www.baidu.com (查看 HTTP 响应头信息)。
- 例子3:
curl -o test.txt https://xxx.com/test.txt (下载文件,保存为 test.txt)。
wget:下载文件(专门用于下载,比 curl 更适合大文件)。
- 说明:
-O 指定保存文件名,-c 断点续传(下载中断后可继续下载)。
- 例子1:
wget https://xxx.com/test.txt (下载文件,保存为默认名称)。
- 例子2:
wget -O myfile.txt https://xxx.com/test.txt (下载文件,保存为 myfile.txt)。
- 例子3:
wget -c https://xxx.com/bigfile.zip (断点续传下载大文件)。
traceroute:追踪数据包的传输路径(检测网络卡顿/丢包的位置)。
- 说明:查看数据包从本地到目标 IP/域名,经过的所有路由节点。
- 例子:
traceroute www.baidu.com (追踪到百度的传输路径)。
mtr:实时追踪网络路径并检测丢包(比 traceroute 更强大,运维高频)。
- 说明:结合
ping 和 traceroute 的功能,实时显示每个路由节点的丢包率、延迟。
- 例子1:
mtr www.baidu.com (实时追踪到百度的路径,按 q 退出)。
- 例子2:
mtr -c 10 www.baidu.com (发送 10 个数据包,统计每个节点的丢包率和延迟,输出汇总结果)。
nc (netcat):多功能网络工具(测试端口、传输文件、建立临时连接)。
- 说明:运维/开发高频,被称为“网络瑞士军刀”,支持 TCP/UDP 端口测试、文件传输等。
- 例子1(测试端口):
nc -zv 192.168.1.100 80 (-z 只检测端口,不建立连接,-v 显示详细信息)。
- 例子2(文件传输):本地执行
nc -l 8888 > test.txt,远程执行 nc 192.168.1.101 8888 < test.txt (将远程的 test.txt 传输到本地)。
curl -v:详细查看 HTTP 请求过程(开发测试接口高频)。
- 说明:显示 HTTP 请求的完整过程(请求头、响应头、连接过程),排查接口调用失败原因。
- 例子:
curl -v https://api.xxx.com/test (查看调用 test 接口的完整请求过程,定位接口报错原因)。
3. 网络配置(临时/永久)
- 临时配置 IP(
ip 命令):
- 例子1:
ip addr add 192.168.1.101/24 dev eth0 (给 eth0 网卡添加 IP,/24 对应子网掩码 255.255.255.0)。
- 例子2:
ip addr del 192.168.1.101/24 dev eth0 (删除 eth0 网卡上的 192.168.1.101 这个 IP)。
- 例子3:
ip link set eth0 up (启用 eth0 网卡,网卡禁用后可用此命令启用)。
- 例子4:
ip link set eth0 down (禁用 eth0 网卡,禁用后无法通过该网卡联网)。
- 临时配置默认网关(
ip 命令):
- 说明:默认网关用于实现跨网段通信,比如访问外网,临时配置重启后失效。
- 例子1:
ip route add default via 192.168.1.1 dev eth0 (将默认网关设置为 192.168.1.1,通过 eth0 网卡转发)。
- 例子2:
ip route del default via 192.168.1.1 (删除原有的默认网关配置)。
- 临时配置 DNS(修改
resolv.conf):
- 说明:DNS 用于解析域名,临时配置重启后失效。
- 例子1:
echo “nameserver 8.8.8.8” > /etc/resolv.conf (设置 DNS 为谷歌公共 DNS:8.8.8.8,覆盖原有配置)。
- 例子2:
echo “nameserver 114.114.114.114” >> /etc/resolv.conf (追加国内公共 DNS:114.114.114.114,不覆盖原有配置)。
- 永久配置 IP(CentOS/RHEL 系列,修改网卡配置文件):
- 永久配置 IP(Ubuntu/Debian 系列,修改 netplan 配置文件):
- 重启网络服务(不同系统命令):
- 说明:修改永久网络配置后,需重启网络服务或网卡生效。
- 例子1(CentOS/RHEL 7+):
systemctl restart network 或 nmcli connection reload。
- 例子2(Ubuntu/Debian):
systemctl restart networking 或 netplan apply。
- 例子3(通用,重启单个网卡):
ip link set eth0 down && ip link set eth0 up。
六、进程管理(查看、杀死、后台运行,避免进程占用资源)
进程是 Linux 系统运行的核心,运维/开发常需查看进程状态、杀死异常进程、后台运行程序。
1. 进程查看(高频,排查进程状态)
ps:查看当前系统的进程(最常用)。
- 说明:
-aux 组合参数,查看所有进程的详细信息(用户名、进程 ID、CPU 占用、内存占用等),必记!
- 例子1:
ps aux (查看所有进程的详细信息,按 CPU 占用排序)。
- 例子2:
ps aux | grep python (查看所有与 python 相关的进程,排查 python 程序是否在运行)。
- 例子3:
ps -ef (查看进程的父进程、子进程关系,便于排查进程依赖)。
top:实时查看进程动态(实时监控 CPU、内存占用)。
- 说明:进入
top 界面后,按 P 键按 CPU 占用率排序,按 M 键按内存占用率排序,按 k 键杀死进程,按 q 键退出。
- 例子:
top (实时监控进程状态,默认按 CPU 占用率排序)。
htop:增强版 top(界面更友好,功能更强大)。
- 说明:默认不安装,需通过
yum install htop、apt install htop 安装,支持鼠标操作,更直观。
- 例子:
htop (实时监控进程,可直接点击排序、杀死进程)。
pstree:以树形结构查看进程(直观显示父进程、子进程)。
- 说明:清晰展示进程之间的依赖关系,比如查看某个进程的子进程有哪些。
- 例子1:
pstree (查看所有进程的树形结构)。
- 例子2:
pstree -p (显示进程树形结构,同时显示进程 ID)。
- 例子3:
pstree -p root (查看 root 用户启动的所有进程树形结构)。
pgrep:根据进程名查找进程 ID(快速定位进程,比 ps 更简洁)。
- 说明:直接输出进程 ID,适合脚本中使用,或快速杀死进程。
- 例子1:
pgrep python (查找所有 python 进程的 ID,每行一个 ID)。
- 例子2:
pgrep -l python (查找 python 进程的 ID 和进程名,便于确认)。
2. 进程控制(杀死、暂停、恢复进程)
kill:杀死进程(根据进程 ID 杀死,最常用)。
- 说明:
-9 强制杀死进程(异常进程必用,无法恢复),默认信号(15)优雅杀死(允许进程保存数据)。
- 例子1:
kill 1234 (发送 15 信号,优雅杀死进程 ID 为 1234 的进程)。
- 例子2:
kill -9 1234 (发送 9 信号,强制杀死进程 ID 为 1234 的进程,高危!确认进程无误后使用)。
- 例子3:
kill -1 1234 (发送 1 信号,重启进程 ID 为 1234 的进程,适合服务类进程)。
killall:根据进程名杀死所有相关进程(批量杀死,高效)。
- 说明:无需查找进程 ID,直接通过进程名杀死所有对应进程,
-9 强制杀死。
- 例子1:
killall python (优雅杀死所有 python 进程)。
- 例子2:
killall -9 python (强制杀死所有 python 进程,谨慎使用,避免误杀)。
pkill:根据进程名杀死进程(结合 pgrep 和 kill 的功能,更灵活)。
- 说明:可通过进程名、用户名筛选进程,批量杀死。
- 例子1:
pkill python (杀死所有 python 进程,等同于 killall python)。
- 例子2:
pkill -u root python (杀死 root 用户启动的所有 python 进程,避免误杀其他用户进程)。
bg/fg:后台/前台运行进程(解决程序占用终端的问题)。
- 说明:运行程序时按
Ctrl+Z 可将进程暂停并放入后台,bg 恢复后台运行,fg 调回前台。
- 例子1:
bg 1 (将暂停的 1 号后台进程,恢复为后台运行)。
- 例子2:
fg 1 (将后台运行的 1 号进程,调回前台终端)。
- 例子3:运行程序时直接后台运行:
python test.py & (& 表示后台运行,终端可继续操作)。
nohup:后台运行进程(断开远程连接后,进程仍继续运行,运维高频)。
- 说明:结合
& 使用,避免远程登录断开后,后台进程被杀死,日志默认输出到 nohup.out。
- 例子1:
nohup python test.py & (后台运行 python 脚本,日志输出到 nohup.out)。
- 例子2:
nohup java -jar test.jar &>/dev/null & (后台运行 jar 包,忽略所有日志输出,不生成 nohup.out)。
3. 进程优先级调整(优化资源分配)
nice:启动进程时,设置进程优先级。
- 说明:优先级范围
-20(最高,只有 root 可设置)到 19(最低),默认优先级为 0,数值越小优先级越高。
- 例子1:
nice -n 10 python test.py (启动 python 脚本,设置优先级为 10,降低优先级,减少 CPU 占用)。
- 例子2:
nice -n -5 java -jar test.jar (root 用户启动 jar 包,设置优先级为 -5,提高优先级,优先分配 CPU)。
renice:调整正在运行的进程优先级(无需重启进程)。
- 说明:需指定进程 ID,
root 用户可调整所有进程,普通用户只能调整自己的进程。
- 例子1:
renice 5 1234 (将进程 ID 为 1234 的进程,优先级调整为 5)。
- 例子2:
renice -10 1234 (root 用户,将进程 1234 的优先级调整为 -10,提高优先级)。
七、系统信息查看(排查系统状态、硬件信息)
运维/开发常需查看系统版本、硬件信息、CPU/内存状态,排查系统异常。
1. 系统版本与内核信息
uname:查看系统内核信息。
- 说明:
-r 查看内核版本(最常用),-a 查看所有内核相关信息。
- 例子1:
uname -r (查看内核版本,输出示例:3.10.0-1160.el7.x86_64)。
- 例子2:
uname -a (查看内核版本、系统架构、主机名等所有信息)。
cat /etc/os-release:查看系统版本信息(通用,所有 Linux 系统适用)。
- 说明:清晰显示系统名称、版本号、ID 等,比其他命令更直观。
- 例子:
cat /etc/os-release (输出示例:CentOS Linux 7 (Core) 或 Ubuntu 20.04.5 LTS)。
cat /etc/redhat-release:查看 CentOS/RHEL 系列系统版本(专用)。
- 例子:
cat /etc/redhat-release (输出示例:CentOS Linux release 7.9.2009 (Core))。
lsb_release -a:查看 Ubuntu/Debian 系列系统版本(专用)。
- 说明:默认不安装,需通过
apt install lsb-release 安装。
- 例子:
lsb_release -a (输出示例:Ubuntu 20.04.5 LTS)。
2. CPU信息查看
lscpu:查看 CPU 详细信息(最常用,直观)。
- 说明:显示 CPU 架构、核心数、线程数、主频、缓存等所有信息。
- 例子:
lscpu (输出 CPU 核心数、线程数、型号等,快速判断 CPU 配置)。
cat /proc/cpuinfo:查看 CPU 详细参数(底层文件,更全面)。
- 说明:显示每个 CPU 核心的详细参数,适合排查 CPU 硬件问题。
- 例子:
cat /proc/cpuinfo | grep “model name” (只查看 CPU 型号)。
- 例子2:
cat /proc/cpuinfo | grep “cpu cores” | wc -l (统计 CPU 物理核心数)。
3. 内存信息查看
free:查看内存使用情况(最常用)。
- 说明:
-h 人性化显示(KB/MB/GB),清晰区分物理内存、交换内存(swap)。
- 例子:
free -h (输出示例:总内存、已用内存、空闲内存、缓存、swap 使用情况)。
- 解读:
buff/cache 是系统缓存,可被释放,实际空闲内存=free+buff/cache。
cat /proc/meminfo:查看内存详细信息(底层文件,更全面)。
- 说明:显示内存总量、空闲、缓存、
swap、内存碎片等所有参数,适合排查内存异常。
- 例子:
cat /proc/meminfo | grep “MemTotal” (查看物理内存总量)。
- 例子2:
cat /proc/meminfo | grep “SwapTotal” (查看交换内存总量)。
4. 其他系统信息(主机名、开机时间等)
hostname:查看/修改主机名。
- 例子1:
hostname (查看当前主机名)。
- 例子2:
hostname new-hostname (临时修改主机名,重启后失效)。
- 例子3(永久修改):
hostnamectl set-hostname new-hostname (通用,重启后仍有效)。
uptime:查看系统开机时间和负载。
- 说明:显示系统已开机多久、当前在线用户数、系统 1 分钟/5 分钟/15 分钟负载(负载值 < CPU 核心数为正常)。
- 例子:
uptime (输出示例:10:00:00 up 2d 3h, 2 users, load average: 0.20, 0.30, 0.25)。
w:查看当前在线用户和用户操作。
- 说明:显示当前登录的所有用户、登录时间、操作的终端、运行的命令。
- 例子:
w (排查是否有异常用户登录,或用户异常操作)。
last:查看系统登录日志(最近的登录记录)。
- 说明:显示登录用户、登录 IP、登录时间、退出时间,排查异常登录。
- 例子:
last (查看所有最近登录记录)。
- 例子2:
last | grep “root” (查看 root 用户的登录记录)。
八、包管理命令(安装、卸载、更新软件,必备)
Linux 系统安装、卸载、更新软件,依赖包管理命令,不同系统(CentOS/Ubuntu)命令不同。
1. CentOS/RHEL系列(yum/dnf命令,yum最常用)
yum install:安装软件包(最常用)。
- 说明:自动解决软件依赖,无需手动安装依赖包。
- 例子1:
yum install -y nginx (安装 nginx 服务,-y 自动确认,无需手动输入 y)。
- 例子2:
yum install -y tree vim (一次性安装 tree 和 vim 两个软件包)。
yum remove:卸载软件包。
- 说明:自动卸载软件及其无用的依赖包(不影响其他软件)。
- 例子:
yum remove -y nginx (卸载 nginx 服务,-y 自动确认)。
yum update:更新软件包(更新所有已安装软件,包括系统内核)。
- 例子1:
yum update -y (更新所有软件包,-y 自动确认,谨慎使用,避免内核更新导致兼容问题)。
- 例子2:
yum update -y nginx (只更新 nginx 软件,不更新其他软件,推荐)。
yum search:搜索软件包(查找软件是否在 yum 仓库中)。
- 例子:
yum search tree (搜索 tree 软件包,查看是否可通过 yum 安装)。
yum list:查看软件包状态。
- 例子1:
yum list installed (查看所有已安装的软件包)。
- 例子2:
yum list nginx (查看 nginx 软件包的安装状态、版本)。
yum clean all:清理 yum 缓存(软件安装失败、缓存过期时使用)。
- 例子:
yum clean all (清理所有 yum 缓存,之后可重新执行 yum install)。
yum makecache:生成 yum 缓存(清理缓存后,快速生成新缓存,提高安装速度)。
- 例子:
yum makecache (生成新的 yum 缓存,适合国内源,加快软件安装速度)。
2. Ubuntu/Debian系列(apt命令,最常用)
apt update:更新软件源缓存(必须先执行,再安装/更新软件)。
- 说明:更新本地软件源的缓存,获取最新的软件版本信息,不更新软件本身。
- 例子:
apt update -y (更新软件源缓存,-y 自动确认)。
apt install:安装软件包(最常用)。
- 说明:自动解决依赖,需先执行
apt update。
- 例子1:
apt install -y nginx (安装 nginx 服务,-y 自动确认)。
- 例子2:
apt install -y tree vim (一次性安装两个软件包)。
apt remove:卸载软件包(保留配置文件)。
- 例子:
apt remove -y nginx (卸载 nginx,保留 nginx 的配置文件,后续重新安装可复用配置)。
apt purge:彻底卸载软件包(删除配置文件,推荐)。
- 说明:卸载软件的同时,删除所有配置文件,避免残留配置影响后续安装。
- 例子:
apt purge -y nginx (彻底卸载 nginx,删除所有配置文件)。
apt upgrade:更新软件包(更新所有已安装软件,不更新系统内核)。
- 例子:
apt upgrade -y (更新所有软件,-y 自动确认,比 yum update 更安全,不轻易更新内核)。
apt search:搜索软件包。
- 例子:
apt search tree (搜索 tree 软件包,查看是否可通过 apt 安装)。
apt autoremove:清理无用依赖包(卸载软件后,清理残留的无用依赖)。
- 例子:
apt autoremove -y (自动清理无用依赖,释放磁盘空间)。
3. 通用包管理(rpm、dpkg,手动安装软件包)
rpm:CentOS/RHEL 系列,手动安装 rpm 软件包(无 yum 源时使用)。
- 说明:不自动解决依赖,需手动安装所有依赖包,不如
yum 便捷。
- 例子1:
rpm -ivh nginx-1.20.1-1.el7.x86_64.rpm (安装 rpm 软件包,-i 安装,-v 显示过程,-h 显示进度)。
- 例子2:
rpm -e nginx (卸载 rpm 安装的 nginx 软件)。
- 例子3:
rpm -qa | grep nginx (查看是否安装了 nginx 的 rpm 包)。
dpkg:Ubuntu/Debian 系列,手动安装 deb 软件包(无 apt 源时使用)。
- 说明:不自动解决依赖,需手动安装依赖包。
- 例子1:
dpkg -i nginx_1.18.0-6ubuntu14.4_amd64.deb (安装 deb 软件包)。
- 例子2:
dpkg -r nginx (卸载 deb 安装的 nginx,保留配置)。
- 例子3:
dpkg -P nginx (彻底卸载 deb 安装的 nginx,删除配置)。
- 例子4:
dpkg -l | grep nginx (查看 nginx 的 deb 包安装状态)。
dpkg -f install:修复 deb 包安装依赖问题(安装 deb 包依赖缺失时使用)。
- 例子:
apt -f install -y (自动安装 deb 包缺失的依赖,修复安装失败问题)。
九、压缩与解压命令(处理压缩包,日常高频)
运维/开发常需处理压缩包(上传/下载、备份文件),不同压缩格式命令不同。
1. tar格式(最常用,Linux默认压缩格式,支持打包+压缩)
tar -cvf:打包文件/目录(不压缩,仅打包)。
- 说明:
-c 打包,-v 显示过程,-f 指定打包文件名。
- 例子:
tar -cvf test.tar /home/test (将 /home/test 目录打包为 test.tar 文件,不压缩)。
tar -xvf:解压 tar 打包文件(不压缩的 tar 包)。
- 说明:
-x 解压,-v 显示过程,-f 指定解压文件名。
- 例子1:
tar -xvf test.tar (解压 test.tar 到当前目录)。
- 例子2:
tar -xvf test.tar -C /home (解压 test.tar 到 /home 目录,-C 指定解压路径)。
tar -zcvf:打包并压缩为 tar.gz 格式(最常用,压缩率高)。
- 说明:
-z 启用 gzip 压缩,结合打包和压缩,生成 .tar.gz 格式压缩包。
- 例子:
tar -zcvf test.tar.gz /home/test (将 /home/test 打包并压缩为 test.tar.gz)。
tar -zxvf:解压 tar.gz 格式压缩包(最常用)。
- 例子1:
tar -zxvf test.tar.gz (解压到当前目录)。
- 例子2:
tar -zxvf test.tar.gz -C /home/backup (解压到 /home/backup 目录)。
tar -jcvf:打包并压缩为 tar.bz2 格式(压缩率比 tar.gz 更高,速度稍慢)。
- 例子:
tar -jcvf test.tar.bz2 /home/test (打包压缩为 tar.bz2 格式)。
tar -jxvf:解压 tar.bz2 格式压缩包。
- 例子:
tar -jxvf test.tar.bz2 (解压 tar.bz2 压缩包到当前目录)。
tar -tf:查看压缩包内的文件/目录(不解压,快速查看内容)。
- 例子:
tar -tf test.tar.gz (查看 test.tar.gz 压缩包内的所有文件/目录)。
2. zip格式(跨平台,Windows和Linux通用)
zip:压缩文件/目录为 zip 格式。
- 说明:默认不安装,需通过
yum install zip、apt install zip 安装,-r 递归压缩目录。
- 例子1:
zip test.zip test.txt (将 test.txt 压缩为 test.zip)。
- 例子2:
zip -r test.zip /home/test (将 /home/test 目录及内容,递归压缩为 test.zip)。
unzip:解压 zip 格式压缩包。
- 说明:默认不安装,需通过
yum install unzip、apt install unzip 安装。
- 例子1:
unzip test.zip (解压 test.zip 到当前目录)。
- 例子2:
unzip test.zip -d /home/backup (解压到 /home/backup 目录,-d 指定路径)。
- 例子3:
unzip -l test.zip (查看 zip 压缩包内的文件/目录,不解压)。
3. 其他压缩格式(rar、gz,较少用)
rar:压缩/解压 rar 格式(Windows 常用,Linux 需安装)。
- 说明:需安装
rar 软件(yum install rar / apt install rar)。
- 例子1:
rar a test.rar /home/test (将 /home/test 压缩为 test.rar)。
- 例子2:
rar x test.rar (解压 test.rar 到当前目录)。
gzip:压缩单个文件为 gz 格式(不支持目录,较少用)。
- 说明:压缩后会删除原文件,
-d 解压。
- 例子1:
gzip test.txt (将 test.txt 压缩为 test.txt.gz,删除原 test.txt)。
- 例子2:
gzip -d test.txt.gz (解压 test.txt.gz,生成 test.txt,删除压缩包)。
十、定时任务(crontab,运维高频,自动执行脚本/命令)
运维常需设置定时任务,比如定时备份数据、定时清理日志、定时执行脚本。
1. crontab基础命令(查看、编辑、删除定时任务)
crontab -e:编辑定时任务(最常用,进入 vim 编辑界面)。
- 例子:
crontab -e (编辑当前用户的定时任务,添加/修改/删除任务)。
crontab -l:查看当前用户的所有定时任务。
- 例子:
crontab -l (列出当前用户设置的所有定时任务,确认任务是否生效)。
crontab -r:删除当前用户的所有定时任务(谨慎使用!一次性删除所有)。
- 例子:
crontab -r (删除所有定时任务,无法恢复,推荐用 crontab -e 删除单个任务)。
crontab -u 用户名 -l:查看指定用户的定时任务(需 root 权限)。
- 例子:
crontab -u root -l (查看 root 用户的定时任务)。
crontab -u 用户名 -e:编辑指定用户的定时任务(需 root 权限)。
- 例子:
crontab -u root -e (编辑 root 用户的定时任务,适合系统级定时任务)。
2. crontab定时任务格式(必记!)
crontab 任务格式:* * * * * 要执行的命令/脚本路径,5 个星号分别代表:
- 分钟(0-59)
- 小时(0-23)
- 日期(1-31)
- 月份(1-12)
- 星期(0-7,0 和 7 都代表周日)
常用特殊符号(简化定时任务设置):
*:任意值(比如第 1 个 * 表示每分钟执行)。
/n:每隔 n 单位执行(比如 */5 表示每隔 5 分钟)。
,:多个值(比如 1,3,5 表示 1、3、5 分钟/小时/日期等)。
-:范围值(比如 1-5 表示 1 到 5 分钟/小时/日期等)。
3. 高频定时任务示例(直接复用)
- 例子1:每分钟执行一次脚本
*/1 * * * * /home/test.sh
- 例子2:每天凌晨 2 点执行备份脚本(运维高频)
0 2 * * * /home/backup.sh
- 例子3:每天凌晨 3 点清理 nginx 日志(运维高频)
0 3 * * * rm -rf /var/log/nginx/access.log
- 例子4:每周日凌晨 1 点执行系统更新
0 1 * * 0 yum update -y &>/dev/null
- 例子5:每月 1 号、15 号凌晨 4 点执行脚本
0 4 1,15 * * /home/script.sh
- 例子6:每天 9 点到 18 点,每隔 30 分钟执行脚本
*/30 9-18 * * * /home/test.sh
4. crontab注意事项(避免任务执行失败)
- 执行脚本时,必须写绝对路径(比如
/home/test.sh,不能写 test.sh),避免找不到脚本。
- 定时任务执行的日志,可通过重定向写入文件,便于排查失败原因,比如:
0 2 * * * /home/backup.sh >> /home/backup.log 2>&1。
- 重启 crontab 服务,使任务生效(修改任务后,可重启服务确认):
- CentOS/RHEL:
systemctl restart crond
- Ubuntu/Debian:
systemctl restart cron
- 避免定时任务执行时占用过多资源(比如避免高峰期执行大文件备份)。
- 特殊字符(比如空格、
&)需转义,或用引号包裹,避免任务解析失败。
十一、常用应急命令(运维必备,解决突发问题)
系统突发异常(比如磁盘满、网络断、进程卡死)时,需快速解决。
free -h && sync && echo 3 > /proc/sys/vm/drop_caches:释放系统缓存(内存不足时使用)。
- 说明:
sync 同步磁盘数据,echo 3 释放页缓存、目录项缓存、inode 缓存,不影响系统运行,快速释放空闲内存。
fuser -m -k /mnt/data:强制杀死占用指定目录/分区的所有进程(卸载分区提示 busy 时使用)。
- 例子:
fuser -m -k /mnt/data (杀死所有占用 /mnt/data 分区的进程,之后可正常 umount)。
systemctl emergency:进入紧急模式(系统无法正常启动时使用)。
- 说明:紧急模式下,可排查文件系统、配置文件错误,修复后重启系统。
iptables -F:清空防火墙规则(网络不通,怀疑防火墙拦截时使用)。
- 说明:临时清空所有防火墙规则,测试网络连通性,CentOS 7+ 也可用
firewall-cmd --reload 重启防火墙。
journalctl -xe:查看系统错误日志(系统启动失败、服务启动失败时使用)。
- 说明:实时查看系统最新错误日志,快速定位故障原因(比如服务启动失败的具体报错)。
mount -o remount,rw /:重新挂载根分区为可读写(系统异常,根分区变为只读时使用)。
- 说明:根分区只读时,无法修改任何文件,执行此命令可恢复可读写,便于修复配置。
ps aux --sort=-%cpu | head -10:查看 CPU 占用最高的 10 个进程(CPU 飙升时,快速定位异常进程)。
ps aux --sort=-%mem | head -10:查看内存占用最高的 10 个进程(内存飙升时,快速定位异常进程)。
十二、新手避坑与高频技巧(必看!少走弯路)
整理新手最容易踩的坑,以及运维/开发高频技巧,帮你提高操作效率。
1. 新手避坑(重中之重!)
- ❌ 禁止直接执行
rm -rf /(高危命令!删除根目录所有文件,系统直接崩溃,无法恢复)。
- ❌ 执行
rm -rf 时,务必确认路径正确,推荐先执行 ls 路径 确认内容,再执行删除。
- ❌ 不要用
root 用户直接操作(日常操作用普通用户,需要权限时用 sudo,避免误操作)。
- ❌ 修改系统配置文件前,务必备份(比如
cp /etc/fstab /etc/fstab.bak),避免修改错误导致系统无法启动。
- ❌ 不要随意更新系统内核(
yum update 会更新内核,可能导致驱动、软件不兼容,推荐只更新单个软件)。
- ❌ 定时任务不要用相对路径,必须用绝对路径,否则会执行失败。
2. 高频技巧(提高效率)
总结
本文覆盖了 Linux 系统管理与运维中最核心、最高频的命令,按实际应用场景分类整理,并附有详细的说明和实例。对于新手,可以按部就班地从基础部分开始学习;对于有经验的用户,可以将其作为速查手册,遇到问题快速定位解决方案。
建议收藏本文,当你在实际工作中遇到诸如磁盘空间不足、网络端口占用、进程异常或需要编写自动化脚本时,可以快速找到对应的命令和用法,极大地提升工作效率。学习和实践是掌握 Linux 命令行的不二法门,欢迎在 云栈社区 这样的开发者社区与其他同行交流,分享你的使用心得或遇到的棘手问题。