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
ln -s target link文件与目录创建软链接,改版本目录时常用
ln -s /opt/app-1.2.0 /opt/app-current
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 -ccut -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/apiwget -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?
去反馈