Skip to content

Latest commit

 

History

History
98 lines (85 loc) · 24.2 KB

shell_cmd.md

File metadata and controls

98 lines (85 loc) · 24.2 KB

linux常用命令

作用 命令 备注
用来在文本里统计平均数 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安装参考

code1

# 定义退出信号
trap 'exit cleanup' INT QUIT TERM

#执行脚本
echo "This is a shell script."

#清理操作
function cleanup {
echo "Cleaning up..."
}

code2

$ ip link add dev bridge_home type bridge
$ ip address add 10.0.0.1/24 dev bridge_home

$ ip netns add netns_dustin
$ mkdir -p /etc/netns/netns_dustin
$ echo "nameserver 114.114.114.114" | tee -a /etc/netns/netns_dustin/resolv.conf
$ ip netns exec netns_dustin ip link set dev lo up
$ ip link add dev veth_dustin type veth peer name veth_ns_dustin
$ ip link set dev veth_dustin master bridge_home
$ ip link set dev veth_dustin up
$ ip link set dev veth_ns_dustin netns netns_dustin
$ ip netns exec netns_dustin ip link set dev veth_ns_dustin up
$ ip netns exec netns_dustin ip address add 10.0.0.11/24 dev veth_ns_dustin

code3

uname -r
apt-cache search linux-tools | grep '5.4.0-72'
apt-get install linux-tools-5.4.0-72-generic

#数据收集及预处理(server侧)
/usr/lib/linux-tools/5.4.0-72-generic/perf record -F 49 -p ${PID} -g -e cpu-clock --call-graph dwarf -o perf.data -- sleep 30
/usr/lib/linux-tools/5.4.0-72-generic/perf script -i perf.data &> perf.unfold

#数据处理(server侧或本地均可)
使用https://github.com/brendangregg/FlameGraph
./stackcollapse-perf.pl perf.unfold &> perf.folded
./flamegraph.pl perf.folded > xxx.svg