EasyDebug.NET

Linux 常用命令速查表

文件、文本、权限、进程、网络等十类命令,含进程信号

共 126 条命令

ls -lah文件与目录

列出文件详情,含隐藏文件与人类可读大小

ls -lah /var/log
cd /path文件与目录

切换目录,cd - 回到上一个目录

cd /etc/nginx && cd -
pwd文件与目录

显示当前所在目录的绝对路径

pwd
cp -r src dst文件与目录

递归复制目录,-a 可保留权限与时间戳

cp -a /etc/nginx /backup/nginx
mv src dst文件与目录

移动或重命名文件与目录

mv app.log app.log.bak
rm -rf dir文件与目录

递归强制删除(高危,先 ls 确认路径)

rm -rf /tmp/build
mkdir -p a/b/c文件与目录

递归创建目录,父目录不存在也不报错

mkdir -p /data/app/logs
touch file文件与目录

创建空文件或更新文件时间戳

touch /tmp/health.ok
stat file文件与目录

查看文件的权限、大小与三个时间戳

stat /etc/nginx/nginx.conf
file target文件与目录

根据内容判断文件真实类型

file /data/export.bin
tree -L 2文件与目录

以树形展示目录结构,限定两层

tree -L 2 -I node_modules
find /path -name "*.log"文件与目录

按名称查找文件,支持通配符

find /var/log -name "*.log" -size +100M
find /path -mtime +7 -delete文件与目录

删除 7 天前修改的文件,清理日志常用

find /tmp -name "*.tmp" -mtime +7 -delete
locate keyword文件与目录

从索引库快速查路径,比 find 快得多

sudo updatedb && locate nginx.conf
cat file文本处理

输出文件全部内容,小文件适用

cat /etc/os-release
less file文本处理

分页查看大文件,/ 搜索、q 退出

less /var/log/nginx/access.log
head -n 20 file文本处理

查看文件开头若干行

head -n 20 access.log
tail -n 50 -f file文本处理

实时跟踪文件末尾,看日志必备

tail -f /var/log/nginx/error.log
grep -rn "keyword" dir文本处理

递归搜索并显示行号

grep -rn --include="*.ts" "TODO" src/
grep -v "pattern" file文本处理

反选,输出不匹配的行

grep -v "^#" nginx.conf
sed -i "s/old/new/g" file文本处理

就地批量替换,-i 直接改文件

sed -i "s/8080/8081/g" config.yml
sed -n "10,20p" file文本处理

只输出指定行区间

sed -n "10,20p" app.log
awk "{print $1, $3}" file文本处理

按列提取字段,$0 是整行

awk "{print $1}" access.log | sort | uniq -c
cut -d: -f1 file文本处理

按分隔符取列,适合结构固定的文本

cut -d: -f1 /etc/passwd
sort -u file文本处理

排序并去重,-n 按数值、-r 倒序

sort -nr access.log | head
uniq -c文本处理

统计相邻重复行出现次数,需先排序

sort access.log | uniq -c | sort -nr
wc -l file文本处理

统计行数,-c 统计字节数

wc -l access.log
dos2unix file文本处理

把 Windows 换行符 CRLF 转成 Unix 的 LF

dos2unix win.txt
tr -s " "文本处理

压缩连续重复字符,常用于清理多余空格

tr -s " " < in.txt > out.txt
xargs -I{} cmd {}文本处理

把标准输入拼成命令参数批量执行

find . -name "*.tmp" | xargs rm -f
tee file文本处理

同时输出到屏幕和文件,配合 sudo 写文件常用

echo "1.2.3" | sudo tee /etc/app/version
diff -u a b文本处理

对比两个文件的差异,输出统一格式

diff -u old.conf new.conf
chmod 755 file权限与用户

设置权限:所有者读写执行、其他人读执行

chmod -R 755 /var/www/html
chmod -R 644 dir权限与用户

目录内文件设为所有人可读、仅所有者可写

