用来在文本里统计平均数 |
cat z | awk '{sum+=$1} END {print "Average = ", sum/NR}' |
常用的awk使用方法:https://blog.51cto.com/alex/6164853 |
Shell trap是一种在shell脚本中处理异常退出的方法。它可以捕获脚本中的退出信号,并执行相应的操作。例如,您可以使用shell trap来清理脚本中使用的变量或资源 |
shell trap |
代码 |
查找大文件 |
du -h /var/log/* --max-depth=1 | sort -hr | head -n 10 |
du -hs /var/lib/containerd/指定文件查询数据量大小 |
du和df统计信息不一致的问题,查找未被回收的文件 |
lsof -s | |sort -nr -k7 |less |
参考 |
进入docker命名空间内 |
nsenter -m -u -i -n -p -t 16354 bash |
|
常用的dns命令 |
dig/host:解析ip; nslookup domain [dns-server],指定dns服务器进行查询 |
|
网络抓包 |
ngrep port 12345 -n 200 -c 200 -q -t | grep -B 5 -i mget;ngrep -qd any '172606419' port 6379 and dst 10.213.212.118 |
|
空格转换行 |
kuberedis4e get pod k8redis-jiayun-test-7-7-0-0 -o jsonpath='{ .metadata.labels}' |
tr " " "\n" |
grep按照单词匹配 |
grep -w 1.1.1.1 |
|
shell脚本中中允许使用别名 |
source ~/.bashrc;shopt -s expand_aliases |
参考 |
清空一个文件 |
truncate -s 0 15.rdb |
|
安装网络工具ifconfig/ip/ping |
apt-get install net-tools;apt-get install iputils-ping;apt-get install iproute2;apt-get install bridge-utils |
|
ip类命令 |
ip addr/ip link等操作 |
参考 |
iptables命令 |
iptables -vnL --line,只查看filter表的chain |
防火墙原理,朱双印老哥的文档非常清理 , iptables使用 |
监控查不出来的,可以看下syslog,或者journalctl -u查系统日志,实在不行,可以看一些机器上的监控组件的采集日志 |
journalctl -u xxx或者dmesg -T |
|
在一个文件以root用户也无法删除时,需要改变文件的i属性 |
lsattr -a ~/.ssh/authorized_keys、chattr -i ~/.ssh/authorized_keys |
|
grep 或查询,使用正则表达式 |
grep -E 'pattern1|pattern2' filename |
注意grep -E会模糊匹配,查到更多的数据,所以最好带着-w参数,按照单词进行匹配 |
统计代码行数 |
git log --author="jiayun" --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc }' - |
|
排查io_wait过高的脚本 |
iostat |
[参考] |
less行数所在的文件百分比 |
less -m file |
|
对于在不同的namespace的文件,可以通过nc命令拷贝 |
nc -l -v 端口号>要写入的文件名, nc -v 接收端的ip 端口号<被传输文件名 |
|
在命令行中打印beauty json |
sudo apt install jq |
|
如何给分支打tag |
git tag -a v1.2 9fceb02 -m "my tag",给某个指定commit打tag |
参考 |
taskset命令,可用于进程的CPU调优,可以把云服务器上运行的某个进程,指定在某个CPU上工作 |
查看在哪个核上正在运行:taskset -p 进程号,指定cpu运行taskset -pc 1 进程号 |
参考 |
mac里查看端口的netstat命令 |
netstat -anvp tcp | grep -i 27542 |
|
带宽相关命令 |
iftop命令查看 是一个交互式的实时带宽监控工具,它可以显示当前系统上每个网络连接和进程的带宽使用情况, iftop -i eth1 -P -n -N;tc命令可以限制网络的带宽 |
iftop |
watch命令,类似for循环,-n表示每s调用一次 |
watch -n 1 'netstat -antp |
grep -c 12345 ' |
排查内存使用的命令 |
top/ps/smem/pmap -p pid |
RSS/VIRT等指标参考 |
内存泄漏如何排查 |
使用gdb/gcore等命令通过打内存快照来分析;使用内存检测工具valgrind扫描 |
参考 |
jemallo排查内存分布 |
开启jemalloc外部链接,打印内存申请百分比,也可以打印出pdf查看调用链路;注意最好使用5.0版本,如果项目已经包含jemalloc,可以在编译的时候选择 --with-jemalloc=no |
参考 |
使用断言assert来让代码更加健壮 |
建议多学习使用assert,在关键位打assert,方便排查问题 |
参考 |
使用find查找并打印文件内容 |
find . -mindepth 1 -maxdepth 1 -type d -exec sh -c 'echo -n "Child: {} "; cat {}/cpu.shares' ; |
参考 |
查看某个文件夹下所有磁盘大小 |
du -ah --max-depth=1 |
|
查看线程名称 |
ps -T -p 10 | htop命令,设置了线程名称的可以看到线程名称,没有设置线程名称的只能看到主进程的名称 |
|
内核模块加载 |
modprobe uio_pci_generic,lsmod查看加载的内核模块 |
|
查看大二进制文件命令 |
拿到关键key在文件的位置:grep -a -b "string:comment_liked_truth_count:v1:671b1a4f000000001b02316d" largefile.bin;从指定位置读取二进制文件信息:hexdump -C -s $((1993361269)) -n 10240000 9403029587_2952611069.rdb > 1.txt |
|
使用火焰图 |
采集数据然后绘制火焰图 |
参考 |
连接数过多,找到连接数最多的ip |
netstat -anp | grep ESTABLISHED | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr | head -n 10 |
|
命令行执行if,打印偶数 |
for i in {1..10};do if [ $[i%2] -eq 0 ];then echo $i;fi;done |
|
命令行执行if,if后面命令返回状态码为0表示成功 |
if echo "master" | grep -i master;then echo 1;else echo 2;fi; |
|
把中文unicode码转为ascii |
echo -e "Redis10\xe4\xb8\xad\xe6\x96\x87ABCDEF\xe6\xb5\x8b\xe8\xaf\x95XYZ" |
参考 |
打印字符字节数 |
echo -n Redis20中A文BCDE测F试XY结果Z:UserID:002 | wc -c |
|
使用lrzsz工具可以实现远程文件上传和下载 |
rz接受文件、sz file.txt发送文件 |
mac安装参考 |