搬砖常用shell片段
Page content
列出当前监听的所有端口
sudo lsof -Pn -i4 | grep LISTEN
并发执行shell
$ cat command_groups.sh
#!/bin/sh
command() {
echo $1 start
sleep $(( $1 & 03 )) # keep the seconds value within 0-3
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, no need for background/wait:
command 10
统计 TCP 连接情况
$ ss -nat | awk 'NR>1 {d[$1]++} END {for (i in d) print d[i],i}'
# NR>1 去除第一行
# {d[$1]++} 对第一列元素进行累加计数
# {for (i in d) print d[i],i} 打印出数组的元素和出现的次数
xargs
ps -ef | grep nginx | grep -v grep | awk '{print $2}' | xargs kill -9
批量删除文件
# Use find:
find . -name "*.bak" -type f -delete
# But use it with precaution. Run first:
find . -name "*.bak" -type f
查看prometheus的日志
curl localhost:36425/metrics | grep orm
Go pprof
# 查看堆栈信息
go tool pprof -alloc_space http://localhost:4321/debug/pprof/heap
循环
# i 取值为1 2 3
for i in {1..3}; do echo 192.168.1.1$i ; done
# i 取值为 1 3 5 7 9
for i in {1..9..2} ; do echo $i ; done
for ((i=1;i<=10;i++))
do
echo $i
done
条件判断
|| 和 &&
||前面执行不通过才执行后面的,也就是或啦, && 是与,前面执行通过会接着执行后面的
匹配 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}'
$ curl cip.cc # 查看公网ip
ipcalc
工作中遇到这样的子网ip和掩码:192.168.20.0/24
,得在脑海中用二进制去算IP范围是多少,子网掩码是多少;有时还得在纸上画一画,耗时费力。
后来发现ipcalc这个神器,麻麻再也不用担心我算不动了。
一条命令,搞定网络类型、广播地址、子网IP范围等的计算,也很方便给小伙伴演示。
Mac OS
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
文件的交集并集差集
cat a b | sort | uniq > c # c is a union b 并集
cat a b | sort | uniq -d > c # c is a intersect b 交集
cat a b b | sort | uniq -u > c # c is set difference a - b 差集
lsof
lsof - list open files
lsof 列出打开的文件。绝对是个排查故障的利器,在一切皆文件的 Linux 世界里,lsof 可以查看打开的文件是:
- 普通文件
- 目录
- 网络文件系统的文件
- 字符或设备文件
- (函数)共享库
- 管道、命名管道
- 符号链接
- 网络文件(例如:NFS file、网络 socket,unix 域名 socket)
还有其它类型的文件,等等 另外 lsof 命令也是有着最多选项的 Linux/Unix 命令之一,另一个 nc 命令也是如此 😂。
判断VPS虚拟化类别
VPS(虚拟专用服务器)的虚拟技术有很多种,VPS就是通过某种虚拟技术把一台服务器分成多个虚拟服务器。VPS常用的虚拟技术有OpenVZ、Xen、KVM三种。 在配置ikve2时,需要选择vps类型(OpenVZ还是Xen、KVM),选错将无法成功连接,请务必核实服务器的类型。
vitr-what是RedHat开发的一款检测VPS虚拟化技术的脚本工具,支持检测KVM、Xen、QEMU、VirtualBox等常见的虚拟化技术。 在以下多种发行版上都可以找到二进制安装包:Debian、Ubuntu、CentOS、Fedora (13+)、Red Hat Enterprise Linux (5.7+ and 6.1+)、ArchLinux and Gentoo。
如何判断VPS虚拟化类别,命令如下:
$ sudo apt-get install virt-what -y
$ sudo virt-what
kvm