【Linux】Linux 常用命令手册

一份系统整理的 Linux 命令速查手册,涵盖文件操作、权限管理、用户管理、进程监控、磁盘管理、网络诊断、压缩打包、文本处理、软件安装、系统服务、定时任务、日志排查等全场景高频命令,适合新手系统学习,也适合老手随手查阅、收藏备用。


📌 前言

Linux 命令行看起来"门槛高",但实际上日常开发和运维只会高频用到一两百个命令。本文按 使用场景 分类整理,每个命令都配有 语法说明常用参数实战示例,尽量做到"查得到、看得懂、用得上"。

目录导航:

  1. 文件与目录操作
  2. 权限管理
  3. 用户与用户组管理
  4. 进程与系统监控
  5. 磁盘与存储管理
  6. 网络相关命令
  7. 压缩与解压
  8. 文本处理三剑客(grep / sed / awk)
  9. 软件包管理
  10. 系统服务管理(systemctl)
  11. 环境变量与配置文件
  12. 定时任务(crontab)
  13. 日志查看与排查
  14. Shell 快捷键与技巧
  15. 常见问题排查思路
  16. 总结速查表

一、文件与目录操作

1.1 查看与切换目录

命令 说明 示例
pwd 显示当前所在目录 pwd
cd 切换目录 cd /var/logcd ..(上一级)、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 命令的学习没有捷径,多用、多查、多总结 是最快的进阶方式。建议将本文加入收藏夹,随用随查,逐步内化为肌肉记忆。


📎 如果本文对你有帮助,欢迎点赞收藏,也欢迎在评论区补充你常用但本文遗漏的命令!

相关推荐
搬砖的小码农_Sky1 小时前
LANDrop 在 Ubuntu 上的安装方法
linux·运维·计算机网络·ubuntu
raindayinrain1 小时前
深入理解Linux内核--内存架构,页框分配器,性能优化
linux·numa·水位·区域·页框分配
Mortalbreeze1 小时前
深入理解 TCP 协议(二):TCP 可靠传输与高效通信机制详解
linux·服务器·网络·网络协议·tcp/ip
bksczm1 小时前
细谈传输层TCP协议API接口的底层原理
服务器·网络·tcp/ip
2401_868534782 小时前
企业信息安全建设
linux·网络协议·beautifulsoup
小玮看世界2 小时前
[Python]从40分到100分:一场关于编程思维的“辩论赛”
运维·服务器
goyeer2 小时前
Liunx日志管理与journalctl
java·linux·运维·服务器·运维开发·信息化·信息化企业管理
酷可达拉斯2 小时前
自动化运维-Ansible Role综合应用案例-基于LNMP部署wordpress
linux·运维·服务器·自动化·ansible
拂拉氏2 小时前
【Linux】 编译与动静态库相关
linux·编译·动静态库