Linux 常用命令大全
涵盖目录、文件、压缩、编辑、查找、进程、网络、用户、磁盘、软件包等十五大类,共 100+ 条命令。适合初/中级用户收藏查阅。
@TOC
一、目录操作
| 命令 | 说明 | 示例 |
|---|---|---|
pwd |
显示当前所在目录 | pwd |
ls -lah |
列出目录内容(含隐藏文件、权限、大小) | ls -lah /etc |
cd |
切换目录;cd -回到上次目录 |
cd /var/log |
mkdir -p |
递归创建多级目录 | mkdir -p app/logs/nginx |
rmdir |
删除空目录 | rmdir old_dir |
tree |
以树形结构显示目录(需安装) | tree -L 2 |
du -sh |
查看目录占用空间 | du -sh /var/log/* |
二、文件查看
| 命令 | 说明 | 示例 |
|---|---|---|
cat |
输出文件全部内容;-n显示行号 |
cat -n app.log |
less |
分页查看(可上下翻页,推荐替代 more) | less +G app.log |
more |
分页查看(只能向下翻) | more catalina.out |
head -n |
查看文件开头 N 行 | head -n 20 access.log |
tail -n |
查看文件末尾 N 行 | tail -n 100 app.log |
tail -f |
实时追踪日志(运维必备) | tail -f app.log |
wc -l |
统计文件行数/字符数/单词数 | wc -l app.log |
diff |
对比两个文件差异 | diff file1.txt file2.txt |
bash
复制
# 实时过滤错误日志(常用组合)tail -f app.log | grep "ERROR"# 查看大文件(less 快捷键:G 跳末尾,gg 跳开头,/keyword 搜索,q 退出)less +G bigfile.log
三、复制与移动
| 命令 | 说明 | 示例 |
|---|---|---|
cp -iv |
复制(询问确认+显示过程,推荐) | cp -iv src.conf src.conf.bak |
cp -r |
递归复制目录 | cp -r project project_bak |
mv -i |
移动/重命名(覆盖前确认) | mv -i old.txt new.txt |
rsync -avz |
增量同步/远程传输(生产推荐) | rsync -avz src/ user@host:/dst/ |
四、打包压缩
| 命令 | 说明 | 示例 |
|---|---|---|
tar -czvf |
打包并用 gzip 压缩为 .tar.gz | tar -czvf logs.tar.gz logs/ |
tar -xzvf |
解压 .tar.gz | tar -xzvf logs.tar.gz |
tar -cjvf |
打包并用 bzip2 压缩(压缩率更高) | tar -cjvf pkg.tar.bz2 dir/ |
zip -r |
压缩为 .zip(兼容 Windows) | zip -r out.zip dir/ |
unzip |
解压 .zip 文件 | unzip out.zip -d /tmp/ |
gzip / gunzip |
压缩/解压单个文件 | gzip app.log |
bash
复制
# 参数速记:c=创建 x=解压 z=gzip j=bzip2 v=显示 f=文件名tar -czvf backup.tar.gz /var/www/html/tar -xzvf backup.tar.gz -C /tmp/ # -C 指定解压目录
五、文本编辑(vim)
| 操作 | 命令/快捷键 | 说明 |
|---|---|---|
| 进入插入模式 | i/a/o |
光标前/后/下一行插入 |
| 退出模式 | Esc |
回到普通模式 |
| 保存退出 | :wq |
写入并退出 |
| 强制退出 | :q! |
不保存退出(卡住时用) |
| 只保存 | :w |
写入不退出 |
| 删除当前行 | dd |
普通模式下 |
| 复制/粘贴 | yy/p |
复制整行/粘贴 |
| 撤销/重做 | u/Ctrl+r |
普通模式下 |
| 查找 | /keyword→n |
向下查找下一个 |
| 全局替换 | :%s/old/new/g |
替换文件中所有 old→new |
| 跳到行首/行尾 | 0/$ |
普通模式下 |
| 跳到文件末尾 | G |
大写 G |
| 显示行号 | :set nu |
命令模式下 |
💡提示:卡住了?先按
Esc,再输:q!强制退出。编辑完记得:wq保存。
六、查找搜索
| 命令 | 说明 | 示例 |
|---|---|---|
find |
按文件名/类型/大小/时间查找 | find /etc -name "*.conf" |
grep |
按内容搜索(支持正则) | grep -rn "ERROR" logs/ |
locate |
快速文件名搜索(需 updatedb) | locate nginx.conf |
bash
复制
find . -name ".log" find . -type f -size +100M find . -mtime -7 find . -name ".tmp" -delete grep -n "Exception" app.log grep -i "error" app.log grep -v "DEBUG" app.log grep -rn "TODO" src/

七、系统信息
| 命令 | 说明 | 示例 | |
|---|---|---|---|
uname -a |
查看系统内核版本信息 | uname -a |
|
cat /etc/os-release |
查看 Linux 发行版信息 | cat /etc/os-release |
|
hostname |
查看/设置主机名 | hostname -I |
|
uptime |
系统运行时长 + 平均负载 | uptime |
|
date |
查看/设置系统时间 | date "+%Y-%m-%d %H:%M:%S" |
|
free -h |
查看内存使用情况(常用) | free -h |
|
top |
实时系统资源监控(交互式) | top |
|
htop |
增强版 top(需安装) | htop |
|
lscpu |
查看 CPU 信息 | lscpu |
|
env |
查看所有环境变量 | `env | grep PATH` |
bash
复制
# 一键查看系统概况echo "=== 系统信息 ===" && uname -aecho "=== 内存使用 ===" && free -hecho "=== 磁盘使用 ===" && df -hecho "=== 系统负载 ===" && uptime
八、进程管理
| 命令 | 说明 | 示例 | |
|---|---|---|---|
ps aux |
查看所有进程(快照,常用) | `ps aux | grep java` |
ps -ef |
查看完整命令的进程列表 | `ps -ef | grep nginx` |
kill PID |
向进程发送信号(默认 SIGTERM) | kill 1234 |
|
kill -9 PID |
强制终止进程(慎用) | kill -9 1234 |
|
killall |
按进程名终止所有同名进程 | killall nginx |
|
nohup & |
后台运行,退出终端后继续 | nohup java -jar app.jar & |
|
jobs |
查看当前终端后台任务 | jobs -l |
|
lsof -i :端口 |
查看端口被哪个进程占用(常用) | lsof -i :8080 |
bash
复制
# 查找并杀死占用8080端口的进程lsof -i :8080kill -9 $(lsof -t -i :8080)# 查找Java进程ps aux | grep java# 后台运行Spring Boot项目nohup java -jar app.jar > app.log 2>&1 &echo $! # 打印PID,记录下来方便后续 kill

九、网络命令
| 命令 | 说明 | 示例 | |
|---|---|---|---|
ip addr |
查看网络接口和 IP(替代 ifconfig) | ip addr show eth0 |
|
ifconfig |
查看网络配置(逐渐被 ip 替代) | ifconfig |
|
ping |
测试网络连通性 | ping -c 4 baidu.com |
|
curl |
发送 HTTP 请求/下载文件(必备) | curl -Ohttps://example.com/file |
|
wget |
下载文件(支持断点续传) | wget -chttps://example.com/big.tar.gz |
|
ss -tlnp |
查看监听端口(替代 netstat) | `ss -tlnp | grep 8080` |
netstat -tlnp |
查看端口占用(旧版) | `netstat -tlnp | grep 80` |
traceroute |
追踪数据包路由路径 | traceroute baidu.com |
|
scp |
跨服务器安全复制文件 | scp file.txt user@host:/path/ |
|
ssh |
远程登录服务器 | sshuser@192.168.1.100 |
bash
复制
# curl 常用技巧curl -I https://example.com # 只看响应头curl -X POST -H "Content-Type: application/json" -d '{"key":"val"}' http://api/endpoint# 查看所有监听端口ss -tlnp# scp 上传本地文件到服务器scp -r ./dist/ user@192.168.1.10:/var/www/html/

十、用户与权限管理
| 命令 | 说明 | 示例 |
|---|---|---|
whoami |
查看当前登录用户 | whoami |
id |
查看用户 uid/gid/所属组 | id username |
sudo |
以超级用户权限执行命令 | sudo apt update |
su - |
切换到 root 用户 | su - root |
useradd |
创建新用户 | useradd -m -s /bin/bash tom |
passwd |
修改用户密码 | passwd tom |
userdel |
删除用户 | userdel -r tom |
chmod |
修改文件权限(常用) | chmod 755 script.sh |
chown |
修改文件所有者 | chown www:www -R /var/www/ |
visudo |
编辑 sudo 权限配置(安全) | visudo |
bash
复制
# chmod 数字权限速记:r=4 w=2 x=1# 755 = rwxr-xr-x(拥有者全权,其他人读+执行)# 644 = rw-r--r--(拥有者读写,其他人只读)chmod 755 deploy.shchmod -R 644 /var/www/html/# 批量修改目录权限find /var/www -type d -exec chmod 755 {} ;find /var/www -type f -exec chmod 644 {} ;
十一、磁盘管理
| 命令 | 说明 | 示例 |
|---|---|---|
df -h |
查看磁盘分区使用率(常用) | df -h |
du -sh * |
查看当前目录各子目录大小 | du -sh /var/log/* |
lsblk |
列出所有块设备(磁盘/分区) | lsblk |
fdisk -l |
查看磁盘分区表 | sudo fdisk -l |
mount / umount |
挂载/卸载文件系统 | mount /dev/sdb1 /mnt/data |
iostat |
查看磁盘 I/O 性能(需安装 sysstat) | iostat -x 1 3 |
⚠️注意:磁盘占满时优先用
du -sh /var/log/*排查日志,再用find / -size +1G找大文件。切勿盲目删除!
十二、软件包管理
| 操作 | Debian/Ubuntu (apt) | CentOS/RHEL (yum/dnf) | ||
|---|---|---|---|---|
| 更新索引 | apt update |
yum check-update |
||
| 安装软件 | apt install -y vim |
yum install -y vim |
||
| 卸载软件 | apt remove vim |
yum remove vim |
||
| 搜索软件 | apt search keyword |
yum search keyword |
||
| 升级所有包 | apt upgrade -y |
yum update -y |
||
| 查看已安装 | `dpkg -l | grep vim` | `rpm -qa | grep vim` |
bash
复制
# Ubuntu 一次安装多个常用工具sudo apt update && sudo apt install -y vim curl wget git htop tree unzip net-tools lsof# CentOS 7 安装 EPEL 源后安装更多工具sudo yum install -y epel-releasesudo yum install -y vim curl wget git htop tree
十三、链接与特殊文件操作
| 命令 | 说明 | 示例 |
|---|---|---|
ln -s |
创建软链接/符号链接(常用) | ln -s /usr/local/jdk/bin/java /usr/bin/java |
ln |
创建硬链接 | ln file.txt hardlink.txt |
readlink -f |
解析软链接真实路径 | readlink -f /usr/bin/python3 |
touch |
创建空文件/更新时间戳 | touch newfile.txt |
file |
检测文件类型 | file unknown.bin |
stat |
查看文件详细属性(时间/权限/inode) | stat app.log |
十四、时间与定时任务
| 命令 | 说明 | 示例 |
|---|---|---|
date |
查看/格式化当前时间 | date "+%Y-%m-%d %H:%M:%S" |
timedatectl |
查看/设置时区(systemd 系统) | timedatectl set-timezone Asia/Shanghai |
crontab -e |
编辑当前用户定时任务(常用) | crontab -e |
crontab -l |
查看当前定时任务列表 | crontab -l |
at |
一次性定时执行命令 | at 22:00 <<< "backup.sh" |
bash
复制
# crontab 格式: 分 时 日 月 周 命令# 每天凌晨2点执行备份# 每周一早上8点# 每5分钟执行一次/5 * /scripts/check-service.sh
十五、实用命令组合技巧
日志排查
bash
复制
tail -f app.log | grep --color "ERROR|WARN"grep "ERROR" app.log | awk '{print $6}' | sort | uniq -c | sort -rngrep -rl "NullPointerException" /var/log/
系统排障
bash
复制
# 查看哪个进程占用CPU最高(按CPU降序)ps aux | sort -k3rn | head -10# 查看哪个进程占用内存最高ps aux | sort -k4rn | head -10# 磁盘空间告警时,找出占空间最大的目录du -sh /* 2>/dev/null | sort -rh | head -10# 端口被占用时ss -tlnp | grep :8080

管道符和重定向
bash
复制
ls -lh | grep ".log" | wc -l command > file.txt command >> file.txt command 2>&1 | tee out.txt command 2>/dev/null find . -name "*.log" | xargs rm

⚡ 最高频命令速查卡(建议收藏)
| 场景 | 命令 | |
|---|---|---|
| 查看目录详情 | ls -lah |
|
| 跳回上次目录 | cd - |
|
| 实时追踪日志 | tail -f app.log |
|
| 递归搜索关键字 | grep -rn "key" . |
|
| 查找Java进程 | `ps aux | grep java` |
| 强制结束进程 | kill -9 PID |
|
| 查看端口占用 | lsof -i :8080 |
|
| 查看磁盘用量 | df -h |
|
| 查看内存用量 | free -h |
|
| 压缩打包目录 | tar -czvf bak.tar.gz dir/ |
|
| 添加执行权限 | chmod 755 script.sh |
|
| 传文件到服务器 | scp file user@host:/path |
|
| 后台运行程序 | nohup java -jar app.jar & |
|
| 修改前备份配置 | cp -iv conf conf.bak |
|
| 清理30天前日志 | find . -name "*.log" -mtime +30 -delete |
|
| vim 保存/强退 | :wq/:q! |
本文自 CSDN 转载,原文链接:https://blog.csdn.net/weixin_43202444/article/details/161659971