搬砖常用shell片段

Page content

统计 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

查看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

安装 docker-ce

$ curl -fsSL https://get.docker.com -o get-docker.sh
$ bash get-docker.sh --mirror Aliyun

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 差集

Git操作

List tags

To list all tags, use the following command.

git tag

创建 Tags

Git uses two main types of tags: lightweight and annotated.

lightweight tag

git tag <tagname>  

annotated tag

To create an annotated tag in Git you can just run the following simple commands on your terminal.

$ git tag -a v2.1.0 -m "xxx feature is released in this tag."
$ git tag
v1.0.0
v2.0.0
v2.1.0

Push Tag

To push particular tag you can use below command:

$ git push origin v1.0.9

删除tag

$ git tag -d v1.0
Deleted tag 'v1.0' (was 808b598)

$ git push --delete origin v1.0

lsof

lsof - list open files

lsof 列出打开的文件。绝对是个排查故障的利器,在一切皆文件的 Linux 世界里,lsof 可以查看打开的文件是:

  • 普通文件
  • 目录
  • 网络文件系统的文件
  • 字符或设备文件
  • (函数)共享库
  • 管道、命名管道
  • 符号链接
  • 网络文件(例如:NFS file、网络 socket,unix 域名 socket)

还有其它类型的文件,等等 另外 lsof 命令也是有着最多选项的 Linux/Unix 命令之一,另一个 nc 命令也是如此 😂。

lsb_release

lsb_release - print distribution-specific information 打印发行版详情

lscpu

lscpu - display information about the CPU architecture

列出 CPU 的信息,和 cat /proc/cpuinfo 输出结果类似。

判断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

Ubuntu安装Php7.4

Add PHP PPA Repository

sudo apt-get update
sudo apt -y install software-properties-common
sudo add-apt-repository ppa:ondrej/php # 添加第三方源
sudo apt-get update

Install PHP 7.4 on Ubuntu 20.4

sudo apt-get install php7.4 php7.4-fpm php7.4-mysql php7.4-gd php7.4-mbstring

# sudo apt-get install php7.4-xxx
# sudo apt-get install -y php7.4-{bcmath,bz2,intl,gd,mbstring,mysql,zip,common}

sudo service php7.4-fpm start
php -v
  • PHP configurations related to Apache is stored in /etc/php/7.4/apache2/php.ini
  • PHP FPM configuration file is /etc/php/7.4/fpm/pool.d/www.conf
本文由 络壳 原创或整理,转载请注明出处