一份系统整理的 Linux 命令速查手册,涵盖文件操作、权限管理、用户管理、进程监控、磁盘管理、网络诊断、压缩打包、文本处理、软件安装、系统服务、定时任务、日志排查等全场景高频命令,适合新手系统学习,也适合老手随手查阅、收藏备用。
📌 前言
Linux 命令行看起来"门槛高",但实际上日常开发和运维只会高频用到一两百个命令。本文按 使用场景 分类整理,每个命令都配有 语法说明 、常用参数 和 实战示例,尽量做到"查得到、看得懂、用得上"。
目录导航:
- 文件与目录操作
- 权限管理
- 用户与用户组管理
- 进程与系统监控
- 磁盘与存储管理
- 网络相关命令
- 压缩与解压
- 文本处理三剑客(grep / sed / awk)
- 软件包管理
- 系统服务管理(systemctl)
- 环境变量与配置文件
- 定时任务(crontab)
- 日志查看与排查
- Shell 快捷键与技巧
- 常见问题排查思路
- 总结速查表
一、文件与目录操作
1.1 查看与切换目录
| 命令 | 说明 | 示例 |
|---|---|---|
pwd |
显示当前所在目录 | pwd |
cd |
切换目录 | cd /var/log、cd ..(上一级)、cd ~(家目录)、cd -(上一次所在目录) |
ls |
列出目录内容 | ls -al(显示详细信息+隐藏文件)、ls -lh(文件大小人性化显示) |
tree |
以树状结构展示目录 | tree -L 2(只展示 2 层) |
1.2 创建、复制、移动、删除
mkdir -p dir1/dir2 # 递归创建多级目录,父目录不存在会自动创建
touch file.txt # 创建空文件 / 更新文件的修改时间戳
cp file.txt bak.txt # 复制文件
cp -r source/ target/ # 递归复制目录
cp -p file.txt bak.txt # 复制并保留原文件的权限、时间戳等属性
mv old.txt new.txt # 重命名 / 移动文件
mv file.txt /tmp/ # 移动文件到指定目录
rm file.txt # 删除文件
rm -f file.txt # 强制删除,不提示确认
rm -rf dir/ # 强制递归删除目录(⚠️ 谨慎使用,无法恢复)
rmdir empty_dir/ # 只能删除空目录
⚠️ 注意 :
rm -rf /或rm -rf /*是 Linux 中最危险的命令之一,执行删除操作前务必用pwd确认当前路径,养成"先ls确认再rm"的习惯。
1.3 查看文件内容
| 命令 | 适用场景 |
|---|---|
cat file.txt |
一次性输出全部内容,适合小文件 |
cat -n file.txt |
输出内容并显示行号 |
more file.txt |
分页查看(只能向下翻,功能较弱) |
less file.txt |
分页查看,支持上下翻页、关键字搜索(推荐用于大文件) |
head -n 20 file.txt |
查看文件前 20 行 |
tail -n 20 file.txt |
查看文件后 20 行 |
tail -f file.log |
实时追踪文件更新(运维排查日志高频命令) |
tail -F file.log |
追踪日志,文件被切割重建后自动重新打开(生产环境推荐用它替代 -f) |
wc -l file.txt |
统计文件行数 |
wc -c file.txt |
统计文件字节数 |
nl file.txt |
显示带行号的文件内容 |
less 内常用按键:
| 按键 | 作用 |
|---|---|
空格 / f |
向下翻一页 |
b |
向上翻一页 |
/关键字 |
向下搜索关键字 |
?关键字 |
向上搜索关键字 |
n / N |
跳转到下一个/上一个匹配项 |
g / G |
跳到文件开头/结尾 |
q |
退出 |
1.4 查找文件
find /var/log -name "*.log" # 按文件名查找(支持通配符)
find . -type f -size +100M # 查找大于 100MB 的文件
find . -type d -name "node_modules" # 查找名为 node_modules 的目录
find . -mtime -7 # 查找 7 天内修改过的文件
find . -name "*.tmp" -delete # 查找并删除匹配的文件(⚠️ 执行前先不带 -delete 确认结果)
find . -name "*.log" -exec rm {} \; # 查找后对每个结果执行命令
which python3 # 查找命令对应的可执行文件路径
whereis ls # 查找命令的二进制文件、源码、man 手册位置
locate nginx.conf # 基于数据库快速查找(需先执行 updatedb 建立索引)
1.5 链接文件
ln source.txt hard_link.txt # 创建硬链接(共享同一 inode,源文件删除后仍可访问)
ln -s /path/to/source soft_link # 创建软链接(类似 Windows 快捷方式,最常用)
💡 区别记忆 :硬链接不能跨分区、不能链接目录;软链接可以跨分区、可以链接目录,日常开发中软链接(
-s)使用频率更高。
1.6 文件对比与统计
diff file1.txt file2.txt # 比较两个文件的差异
diff -u file1.txt file2.txt # 以统一格式(unified diff)显示差异,常用于 patch
md5sum file.iso # 计算文件 MD5 校验值,验证文件完整性
sha256sum file.iso # 计算 SHA256 校验值
二、权限管理
Linux 权限分为 读(r)/ 写(w)/ 执行(x) ,对应 属主(u)/ 属组(g)/ 其他用户(o)。
chmod 755 script.sh # 数字方式:属主 rwx,属组 r-x,其他 r-x
chmod u+x script.sh # 符号方式:给属主添加执行权限
chmod g-w file.txt # 符号方式:去掉属组的写权限
chown user:group file.txt # 修改文件的所有者和所属组
chgrp group file.txt # 只修改所属组
权限数字对照表:
| 数字 | 权限 | 说明 |
|---|---|---|
| 7 | rwx | 读+写+执行 |
| 6 | rw- | 读+写 |
| 5 | r-x | 读+执行 |
| 4 | r-- | 只读 |
| 0 | --- | 无权限 |
常见三位数权限速查:
| 权限值 | 含义 | 典型场景 |
|---|---|---|
777 |
所有人可读写执行 | 一般不推荐,权限过大存在安全隐患 |
755 |
属主可读写执行,其他只读+执行 | 可执行脚本、公共目录 |
644 |
属主可读写,其他只读 | 普通配置文件、静态文件 |
600 |
仅属主可读写 | 私钥、敏感配置文件(如 id_rsa) |
700 |
仅属主可读写执行 | 个人脚本目录、家目录 |
2.1 特殊权限位
chmod +t /tmp # 设置粘滞位(Sticky Bit),目录下的文件只有属主能删除
chmod u+s /usr/bin/passwd # 设置 SUID,执行时以文件属主身份运行
chmod g+s dir/ # 设置 SGID,目录下新建文件自动继承父目录的属组
2.2 递归修改权限与属主
chmod -R 755 /var/www/html # 递归修改目录及其子文件的权限
chown -R www:www /var/www/html # 递归修改属主和属组,常用于 Web 服务部署
2.3 查看文件权限详情
ls -l file.txt # 查看单个文件权限(第一列即权限信息)
stat file.txt # 查看文件详细元信息:权限、大小、访问/修改/变更时间、inode
umask # 查看当前默认权限掩码
三、用户与用户组管理
whoami # 查看当前登录用户名
id # 查看当前用户的 UID、GID 及所属组列表
who # 查看当前登录系统的用户
w # 查看登录用户及其正在执行的操作
last # 查看用户最近的登录记录
useradd -m -s /bin/bash tom # 创建用户 tom,自动创建家目录并指定默认 Shell
passwd tom # 为用户 tom 设置/修改密码
userdel -r tom # 删除用户 tom 及其家目录
groupadd devs # 创建用户组 devs
usermod -aG devs tom # 将用户 tom 加入 devs 组(-a 表示追加,避免覆盖原有组)
usermod -s /bin/zsh tom # 修改用户 tom 的默认 Shell
groups tom # 查看 tom 所属的所有组
deluser tom devs # 将用户 tom 从 devs 组移除(部分发行版命令)
su - tom # 切换到用户 tom(带完整环境变量)
sudo command # 以管理员权限执行单条命令
sudo -i # 切换到 root 用户的交互式环境
visudo # 安全地编辑 sudoers 权限配置文件
💡 提示 :
usermod -aG一定要带上-a,否则会直接覆盖用户原有的附加组,是新手最容易踩的坑之一。
四、进程与系统监控
4.1 查看进程
ps -ef # 查看所有进程(完整格式,含 PPID)
ps aux # 查看所有进程(BSD 风格,含 CPU/内存占用)
ps -ef | grep nginx # 结合 grep 查找指定进程
top # 实时动态监控进程(按 q 退出,P 按 CPU 排序,M 按内存排序)
htop # top 的增强版,界面更友好,支持鼠标操作(需单独安装)
pstree # 以树状结构展示进程的父子关系
jobs # 查看当前终端后台任务
4.2 结束与控制进程
kill PID # 正常终止进程(发送 SIGTERM 信号)
kill -9 PID # 强制终止进程(发送 SIGKILL 信号,无法被进程忽略)
killall nginx # 按进程名批量终止
pkill -f "python app.py" # 按命令关键字匹配终止
command & # 让命令在后台运行
Ctrl + Z # 挂起当前前台进程
bg # 将挂起的进程放到后台继续执行
fg # 将后台进程调回前台
nohup command & # 使进程不受终端关闭影响,持续在后台运行
4.3 系统资源查看
| 命令 | 作用 |
|---|---|
free -h |
查看内存使用情况(human-readable,单位自动换算) |
df -h |
查看磁盘空间使用情况 |
du -sh dir/ |
查看目录/文件占用大小(-s 汇总,-h 人性化单位) |
| `du -sh * | sort -rh` |
uptime |
查看系统运行时长、登录用户数与平均负载 |
uname -a |
查看内核版本及系统架构信息 |
lscpu |
查看 CPU 详细信息(核心数、型号、架构) |
vmstat 1 |
每秒输出一次系统整体资源使用情况(CPU/内存/IO) |
iostat |
查看磁盘 IO 使用情况(需安装 sysstat) |
| `dmesg | tail` |
五、磁盘与存储管理
df -h # 查看各分区磁盘使用情况
df -i # 查看 inode 使用情况(inode 耗尽也会导致"磁盘满"报错)
du -h --max-depth=1 /var # 查看 /var 下一级子目录占用大小
lsblk # 以树状结构列出所有磁盘及分区信息
fdisk -l # 查看磁盘分区表详情(需 root 权限)
mount /dev/sdb1 /mnt/data # 挂载分区到指定目录
umount /mnt/data # 卸载分区
mount # 查看当前所有已挂载的文件系统
blkid # 查看设备的 UUID 和文件系统类型
💡 排查技巧 :当
df -h显示磁盘未满但仍报 "No space left on device" 时,大概率是 inode 耗尽 ,可用df -i确认。
六、网络相关命令
ping baidu.com # 测试网络连通性
ping -c 4 baidu.com # 只发送 4 次探测包后自动停止
curl -I https://example.com # 只查看 HTTP 响应头,不下载正文
curl -O https://example.com/a.zip # 下载文件并保留原文件名
wget https://example.com/file.zip # 下载文件
netstat -tulnp # 查看端口占用情况(较老命令,部分系统需用 ss 替代)
ss -tulnp # netstat 的现代替代命令,速度更快
ss -tulnp | grep 80 # 查看 80 端口被哪个进程占用
ifconfig # 查看网卡 IP 信息(较老命令)
ip addr # 查看网卡 IP 信息(推荐,新系统标准命令)
ip route # 查看路由表
scp file.txt user@host:/path # 通过 SSH 安全拷贝文件到远程主机
scp -r dir/ user@host:/path # 递归拷贝整个目录
rsync -avz source/ user@host:/path # 增量同步文件,比 scp 更高效,支持断点续传
ssh user@host # 通过 SSH 远程登录服务器
ssh -p 2222 user@host # 指定非默认端口登录
telnet host 80 # 测试指定主机端口是否可达(需安装)
nc -zv host 80 # 使用 netcat 快速测试端口连通性
traceroute baidu.com # 追踪数据包到达目标主机经过的路由节点
nslookup baidu.com # 查询域名对应的 DNS 解析记录
dig baidu.com # 更详细的 DNS 查询工具
💡 小技巧 :
curl -I常用于快速检测网站是否可达以及返回状态码,比浏览器打开更轻量。
七、压缩与解压
| 格式 | 压缩命令 | 解压命令 |
|---|---|---|
.tar.gz / .tgz |
tar -zcvf a.tar.gz dir/ |
tar -zxvf a.tar.gz |
.tar.bz2 |
tar -jcvf a.tar.bz2 dir/ |
tar -jxvf a.tar.bz2 |
.tar |
tar -cvf a.tar dir/ |
tar -xvf a.tar |
.zip |
zip -r a.zip dir/ |
unzip a.zip |
.gz |
gzip file.txt |
gunzip file.txt.gz |
常用附加参数:
tar -zxvf a.tar.gz -C /target/path # 解压到指定目录
tar -tvf a.tar.gz # 只查看压缩包内容,不解压
unzip -l a.zip # 只查看 zip 包内容列表
unzip a.zip -d /target/path # 解压到指定目录
参数记忆口诀 :c=创建(create),x=解压(extract),v=显示过程(verbose),f=指定文件名(file),z=gzip 格式,j=bzip2 格式。
八、文本处理三剑客(grep / sed / awk)
8.1 grep:查找
grep "error" app.log # 查找包含 error 的行
grep -i "error" app.log # 忽略大小写
grep -v "debug" app.log # 反向查找,排除包含 debug 的行
grep -r "TODO" ./src # 递归查找目录下所有文件
grep -n "error" app.log # 显示匹配的行号
grep -c "error" app.log # 统计匹配的行数
grep -A 3 "error" app.log # 显示匹配行及其后 3 行(After)
grep -B 3 "error" app.log # 显示匹配行及其前 3 行(Before)
grep -E "error|warning" app.log # 使用扩展正则匹配多个关键字
8.2 sed:流式编辑与替换
sed 's/old/new/' file.txt # 替换每行第一个匹配项(输出到终端,不改文件)
sed 's/old/new/g' file.txt # 替换每行所有匹配项
sed -i 's/old/new/g' file.txt # 直接修改原文件(⚠️ 不可逆,建议先备份)
sed -i.bak 's/old/new/g' file.txt # 修改原文件的同时自动生成 .bak 备份
sed -n '5,10p' file.txt # 只打印第 5~10 行
sed '3d' file.txt # 删除第 3 行
8.3 awk:结构化文本处理
awk '{print $1}' file.txt # 打印每行第一列(默认以空格/制表符分隔)
awk -F ':' '{print $1}' /etc/passwd # 以冒号作为分隔符,打印第一列(用户名)
awk '{print $1, $3}' file.txt # 打印第一列和第三列
awk '/error/ {print}' app.log # 打印包含 error 关键字的行
awk '{sum += $2} END {print sum}' data.txt # 对第二列求和
💡 三者分工 :
grep负责"找",sed负责"改",awk负责"按列处理数据",组合使用可以完成大部分日志分析场景。
九、软件包管理
| 发行版 | 更新索引 | 安装软件 | 卸载软件 | 搜索软件 |
|---|---|---|---|---|
| Debian / Ubuntu | apt update |
apt install nginx |
apt remove nginx |
apt search nginx |
| CentOS / RHEL 7 | yum makecache |
yum install nginx |
yum remove nginx |
yum search nginx |
| CentOS / RHEL 8+ | dnf makecache |
dnf install nginx |
dnf remove nginx |
dnf search nginx |
| Arch Linux | pacman -Sy |
pacman -S nginx |
pacman -R nginx |
pacman -Ss nginx |
其他常用操作:
apt list --installed # 查看已安装的软件包(Debian 系)
apt purge nginx # 卸载软件并清除其配置文件
dpkg -i package.deb # 手动安装本地 .deb 包
rpm -ivh package.rpm # 手动安装本地 .rpm 包
十、系统服务管理(systemctl)
现代主流发行版(CentOS 7+、Ubuntu 16.04+)普遍采用 systemd 作为初始化系统,通过 systemctl 统一管理服务:
systemctl start nginx # 启动服务
systemctl stop nginx # 停止服务
systemctl restart nginx # 重启服务
systemctl reload nginx # 重新加载配置(不中断服务)
systemctl status nginx # 查看服务当前状态
systemctl enable nginx # 设置开机自启
systemctl disable nginx # 取消开机自启
systemctl is-enabled nginx # 查看服务是否已设置开机自启
systemctl list-units --type=service # 列出所有正在运行的服务
journalctl -u nginx # 查看 nginx 服务的日志
journalctl -u nginx -f # 实时追踪服务日志
十一、环境变量与配置文件
env # 查看当前所有环境变量
echo $PATH # 查看 PATH 环境变量的值
export MY_VAR="value" # 临时设置环境变量(仅当前会话有效)
unset MY_VAR # 删除环境变量
source ~/.bashrc # 立即使配置文件生效,无需重新登录
常见配置文件对照:
| 文件路径 | 作用范围 |
|---|---|
/etc/profile |
所有用户的全局环境变量 |
/etc/bashrc |
所有用户的全局 Bash 配置 |
~/.bash_profile |
当前用户登录时加载的配置 |
~/.bashrc |
当前用户每次打开新终端时加载的配置 |
~/.zshrc |
使用 Zsh 时的用户配置文件 |
💡 常见操作 :把常用的环境变量(如
JAVA_HOME、自定义PATH)写入~/.bashrc,然后执行source ~/.bashrc使其立即生效。
十二、定时任务(crontab)
crontab -l # 查看当前用户的定时任务列表
crontab -e # 编辑当前用户的定时任务
crontab -r # 删除当前用户的所有定时任务
crontab 时间格式: 分 时 日 月 周 命令
# 每天凌晨 2 点执行备份脚本
0 2 * * * /home/user/backup.sh
# 每 5 分钟执行一次
*/5 * * * * /home/user/check.sh
# 每周一上午 9 点执行
0 9 * * 1 /home/user/report.sh
| 字段 | 取值范围 | 说明 |
|---|---|---|
| 分 | 0-59 | 分钟 |
| 时 | 0-23 | 小时 |
| 日 | 1-31 | 每月第几天 |
| 月 | 1-12 | 月份 |
| 周 | 0-7 | 星期(0 和 7 都表示周日) |
十三、日志查看与排查
tail -f /var/log/syslog # 实时查看系统日志(Debian 系)
tail -f /var/log/messages # 实时查看系统日志(RHEL/CentOS 系)
journalctl # 查看 systemd 统一管理的所有日志
journalctl -f # 实时追踪日志(类似 tail -f)
journalctl --since "1 hour ago" # 查看最近一小时的日志
journalctl -p err # 只查看错误级别的日志
dmesg | grep -i error # 查看内核日志中的报错信息
十四、Shell 快捷键与技巧
| 快捷键 / 命令 | 作用 |
|---|---|
Ctrl + C |
终止当前正在执行的命令 |
Ctrl + Z |
挂起当前进程(可用 fg 恢复) |
Ctrl + R |
反向搜索历史命令 |
Ctrl + L |
清屏(等价于 clear) |
Ctrl + A |
光标移动到行首 |
Ctrl + E |
光标移动到行尾 |
Ctrl + U |
删除光标前的所有内容 |
Ctrl + K |
删除光标后的所有内容 |
Tab |
命令/路径自动补全 |
!! |
重复执行上一条命令 |
!$ |
引用上一条命令的最后一个参数 |
history |
查看历史命令列表 |
alias ll='ls -al' |
自定义命令别名,写入 ~/.bashrc 可永久生效 |
十五、常见问题排查思路
| 现象 | 排查命令组合 |
|---|---|
| 服务器变卡、CPU 高 | top → 定位高占用进程 → `ps -ef |
| 磁盘写满 | df -h 看分区 → `du -sh /* |
| 端口无法访问 | `ss -tulnp |
| 服务启动失败 | systemctl status 服务名 → journalctl -u 服务名 -f 查看详细报错 |
| 网络不通 | ping 测试连通性 → traceroute 定位断点 → curl -I 验证应用层 |
| 内存不足 OOM | free -h 查看剩余内存 → `dmesg |
十六、总结速查表
| 场景 | 高频命令 |
|---|---|
| 文件操作 | ls cd cp mv rm find ln |
| 权限管理 | chmod chown chgrp |
| 用户管理 | useradd usermod passwd sudo |
| 进程监控 | ps top htop kill nohup |
| 磁盘管理 | df du lsblk mount |
| 网络诊断 | ping curl ss scp ssh |
| 压缩打包 | tar zip unzip |
| 文本处理 | grep sed awk |
| 服务管理 | systemctl journalctl |
| 定时任务 | crontab |
Linux 命令的学习没有捷径,多用、多查、多总结 是最快的进阶方式。建议将本文加入收藏夹,随用随查,逐步内化为肌肉记忆。
📎 如果本文对你有帮助,欢迎点赞收藏,也欢迎在评论区补充你常用但本文遗漏的命令!