CHEATSHEET · LINUX
Linux 命令行 Cheatsheet
实战命令组合 + 语义搜索:用中文意图("删除 30 天前日志"、"看占用 8080 端口")就能找到对应命令。
| 命令 | 说明 | 分类 | |
|---|---|---|---|
| ls -lah | 列出当前目录(含隐藏 + 人类可读尺寸) | 文件目录 | |
| ls -lt | head | 按修改时间倒序看最近修改的文件 | 文件目录 | |
| tree -L 2 -a | 看目录结构 2 层(含隐藏) | 文件目录 | |
| cd - | 回到上一个工作目录 | 文件目录 | |
| mkdir -p a/b/c | 一次创建多级目录 | 文件目录 | |
| touch file.txt | 新建空文件 / 更新 mtime | 文件目录 | |
| cp -av src/ dst/ | 保留属性 + 详细输出地复制目录 | 文件目录 | |
| cp -r --parents path/to/file dst/ | 保留中间路径地复制 | 文件目录 | |
| mv old new | 重命名/移动 | 文件目录 | |
| rm -rf -- *.tmp ⚠ rm -rf 不可恢复,先 echo 验证 | 强制删除匹配的临时文件 | 文件目录 | |
| ln -sfn /opt/app/v2 /opt/app/current | 原子地切换 symlink | 文件目录 | |
| realpath ./x | 解析为绝对路径 | 文件目录 | |
| basename /a/b/c.txt .txt | 取文件名(去后缀) | 文件目录 | |
| dirname /a/b/c.txt | 取所在目录 | 文件目录 | |
| stat -c "%n %s %y" file | 看尺寸+修改时间 | 文件目录 | |
| cp file{,.bak} | shell 扩展备份一份 | 文件目录 | |
| cat -n file | 带行号显示文件 | 文本处理 | |
| less +F file.log | 类 tail -f 但可滚动搜索 | 文本处理 | |
| tail -n 200 -f /var/log/syslog | 实时跟踪日志最后 200 行 | 文本处理 | |
| head -c 200 file | 看前 200 字节 | 文本处理 | |
| grep -RIn --color=auto 'TODO' . | 递归在文本文件中搜索(带行号、忽略二进制) | 文本处理 | |
| grep -E -e 'pat1' -e 'pat2' file | 多模式 OR 搜索 | 文本处理 | |
| grep -v '^#' nginx.conf | grep -v '^$' | 去掉注释和空行后再看配置 | 文本处理 | |
| sed -i.bak 's/foo/bar/g' file | 原地替换并备份原文件 | 文本处理 | |
| sed -n '10,20p' file | 打印第 10–20 行 | 文本处理 | |
| awk '{print $1, $NF}' file | 打印每行第 1 列与最后一列 | 文本处理 | |
| awk -F, 'NR>1 {sum+=$3} END{print sum}' data.csv | CSV 跳过表头求和第三列 | 文本处理 | |
| cut -d':' -f1 /etc/passwd | 按分隔符取列 | 文本处理 | |
| sort -u file | 排序去重 | 文本处理 | |
| sort | uniq -c | sort -rn | head | TopN 频率统计经典三件套 | 文本处理 | |
| tr -d '\r' < win.txt > unix.txt | 去掉 CRLF | 文本处理 | |
| wc -l file | 统计行数 | 文本处理 | |
| diff -u a b | less | unified diff 比较 | 文本处理 | |
| paste -d, a.txt b.txt | 按行合并两个文件为 CSV | 文本处理 | |
| iconv -f GBK -t UTF-8 in.txt -o out.txt | 编码转换 | 文本处理 | |
| find . -type f -name "*.log" -mtime -7 | 7 天内修改的 .log 文件 | 查找 | |
| find . -type f -size +100M | 大于 100M 的文件 | 查找 | |
| find . -name '*.tmp' -delete | 查找并删除 | 查找 | |
| find . -type f -name '*.js' -exec wc -l {} + | 对匹配文件批量执行命令 | 查找 | |
| find . -type f -print0 | xargs -0 grep -l 'pat' | 安全处理含空格文件名的批量搜索 | 查找 | |
| locate filename | 基于 mlocate 数据库的快速查找(需 updatedb) | 查找 | |
| which -a node | 查看 PATH 中所有 node 位置 | 查找 | |
| fd -e ts pattern | fd(rust 实现的 find)按扩展名查找 | 查找 | |
| rg -n -t ts "useEffect" | ripgrep 在 ts 文件中搜索 | 查找 | |
| tar czf out.tgz dir/ | 打包并 gzip 压缩 | 归档压缩 | |
| tar xzf in.tgz -C /target | 解包到指定目录 | 归档压缩 | |
| tar tf in.tgz | head | 不解压看内容清单 | 归档压缩 | |
| tar cJf out.txz dir/ | xz 压缩(最高压缩比之一) | 归档压缩 | |
| zip -r out.zip dir/ | 打 zip 包 | 归档压缩 | |
| unzip -l in.zip | 查看 zip 内容 | 归档压缩 | |
| gzip -k file | 保留原文件压缩 | 归档压缩 | |
| gzip -d file.gz | 解压 .gz | 归档压缩 | |
| chmod 755 script.sh | 常用脚本权限:所有人读/执行,所有者写 | 权限 | |
| chmod -R u+rwX,go+rX dir/ | 递归赋读 + 目录可进入(X 大写:仅目录加 x) | 权限 | |
| chmod 600 ~/.ssh/id_ed25519 | SSH 私钥必须 600 | 权限 | |
| chown -R user:group dir/ | 改属主与属组 | 权限 | |
| umask 022 | 默认创建文件 644 / 目录 755 | 权限 | |
| getfacl file / setfacl -m u:alice:rw file | 细粒度 ACL 查看 / 赋权 | 权限 | |
| sudo -i | 切到 root 交互 shell | 权限 | |
| sudo !! | 用 sudo 重跑上一条命令 | 权限 | |
| ps -ef | grep [n]ginx | 看 nginx 进程([n] 技巧避免匹配自身 grep) | 进程 | |
| ps -eo pid,pcpu,pmem,cmd --sort=-pcpu | head | CPU 占用 Top 进程 | 进程 | |
| top / htop | 交互式监控(htop 更直观) | 进程 | |
| kill -TERM <pid> | 优雅终止进程 | 进程 | |
| kill -9 <pid> ⚠ 可能丢数据,仅在 TERM 失败时使用 | 强制结束 | 进程 | |
| pkill -f "node server.js" | 按命令行模式批量结束 | 进程 | |
| pgrep -af pattern | 按模式查找进程并显示命令 | 进程 | |
| nohup ./run.sh > out.log 2>&1 & | 后台启动并解除终端依赖 | 进程 | |
| jobs / fg %1 / bg %1 / disown -h %1 | Shell 作业控制 | 进程 | |
| lsof -p <pid> | 看进程打开的所有文件描述符 | 进程 | |
| lsof -i :8080 | 看哪个进程占用 8080 端口 | 进程 | |
| fuser -k 8080/tcp | 直接杀掉占用 8080 的进程 | 进程 | |
| strace -p <pid> | 附着到进程跟踪 syscall | 进程 | |
| systemctl status nginx | 看服务状态 | 服务/Systemd | |
| systemctl restart nginx | 重启服务 | 服务/Systemd | |
| systemctl enable --now nginx | 开机自启 + 立即启动 | 服务/Systemd | |
| systemctl daemon-reload | 改完 unit 文件后重载 | 服务/Systemd | |
| systemctl list-units --failed | 看所有失败的服务 | 服务/Systemd | |
| journalctl -u nginx -f | 跟踪某服务日志 | 服务/Systemd | |
| journalctl --since "1 hour ago" -p err | 最近 1 小时 error 级别日志 | 服务/Systemd | |
| systemctl edit nginx | 安全地新增 override 配置 | 服务/Systemd | |
| ip a | 看所有网络接口与 IP | 网络 | |
| ip route | 看路由表 | 网络 | |
| ss -tlnp | 看本机所有监听 TCP 端口及进程 | 网络 | |
| ss -tnp state established | 看已建立的 TCP 连接 | 网络 | |
| curl -fsSL https://example.com | 静默地下载或获取,失败时退出非 0 | 网络 | |
| curl -i -X POST -H "Content-Type: application/json" -d '{"a":1}' https://x | POST JSON 并打印响应头 | 网络 | |
| curl -O -L --remote-header-name <url> | 保留服务端建议的文件名下载 | 网络 | |
| wget -c <url> | 断点续传下载 | 网络 | |
| dig +short example.com | DNS 查询,仅看结果 | 网络 | |
| dig @8.8.8.8 example.com AAAA | 指定 DNS 服务器查 IPv6 | 网络 | |
| nslookup example.com | 兼容性 DNS 查询 | 网络 | |
| ping -c 4 host | ping 4 次 | 网络 | |
| mtr host | 组合 ping+traceroute 的实时探测 | 网络 | |
| nc -zv host 1-1024 | 扫端口 | 网络 | |
| nc -lk 9000 | 简易 TCP 监听(调试用) | 网络 | |
| tcpdump -i any -nn -s0 -w cap.pcap port 80 | 抓 80 端口流量到 pcap | 网络 | |
| iptables -L -n -v | 看 netfilter 规则 | 网络 | |
| firewall-cmd --add-port=8080/tcp --permanent && firewall-cmd --reload | firewalld 永久放行端口 | 网络 | |
| df -hT | 看挂载点剩余空间与文件系统类型 | 磁盘 | |
| du -sh * | 当前目录下每个项目的占用 | 磁盘 | |
| du -h --max-depth=1 / | sort -h | 从根目录按大小排序 | 磁盘 | |
| lsblk -f | 看块设备 + 文件系统 | 磁盘 | |
| blkid | 看设备 UUID/LABEL | 磁盘 | |
| mount /dev/sdb1 /mnt | 挂载 | 磁盘 | |
| umount /mnt | 卸载 | 磁盘 | |
| mkfs.ext4 /dev/sdb1 ⚠ 会清空分区数据 | 格式化为 ext4 | 磁盘 | |
| dd if=/dev/zero of=test bs=1M count=100 status=progress ⚠ of= 写错会毁数据 | 生成 100MB 测试文件 / 测写入速度 | 磁盘 | |
| fsck -y /dev/sdb1 | 修复文件系统 | 磁盘 | |
| iostat -x 1 5 | I/O 利用率采样 | 磁盘 | |
| id | 看当前用户 uid/gid/组 | 用户 | |
| whoami | 当前用户名 | 用户 | |
| sudo useradd -m -s /bin/bash alice | 创建用户带 home 与 bash | 用户 | |
| sudo passwd alice | 设置/重置密码 | 用户 | |
| sudo usermod -aG docker alice | 把用户加入 docker 组 | 用户 | |
| sudo userdel -r alice | 删除用户及 home | 用户 | |
| last -n 20 | 看最近登录记录 | 用户 | |
| w | 看当前在线用户 | 用户 | |
| dmesg -T | tail -n 100 | 看内核日志(带时间) | 日志 | |
| journalctl -k | systemd 风格的内核日志 | 日志 | |
| journalctl --vacuum-size=200M | 把 journald 日志压缩到 200M 内 | 日志 | |
| logger -t myapp "hello" | 向 syslog 写一条日志 | 日志 | |
| top -o %MEM | 按内存排序 | 性能监控 | |
| free -h | 看内存使用 | 性能监控 | |
| vmstat 1 5 | CPU/IO/内存采样 5 次 | 性能监控 | |
| mpstat -P ALL 1 | 每核 CPU 利用率 | 性能监控 | |
| pidstat -p <pid> 1 | 某进程的资源采样 | 性能监控 | |
| sar -u 1 5 | 系统活动报表(来自 sysstat) | 性能监控 | |
| time <cmd> | 测某命令耗时 | 性能监控 | |
| watch -n 1 "ls -lah /tmp" | 每秒刷新执行 | 性能监控 | |
| ssh-keygen -t ed25519 -C "you@host" | 生成 ed25519 密钥 | SSH/远程 | |
| ssh-copy-id user@host | 把公钥安装到对端 | SSH/远程 | |
| ssh -L 8080:localhost:80 user@host | 本地端口转发 | SSH/远程 | |
| ssh -R 9000:localhost:9000 user@host | 反向端口转发 | SSH/远程 | |
| ssh -D 1080 user@host | 动态 SOCKS5 代理 | SSH/远程 | |
| scp -r dir user@host:/path | 上传整个目录 | SSH/远程 | |
| rsync -avzP --delete src/ user@host:dst/ | 高效增量同步并删除多余文件 | SSH/远程 | |
| rsync -avh --exclude node_modules src/ dst/ | 本地同步并排除目录 | SSH/远程 | |
| ssh-add -l | 看 ssh-agent 已加载密钥 | SSH/远程 | |
| ~/.ssh/config Host alias | 常用别名配置(HostName / User / IdentityFile / Port) | SSH/远程 | |
| env | sort | 看所有环境变量 | 环境变量 | |
| export PATH="$HOME/bin:$PATH" | 把目录加到 PATH 前面 | 环境变量 | |
| echo $SHELL | 看当前 shell | 环境变量 | |
| set -a; source .env; set +a | 把 .env 全部 export 到当前 shell | 环境变量 | |
| unset VAR | 清除变量 | 环境变量 | |
| ps -ef | grep -v grep | grep node | awk '{print $2}' | xargs -r kill -9 | 杀掉所有 node 进程(pattern 不匹配自身) | 管道组合 | |
| find . -name '*.log' -mtime +30 | xargs -r rm -v | 删除 30 天前的日志 | 管道组合 | |
| du -ah . | sort -rh | head -n 20 | 当前目录下最大 20 个文件/目录 | 管道组合 | |
| history | awk '{print $2}' | sort | uniq -c | sort -rn | head | 最常用命令 Top10 | 管道组合 | |
| tail -F access.log | grep -v 'health' | tee filtered.log | 过滤健康检查并旁路落盘 | 管道组合 | |
| date +%Y%m%d_%H%M%S | 时间戳后缀(备份命名常用) | 管道组合 | |
| curl -s ip.sb | 一行查看公网 IP | 管道组合 | |
| openssl rand -base64 32 | 生成 32 字节随机串 | 管道组合 | |
| openssl s_client -connect host:443 -servername host </dev/null | 查看远端 TLS 证书与握手 | 管道组合 | |
| openssl x509 -in cert.pem -noout -dates -subject -issuer | 看证书有效期与签发者 | 管道组合 | |
| docker ps -a | 看所有容器(含已停止) | 容器 | |
| docker logs -f --tail 200 <c> | 跟踪容器日志 | 容器 | |
| docker exec -it <c> bash | 进入容器交互 shell | 容器 | |
| docker run --rm -it -v $PWD:/work -w /work alpine sh | 一次性容器,挂载当前目录 | 容器 | |
| docker system df | 看 Docker 各类对象占用 | 容器 | |
| docker system prune -af --volumes ⚠ 会删卷,确保无业务数据 | 清理未用容器/镜像/卷 | 容器 | |
| docker stats | 实时容器资源 | 容器 | |
| docker compose up -d --build | 后台启动并强制重建 | 容器 | |
| docker inspect -f '{{.NetworkSettings.IPAddress}}' <c> | 取容器 IP | 容器 |
共 164 / 164 条 · 语义搜索:中文意图自动扩展为英文命令 token,例:「删除」匹配 rm/unlink,「端口」匹配 ss/lsof。