chmod -R 644 /etc/app/*.conf
chown -R user:group dir权限与用户

同时修改所有者与所属组

chown -R www-data:www-data /var/www
chgrp group file权限与用户

只修改所属组

chgrp developers /srv/project
umask 022权限与用户

设置新建文件的默认权限掩码

umask 022
useradd -m -s /bin/bash ada权限与用户

创建用户并生成家目录,指定默认 Shell

useradd -m -s /bin/bash ada
usermod -aG docker ada权限与用户

把用户追加到附加组,-a 不能省否则会覆盖原有组

usermod -aG docker ada
passwd user权限与用户

修改指定用户密码

sudo passwd ada
su - user权限与用户

切换用户并加载其环境变量

su - postgres
sudo -i权限与用户

以 root 身份开启登录 Shell

sudo -i
id权限与用户

查看当前用户的 uid、gid 与所属组

id
groups user权限与用户

查看用户所属的全部组

groups www-data
ps aux进程与作业

查看全部进程快照,配合 grep 过滤

ps aux | grep -v grep | grep nginx
top进程与作业

实时查看 CPU 与内存占用,按 M 按内存排序

top -b -n 1 | head -20
htop进程与作业

更友好的交互式进程查看器,需另行安装

htop
kill <pid>进程与作业

向进程发送 SIGTERM,请求优雅退出

kill 12345
kill -9 <pid>进程与作业

强制杀死进程,可能丢数据,仅在前者无效时用

kill -9 12345
pkill -f "java -jar"进程与作业

按完整命令行匹配杀进程,比 kill 方便

pkill -f "java -jar app.jar"
killall nginx进程与作业

按进程名杀死同名进程

killall -HUP nginx
jobs / bg / fg进程与作业

查看后台作业并在前后台之间切换

jobs -l
nohup cmd &进程与作业

退出终端后进程继续运行,输出写入 nohup.out

nohup ./start.sh > app.log 2>&1 &
nice -n 10 cmd进程与作业

以较低优先级启动,避免抢占关键服务

nice -n 10 tar -czf backup.tgz /data
renice -n -5 -p <pid>进程与作业

调整运行中进程的优先级

sudo renice -n -5 -p 12345
watch -n 2 cmd进程与作业

每两秒重复执行并刷新输出

watch -n 2 "df -h /"
lsof -p <pid>进程与作业

查看进程打开的文件与网络连接

lsof -p 12345 | head
uname -a系统与资源

查看内核版本与系统架构

uname -a
uptime系统与资源

查看运行时长与平均负载

uptime
free -h系统与资源

查看内存与交换分区使用情况

free -h
vmstat 1系统与资源

每秒输出 CPU、内存、IO 与上下文切换

vmstat 1 5
iostat -x 1系统与资源

查看磁盘 IO 利用率与等待,定位 IO 瓶颈

iostat -x 1
env系统与资源

打印全部环境变量,排查配置来源常用

env | grep PATH
export KEY=value系统与资源

设置环境变量,仅对当前会话有效

export NODE_ENV=production
history系统与资源

查看历史命令,!! 重复上一条

history | grep systemctl
alias ll="ls -lah"系统与资源

定义命令别名

alias ll="ls -lah"
date -d "@1700000000"系统与资源

按时间戳格式化输出时间

date -d "@1700000000" "+%F %T"
timedatectl系统与资源

查看与设置系统时区、时间同步状态

timedatectl set-timezone Asia/Shanghai
ulimit -n系统与资源

查看或设置文件描述符上限,高并发服务要调

ulimit -n 65535
sysctl -w net.core.somaxconn=1024系统与资源

临时修改内核参数,重启失效

sysctl -w net.ipv4.ip_forward=1
crontab -e系统与资源

编辑当前用户的定时任务

crontab -l
ip addr网络与传输

查看网卡与 IP 地址,替代已废弃的 ifconfig

ip -br addr
ip route网络与传输

查看路由表与默认网关

ip route get 8.8.8.8
ss -tulpn网络与传输

列出监听端口与对应进程,排障第一命令

ss -tulpn | grep 8080
netstat -anp网络与传输

查看全部连接与状态,旧系统仍常用

netstat -anp | grep ESTABLISHED
ping -c 4 host网络与传输

连通性测试,发四个包后结束

ping -c 4 8.8.8.8
traceroute host网络与传输

逐跳查看路由路径,定位链路问题

traceroute example.com
dig +short example.com网络与传输

查询 DNS 解析结果,排查解析异常

dig +short example.com A
nslookup example.com 8.8.8.8网络与传输

指定 DNS 服务器查询,判断是否本地解析问题

nslookup example.com 8.8.8.8
curl -I https://example.com网络与传输

只取响应头,快速看状态码与跳转

curl -I -L https://example.com
curl -X POST -d "{}" url网络与传输

发送 JSON 请求体,接口调试常用

curl -X POST -H "Content-Type: application/json" -d "{}" http://localhost:8080/api
wget -c url网络与传输

断点续传下载大文件

wget -c https://example.com/big.iso
ssh -i key.pem user@host网络与传输

用私钥登录远程主机

ssh -i ~/.ssh/id_ed25519 ada@10.0.0.5
scp -r dir user@host:/path网络与传输

在两台机器之间递归复制目录

scp -r ./dist root@10.0.0.5:/var/www
rsync -avz --delete src/ dst/网络与传输

增量同步,--delete 让目标端与源端一致

rsync -avz --delete ./dist/ deploy@10.0.0.5:/var/www/
nc -zv host 8080网络与传输

测试目标端口是否可达

nc -zv 10.0.0.5 8080
tcpdump -i any port 8080网络与传输

抓指定端口的包,排障时配合 -w 存文件

tcpdump -i any -nn port 8080 -w dump.pcap
df -h磁盘与压缩

查看各分区容量与使用率

df -h
du -sh *磁盘与压缩

统计当前目录下各项占用,找大文件常用

du -sh /* 2>/dev/null | sort -h
lsblk磁盘与压缩

以树形查看块设备与挂载点

lsblk -f
fdisk -l磁盘与压缩

列出磁盘与分区表信息

sudo fdisk -l
mount /dev/sdb1 /data磁盘与压缩

挂载设备到指定目录

mount -o ro /dev/sdb1 /mnt
umount /data磁盘与压缩

卸载挂载点,提示忙时先用 lsof 查占用

umount /data
mkfs.ext4 /dev/sdb1磁盘与压缩

格式化分区,会清空数据

mkfs.ext4 -L data /dev/sdb1
fsck /dev/sdb1磁盘与压缩

检查并修复文件系统,需先卸载

fsck -y /dev/sdb1
tar -czf out.tgz dir磁盘与压缩

打包并 gzip 压缩目录

tar -czf backup-$(date +%F).tgz /data/app
tar -xzf in.tgz -C dir磁盘与压缩

解压到指定目录

tar -xzf app.tgz -C /opt
zip -r out.zip dir磁盘与压缩

递归打包为 zip,跨平台兼容性好

zip -r site.zip ./dist
xz -9 file磁盘与压缩

高压缩比压缩,代价是更慢

xz -9 -T0 big.sql
systemctl start <unit>服务与日志

启动服务,enable 设置开机自启

systemctl enable --now nginx
systemctl status <unit>服务与日志

查看服务状态与最近日志

systemctl status nginx
systemctl list-units --failed服务与日志

列出启动失败的服务

systemctl list-units --failed
journalctl -u <unit>服务与日志

查看指定服务的日志

journalctl -u nginx --since "1 hour ago"
journalctl -f服务与日志

实时跟踪系统日志

journalctl -f -p err
dmesg -T服务与日志

查看内核环形缓冲,排查 OOM 与被杀进程

dmesg -T | tail -50
apt update && apt upgrade服务与日志

Debian 系更新索引并升级已装包

sudo apt update && sudo apt upgrade -y
apt install <pkg>服务与日志

安装软件包

sudo apt install -y curl
dpkg -l | grep <pkg>服务与日志

查询已安装包与版本

dpkg -l | grep nginx
dnf install <pkg>服务与日志

RHEL 系安装包,旧版本用 yum

sudo dnf install -y nginx
strace -p <pid>排错

跟踪进程的系统调用,定位卡在哪一步

strace -p 12345 -f -e trace=network
lsof -i :8080排错

查看占用某端口的进程,端口冲突必查

sudo lsof -i :8080
ss -s排错

查看连接数量汇总,判断是否连接耗尽

ss -s
iptables -L -n --line-numbers排错

查看防火墙规则链,排查被拦截

iptables -L INPUT -n --line-numbers
ufw allow 8080/tcp排错

放行端口,Ubuntu 上的简化防火墙

ufw status verbose
nc -l 9000排错

在本地监听端口,测试连通性

nc -l 9000
tail -f /var/log/syslog排错

实时看系统日志,不同发行版路径可能不同

tail -f /var/log/messages
grep -i "error" /var/log/*.log排错

在日志里快速找报错行

grep -iE "error|fail" /var/log/app/*.log | tail -30
kill -15 <pid>信号

SIGTERM,请求优雅退出,默认信号

kill -15 12345
kill -9 <pid>信号

SIGKILL,内核强制终止,进程无法清理资源

kill -9 12345
kill -1 <pid>信号

SIGHUP,常被服务解释为重新加载配置

kill -1 $(cat /run/nginx.pid)
kill -2 <pid>信号

SIGINT,等价于终端按 Ctrl+C

kill -2 12345
kill -3 <pid>信号

SIGQUIT,JVM 收到会打印线程栈并退出

kill -3 12345
kill -18 / -19 <pid>信号

SIGCONT / SIGSTOP,继续与暂停进程(不可阻塞)

kill -19 12345 && kill -18 12345
kill -10 <pid>信号

SIGUSR1,自定义用途,如 Nginx 重开日志

kill -10 <nginx master pid>
kill -l信号

列出系统支持的全部信号编号与名称

kill -l

这个工具不好用,或者遇到 bug?

去反馈
站长的博客
提个建议