野生Linux 命令速查手册
这份手册是我从几百条命令里筛出来的,标准就三条:天天用得到、出问题能救命、复制就能跑。 不堆参数,只留你最可能用到的那些。
📂 文件与目录
| | |
|---|
ls -lh | | ls -lht |
find . -name "*.log" | | -type f -size +100M |
fd log | | fd -e py |
du -sh * | sort -hr | head -10 | | ncdu |
df -h | | df -i |
lsof +L1 | grep deleted | | |
🔍 文本处理
| | |
|---|
grep -r "error" /var/log/ | | -v 排除,-A 3 多显示后3行,-c 计数,-i 忽略大小写 |
rg error /var/log/ | | |
sed -i 's/old/new/g' file | | -i.bak |
awk '{print $1,$NF}' file | | -F':' 指定分隔符,$3>100 过滤,{sum+=$3}END{print sum} 求和 |
jq '.items[].name' data.json | | jq -r 去掉引号输出,jq '.[] | select(.status=="error")' |
sort file | uniq -c | sort -rn | | |
cat /dev/null > file.log | | |
👤 用户与权限
| |
|---|
chmod 755 script.sh | 7=rwx 所有者, 5=r-x 组, 5=r-x 其他人 |
chown user:group file | |
chmod u+x file | |
find . -type f -perm 777 | |
usermod -aG sudo username | |
sudo -i | |
visudo | 安全编辑 sudoers(自带语法检查,别直接 vim) |
⚡ 进程管理
| |
|---|
top | 交互看进程。htop 按 F6 选排序方式,F9 杀进程 |
ps aux --sort=-%mem | head -10 | |
ps -ef --forest | |
kill -9 PID | |
kill -HUP PID | |
nohup cmd & | |
Ctrl+Z | |
lsof -i :80 | |
💾 磁盘与存储
| |
|---|
lsblk -f | |
mount /dev/sdb1 /mnt/data | |
umount -l /mnt/data | |
mount -o remount,rw / | |
findmnt --verify | 验证 /etc/fstab 语法(改完 fstab 先跑这个!) |
fdisk -l | |
fsck /dev/sdb1 | |
dd if=/dev/sda of=/backup/sda.img bs=4M status=progress | |
🌐 网络诊断
| |
|---|
ss -tlnp | |
ss -tan state time-wait | wc -l | 数 TIME_WAIT 连接数(多了说明短连接太多) |
ss -tan | awk '{print $1}' | sort | uniq -c | sort -rn | |
curl -I https://example.com | |
curl -w "\ntime_total: %{time_total}\n" -o /dev/null -s https://example.com | |
dig +short example.com | |
nc -zv 1.2.3.4 22 | |
mtr example.com | 路由追踪+丢包/延迟统计(比 traceroute 直观) |
tcpdump -i eth0 -nn port 80 | |
telnet 1.2.3.4 3306 | |
nmcli device wifi connect "SSID" password "密码" | |
📦 压缩与归档
| |
|---|
tar -czvf archive.tar.gz dir/ | |
tar -xzvf archive.tar.gz | |
tar -tzvf archive.tar.gz | |
tar -czvf a.tar.gz --exclude="*.log" dir/ | |
gzip file | |
zip -r a.zip dir/ | |
7z a a.7z dir/ | |
🛠️ systemd 服务管理
| |
|---|
systemctl status nginx | |
systemctl start|stop|restart nginx | |
systemctl enable --now nginx | |
systemctl reload nginx | |
systemctl list-units --state=failed | |
journalctl -u nginx -f | |
journalctl -u nginx --since "1 hour ago" -p err | |
journalctl --vacuum-size=500M | |
systemd-analyze blame | |
🔐 SSH
| |
|---|
ssh user@host | |
ssh -p 2222 -i ~/.ssh/key user@host | |
ssh-keygen -t ed25519 -C "我是谁" | |
ssh-copy-id user@host | |
ssh -L 8080:localhost:80 user@bastion | 本地端口转发:本地 8080 → 跳板机背后的 80 |
ssh -D 1080 user@host | |
scp file user@host:/path/ | |
rsync -avz source/ user@host:/dest/ | |
rsync -avz --delete source/ dest/ | |
💻 Shell 效率
# 历史记录强化(加到 ~/.bashrc)
export HISTSIZE=10000
export HISTFILESIZE=20000
export HISTTIMEFORMAT="%F %T " # 每条命令带时间戳
export HISTCONTROL=ignoredups:erasedups # 去重
# 安全别名(防手滑)
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
# 好看别名
alias ll='ls -alFh'
alias df='df -h'
alias free='free -h'
alias ports='ss -tlnp'
alias myip='curl -s ifconfig.me'
# Ctrl+R 升级 → fzf 模糊搜历史
# cd 升级 → zoxide 智能跳转
# cat 升级 → bat 语法高亮 + 行号
🆘 故障急救三板斧
CPU 飙高
top -bn1 -o %CPU | head -20 # 谁在吃 CPU
top -H -p <PID> # 看进程中哪个线程
strace -c -p <PID> # 统计进程在忙什么系统调用
perf top -g -p <PID> # 看到函数级热点
内存不够
free -h # 先看概览
ps aux --sort=-%mem | head -10 # 谁在吃内存
dmesg | grep -i "out of memory" # 被 OOM 杀过吗
echo -1000 > /proc/<PID>/oom_score_adj # 保护关键进程不被杀
磁盘满了
df -h # 哪个分区满了
du -sh /* 2>/dev/null | sort -rh | head -10 # 根目录下谁最大
find / -type f -size +1G 2>/dev/null # 找大文件
lsof | grep deleted | awk '{print $1,$2,$7}' | sort -u # 关键!删了但没释放的文件
journalctl --vacuum-size=500M # 急救:压缩日志
find /var/log -name "*.log" -mtime +30 -delete # 删旧日志
服务起不来
journalctl -u <service> -n 100 --no-pager # 看日志
ss -tlnp | grep <PORT> # 端口被占了?
ldd /path/to/binary # 缺库文件?
setenforce 0 # SELinux 挡了?临时关掉试试
🚀 新机器初始化一条龙
# === 基础包 ===
sudo apt update && sudo apt install -y \
curl wget git vim htop \
net-tools dnsutils \
build-essential
# === 常用别名 ===
cat >> ~/.bashrc << 'EOF'
export HISTSIZE=10000
export HISTTIMEFORMAT="%F %T "
alias ll='ls -alFh'
alias df='df -h'
alias free='free -h'
alias ports='ss -tlnp'
EOF
source ~/.bashrc
# === SSH 密钥 ===
ssh-keygen -t ed25519 -C "$(whoami)@$(hostname)"
# === 防火墙最少规则 ===
sudo ufw allow 22/tcp
sudo ufw enable
🗺️ 按使用频率排序
- 1. ⭐ 每10分钟用一次:
ls、cd、grep、ctrl+r、!! - 2. 🔥 每天用:
systemctl、journalctl、ss、df、ps、tail -f、curl - 3. 💡 出问题时救命:
lsof、strace、tcpdump、dmesg、journalctl -p err - 4. 🧪 偶尔用但每次都很爽:
awk、sed、find -exec、rsync、ssh -L
这个手册会持续更新。你有私藏的实用命令?评论区分享,实测好用就加进来。
🐧 回复「手册」获取本速查手册,回复「野生」获取《Linux效率工具清单》