常用 shell 片段合集。短命令、短说明,临时排障最省心。
端口与连接
列出当前监听端口
sudo lsof -Pn -i4 | grep LISTEN
统计 TCP 连接状态
ss -nat | awk 'NR>1 {d[$1]++} END {for (i in d) print d[i], i}'
并发执行
#!/usr/bin/env bash
command() {
echo "$1 start"
sleep $(( $1 & 03 ))
echo "$1 complete"
}
echo "First Group:"
command 1 &
command 2 &
command 3 &
wait
echo "Second Group:"
command 4 &
command 5 &
command 6 &
wait
echo "Third Group:"
command 7 &
command 8 &
command 9 &
wait
echo "Not really a group:"
command 10
进程与信号
一键干掉进程(谨慎)
ps -ef | grep nginx | grep -v grep | awk '{print $2}' | xargs kill -9
建议:能优雅退出就别 -9,先试 kill -15。
文件批处理
批量删除文件
find . -name "*.bak" -type f -delete
先预览再执行:
find . -name "*.bak" -type f
文件的交集/并集/差集
cat a b | sort | uniq > c # c = a 并 b
cat a b | sort | uniq -d > c # c = a 交 b
cat a b b | sort | uniq -u > c # c = a - b
监控与诊断
查看 Prometheus 指标
curl localhost:36425/metrics | grep orm
Go pprof(内存)
go tool pprof -alloc_space http://localhost:4321/debug/pprof/heap
循环与条件
for 循环
for i in {1..3}; do
echo "192.168.1.1$i"
done
for i in {1..9..2}; do
echo "$i"
done
for ((i=1; i<=10; i++)); do
echo "$i"
done
条件判断
cmd_ok && echo "success"
cmd_fail || echo "fallback"
说明:&& 表示前者成功才执行后者;|| 表示前者失败才执行后者。
网络与 IP
匹配 IPv4 地址
egrep --only-matching -E '([[:digit:]]{1,3}\.){3}[[:digit:]]{1,3}'
获取本机 IP
ip r get 1 | awk 'NR==1 {print $NF}'
ip r get 1 | sed "s/uid.*//g" | awk 'NR==1 {print $NF}'
查看公网 IP
curl cip.cc
ipcalc
工作中遇到子网 192.168.20.0/24,心算容易错,ipcalc 一条命令就够。
安装
macOS:
brew install ipcalc
Linux:
sudo apt install ipcalc
使用
ipcalc 192.168.20.0/24
输出示例:
Address: 192.168.20.0 11000000.10101000.00010100. 00000000
Netmask: 255.255.255.0 = 24 11111111.11111111.11111111. 00000000
Wildcard: 0.0.0.255 00000000.00000000.00000000. 11111111
=>
Network: 192.168.20.0/24 11000000.10101000.00010100. 00000000
HostMin: 192.168.20.1 11000000.10101000.00010100. 00000001
HostMax: 192.168.20.254 11000000.10101000.00010100. 11111110
Broadcast: 192.168.20.255 11000000.10101000.00010100. 11111111
Hosts/Net: 254 Class C, Private Internet
lsof
lsof 用于列出打开的文件,排障时很强:
- 普通文件、目录
- 网络 socket
- 设备文件、共享库
- 管道、符号链接
用一句话记住:一切皆文件,文件都能被 lsof 看见。
判断 VPS 虚拟化类型
常见虚拟化:OpenVZ、Xen、KVM。选错类型会导致配置失败。
sudo apt-get install virt-what -y
sudo virt-what
输出示例:kvm