本教程梳理了 Linux 日常开发与运维中最常用的核心指令,配有清晰的语法说明与真实实战场景示例。
目录
一、 文件与目录操作
1. ls — 列出目录内容
- 常用参数:
-l:以长格式展示详细信息(权限、所有者、大小、修改时间)。-a:显示所有文件(包含.开头的隐藏文件)。-h:结合-l使用,以人类可读的格式显示文件大小(如 1K, 2M, 3G)。-t:按修改时间降序排序。
- 实战示例:
ls -lh # 查看当前目录下文件的详细信息(大小可读) ls -la | grep "\.log$" # 查看所有以 .log 结尾的文件(含隐藏文件) ls -lht # 按最新修改时间倒序列出文件
2. cd 与 pwd — 切换与查看路径
- 常用操作:
pwd # 显示当前工作目录的全路径 cd /var/log # 进入指定绝对路径 cd .. # 返回上一级目录 cd ~ 或 cd # 快速切回当前用户的家目录 cd - # 快速切回上一次所在的目录
3. mkdir — 创建目录
- 常用参数:
-p:递归创建多级目录。
- 实战示例:
mkdir -p project/src/components # 一次性创建完整级联目录
4. rm — 删除文件或目录
[!CAUTION]
rm -rf极其危险,使用时务必核对路径,切忌在根目录rm -rf /或通配符混淆时使用。
- 常用参数:
-r:递归删除目录及其下所有内容。-f:强制删除,不提示确认。-i:删除前逐一询问确认。
- 实战示例:
rm file.txt # 删除单个文件 rm -rf ./tmp_dir # 强制递归删除指定目录
5. cp 与 mv — 复制与移动/重命名
- 常用参数:
cp -r:递归复制整个目录。cp -p:保持原文件的权限与时间戳戳记。
- 实战示例:
cp -rp /app/config /app/config_bak # 完整备份目录(保留属性) mv old_name.sh new_name.sh # 重命名文件 mv *.log /var/log/backup/ # 移动所有 log 文件到备份目录
6. find — 强悍的文件搜索工具
- 常用参数:
-name:按文件名查找(支持通配符)。-type:按类型查找(f文件,d目录)。-mtime:按修改时间查找(如-77天内,+3030天前)。-size:按文件大小查找(如+100M大于100兆)。-exec:对查找出的结果执行后续命令。
- 实战示例:
find /var/log -name "*.log" -mtime +7 # 查找 7 天前修改的日志文件 find / -type f -size +500M # 全盘查找大于 500MB 的文件 find . -name "*.tmp" -exec rm -f {} \; # 查找当前目录下所有 .tmp 文件并自动删除
二、 文本查看与高效处理
1. cat / less / head / tail — 文本阅读四剑客
cat:适合查看小型文件,或者配合管道连接文本。less:适合查看大文件,支持上下翻页 (PageUp/PageDown)、搜索 (/keyword)。head:查看文件开头的若干行(默认 10 行)。head -n 20 file.txttail:查看文件末尾的若干行。- 实战示例:
tail -f /var/log/nginx/access.log # 实时动态监控日志文件新增内容 tail -n 100 app.log # 查看日志文件最后 100 行
2. grep — 文本过滤利器
- 常用参数:
-i:忽略大小写。-v:反向选择(输出不匹配的行)。-n:显示行号。-r/-R:递归搜索目录下的所有文件。-C 5:显示匹配行及其前后各 5 行(上下文)。
- 实战示例:
grep -i "error" /var/log/syslog # 忽略大小写查找 error 关键字 grep -rn "DATABASE_URL" ./src/ # 在 ./src 目录下递归搜索带有 DATABASE_URL 的代码行及行号 ps -ef | grep java | grep -v grep # 过滤 java 进程(并排除 grep 自身)
3. awk — 文本处理与列提取
- 核心语法:
awk '条件 {动作}' 文件 - 实战示例:
# 提取 ps 输出中的 PID(第2列)和命令(第8列) ps -ef | awk '{print $2, $8}' # 统计 access.log 中访问量最高的 IP 前 10 名 awk '{print $1}' access.log | sort | uniq -c | sort -nr | head -n 10
4. sed — 流编辑器(批量文本替换)
- 核心语法:
sed 's/旧文本/新文本/g' 文件 - 实战示例:
sed 's/http/https/g' config.conf > new_config.conf # 将 http 替换为 https 并重定向 sed -i 's/8080/9090/g' config.conf # -i 直接修改原文件
三、 系统状态与进程监控
1. top / htop — 实时资源监控
top:Linux 原生系统监控调优工具。- 在
top界面中按P(按 CPU 排序)、M(按内存排序)、q(退出)。
- 在
htop:色彩丰富、支持鼠标操作的增强版top(需额外安装yum/apt install htop)。
2. ps — 进程快照
- 常用参数组合:
ps -ef或ps aux:展示系统所有运行中进程的详细信息。
- 实战示例:
ps aux | grep nginx # 查找 Nginx 进程 ps -ef --sort=-%mem | head -n 10 # 按内存占用倒序列出前 10 个进程
3. kill 与 killall — 结束进程
- 常用信号:
-15(SIGTERM):温和终止(默认信号,给进程清理现场的时间)。-9(SIGKILL):强制无条件杀死进程。
- 实战示例:
kill 12345 # 正常关闭 PID 为 12345 的进程 kill -9 12345 # 强制杀死 PID 为 12345 的进程 killall -9 python3 # 强制杀死所有名为 python3 的进程
4. df 与 du — 磁盘空间分析
df -h:查看各个挂载分区的磁盘总容量与剩余空间。du -sh *:查看当前目录下各个文件和子目录的占用空间大小。- 实战示例:
df -h # 查看磁盘挂载使用情况 du -sh /var/log # 统计 /var/log 目录的总占用 du -h --max-depth=1 /var | sort -hr # 列出 /var 下一级子目录的大小并按从大到小排序
5. free — 内存查看
- 常用参数:
-h(人类可读,显示 MB/GB)、-m(以 MB 显示)。 - 实战示例:
free -h # 查看物理内存 (Mem) 与 交换分区 (Swap) 使用情况
6. systemctl — 服务管理 (Systemd)
- 实战示例:
systemctl status nginx # 查看 Nginx 服务运行状态 systemctl start nginx # 启动服务 systemctl stop nginx # 停止服务 systemctl restart nginx # 重启服务 systemctl enable nginx # 设置开机自启
四、 用户与权限管理
1. Linux 权限说明
通过 ls -l 可以看到如 -rwxr-xr-- 的权限字符串:
- 前缀:
-表示文件,d表示目录,l表示软链接。 - 后9位分为三组:属主 (User) / 属组 (Group) / 其他人 (Others)
- 读写执行数值:
r(Read)=4,w(Write)=2,x(Execute)=1。
2. chmod — 修改文件权限
- 实战示例:
chmod +x script.sh # 为脚本添加可执行权限 chmod 755 script.sh # 设置 u=rwx(7), g=rx(5), o=rx(5) chmod -R 700 /home/user/sec # 递归设置目录及其下文件仅所有者可读写执行
3. chown — 修改文件所有者与所属组
- 实战示例:
chown www-data:www-data /var/www/html # 将属主和属组修改为 www-data chown -R root:root /opt/app # 递归修改整个目录的所有者
4. sudo — 提权执行
- 实战示例:
sudo apt update # 以 root 临时权限更新软件包 sudo -i # 切换到 root 用户的交互式 Shell 环境
五、 网络诊断与文件传输
1. ping / curl / wget — 网络连通与请求
ping:测试 IP 连通性(ping -c 4 baidu.com发送4个包后停止)。curl:命令行 HTTP 客户端。curl -I https://example.com # 只获取 HTTP Response Header curl -X POST -H "Content-Type: application/json" -d '{"key":"val"}' http://localhost:8080/apiwget:网络文件下载器。wget -c https://example.com/bigfile.zip # -c 支持断点续传下载
2. netstat 与 ss — 端口与网络连接查看
- 常用参数:
-t(TCP),-u(UDP),-l(Listen 监听),-n(数字端口),-p(显示 PID/进程名)。 - 实战示例:
ss -tuln # 查看当前机器监听的所有 TCP/UDP 端口 netstat -tulnp | grep 8080 # 查看占用 8080 端口的进程 PID
3. ssh / scp / rsync — 远程连接与文件传输
ssh:远程登录。ssh -p 22 root@192.168.1.100 # 指定端口登录远程服务器scp:基于 SSH 的远程文件拷贝。scp local.tar.gz root@192.168.1.100:/tmp/ # 将本地文件发送到远程rsync:高效远程增量同步工具。rsync -avz --progress ./dist/ root@192.168.1.100:/var/www/html/ # 增量同步网站代码
六、 归档与压缩解压
1. tar — 归档与打包解压
- 口诀:
- 打包压缩 (
.tar.gz):tar -zcvf 压缩包名.tar.gz 被压缩文件 - 解压文件 (
.tar.gz):tar -zxvf 压缩包名.tar.gz -C 解压目标目录
- 打包压缩 (
- 实战示例:
tar -zcvf project_bak.tar.gz ./project # 将 project 目录打成 gzip 压缩包 tar -zxvf project_bak.tar.gz -C /tmp/ # 解压到 /tmp 目录 tar -tf project_bak.tar.gz # 不解压直接查看包内文件列表
2. zip / unzip
- 实战示例:
zip -r archive.zip ./folder # 递归压缩文件夹为 zip unzip archive.zip -d /tmp/ # 解压 zip 包到指定目录
七、 运维高频实战组合技(One-Liners)
-
查找占用磁盘空间最大的前 10 个文件:
find / -type f -exec du -h {} + 2>/dev/null | sort -rh | head -n 10 -
统计某个日志文件中出现频率最高的前 10 个访问 IP:
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -n 10 -
快速清空大日志文件内容而不删除文件:
> /var/log/large_app.log -
实时监控网络流量或监听某端口是否有数据包发来(
tcpdump):tcpdump -i eth0 port 80 -nn -X -
后台运行程序并把标准输出与错误日志记录到文件(非挂起
nohup):nohup python3 app.py > app.log 2>&1 &