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?

去回報
站長的博客
提個建議