tmp

学习

  1. 如何手动显示一个进程的cgroup
  2. 如何通过systemd限制一个进程的cgroup
  3. kubelet 如何限制一个pod
    cgroup
    https://zhuanlan.zhihu.com/p/346050404
    https://systemd-by-example.com/
    https://www.ibm.com/support/pages/node/6393890?mhsrc=ibmsearch_a&mhq=cgroup
    https://www.redhat.com/en/services/training/do080-deploying-containerized-applications-technical-overview?intcmp=701f20000012ngPAAQ&section=overview
    https://www.redhat.com/sysadmin/cgroups-part-three

envoy 初始化时加载的监控指标

[root@ceph ~]# istioctl proxy-config bootstrap http-cli.test|jq .bootstrap.statsConfig

 #OpenIPMI 库文件
 #ipmitool 工具
 yum install OpenIPMI ipmitool
systemctl start ipmi

获取cpu温度

ipmitool -I open sensor get "Processor 1 Temp"

top

1

M

P

vmstat

uptime

lscpu

iotop

iftop

iftop -n 
iftop -i 指定网卡
iftop -i 指定网卡 -F 指定网段

nethogs

smokping

nmon 整体监控,做报表时有用

https://blog.51cto.com/oldboy/1184139
https://blog.51cto.com/oldboy/1184165
https://blog.51cto.com/oldboy/1184177
https://blog.51cto.com/oldboy/1184206
https://blog.51cto.com/oldboy/1184228
https://blog.51cto.com/12758568/2122677

1.调试命令

strace -p pid

2.跟踪指定进程的PID

gdb -p pid


split函数可以切割字符串,帮我们动态生成数组。生成的数组下标从1开始
# 将ts以“;”分隔,并将分隔后的str保存到huluwa数组中
awk –v ts=”one;two;three”‘BEGIN{ print split(ts,huluwa,”;”)}’
# split函数的返回值就是数组长度
split(ts,huluwa,”;”) == 3
6.3、排序函数
asort函数
asort函数根据数组的value值进行排序
# asort排序后,原有key将被数字替代
awk 'BEGIN{ t["a"]=66;t["b"]=88;t["c"]=35 ; asort(t) ; for (i in t){print i,t[i]} }'
1 35
2 66
3 88
# asort排序时,新建一个数组。t[]不变,新创了new[]
awk 'BEGIN{ t["a"]=66;t["b"]=88;t["c"]=35 ; asort(t,new) ; \
for (i in new){print i,new[i]} }'
# asort函数的返回值就是数组的长度
asort(t,new)==3
asorti函数
asorti函数会对原数组的key排序,然后将key作为value生成一个新数组
awk 'BEGIN{ t["a"]=66;t["b"]=88;t["c"]=35;asorti(t,new);for (i in new){print i,new[i]} }' 
1 a
2 b
3 c
# 通过asorti排列原数组
awk 'BEGIN{ t["a"]=66;t["b"]=88;t["c"]=35;asorti(t,new);\
for (i in new){print i,new[i],t[new[i]] } }'
1 a 66
2 b 88
3 c 35


7、三元运算与打印奇偶行
7.1、三元运算
# if…else判断用户类型
awk –F : ‘{ if($3<500){usertype=“系统用户”}else{ usertype=“普通用户”};\
print $1,usertype }’/etc/passwd
# 三元运算符替换if…else
awk –F : ‘{ usertype=$3<500?“系统用户”: “普通用户”;\
print $1,usertype }’/etc/passwd
l  $3<500:条件判断
l  ?”系统用户”:为真,则“系统用户”赋给usertype
l  :“普通用户”:为假,则“普通用户”赋给usertype
# 三元运算符统计“系统用户”和“普通用户”数量
awk -F: '{$3<500?a++:b++}END{print a,b}' /etc/passwd
7.2、打印奇偶行
# 打印奇数行
awk ‘a=!a’flie
# 打印偶数行
awk ‘!(a=!a)’flie
解析:
我们知道awk的正则匹配是
 /
但如果我们不加print动作,仅仅有正则,那么会默认打印$0。
awk ‘/正则/’file
而在awk中,非0/非空str表示“真”。0/空表示“假”
# 注意,这不是正则,‘2’不为0/空,打印file所有
awk '2' file
所以’a=!a’
1) a没有定义,初始化a=‘’,a为“假”
2) !a为“真”
3) a=!a,a变为“真”,打印第1行
4) !a又变为“假”,不打印第2行


‘!(a=!a)’
1)a=!a为真,!(a=!a)为假,不打印 第1行
2)a=!a为假,!(a=!a)为真,打印第2行
8、参考文档
awk从放弃到入门 (http://www.zsythink.net/?s=awk)
awk用法(使用入门) (https://www.cnblogs.com/emanlee/p/3327576.html)
官方文档 (https://www.gnu.org/software/gawk/manual/html_node/index.html#SEC_Contents)

sed
sed命令是一个面向字符流的非交互式编辑器,按行来处理文本内容。在shell中,使用sed来批量修改文本内容是非常方便的。

1、sed的工作原理
sed 把每一行都存在临时缓存区中,对这个副本进行编辑,所以不会修改或破坏源文件。具体过程如下:
1)sed 把当前正在处理的行保存在一个临时缓存区中,这个缓存区称为“模式空间”或“临时缓冲”。
2)sed 对模式空间中的行后处理完毕后,就把该行发送到屏幕上(除非之前有命令删除这一行或取消打印操作)。
3)sed处理完输入文件的最后一行后, sed 便结束运行。

2、sed命令详解
2.1、sed命令的语法格式
sed的命令格式
sed [option] 'sed command'filename
sed的脚本格式
sed [option] -f 'sed script'filename
2.2、sed命令的选项(option)
-n :使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN 的数据一般都会被列出到终端上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。
-e :多重编辑,且命令顺序会影响结果
-f :直接将 sed 的动作写在一个文件内, -f filename 则可以运行 filename 内的 sed 动作;
-r :sed 的动作支持的是延伸型正规表示法的语法。(默认是基础正规表示法语法)
-i :直接修改读取的文件内容,而不是输出到终端。
2.3、sed定位文本的方式
x	x为行号
x,y	表示行号从x到y
/pattern	查询包含模式的行
/pattern /pattern	查询包含两个模式的行
pattern/,x	在给定行号上查询包含模式的行
x,/pattern/	通过行号和模式查询匹配的行
x,y!	查询不包含指定行号x和y的行
2.4、sed操作命令(command)
命 令	说 明
a\	在当前行后添加一行或多行。
sed ‘/pattern/a new_str’file;sed ‘1a new_str‘ file
c\	用新文本修改(替换)当前行中的文本
d	删除行
i\	在当前行之前插入文本
h	把模式空间里的内容复制到暂存缓存区
H	把模式空间里的内容追加到暂存缓存区
g	取出暂存缓冲区里的内容,将其复制到模式空间,覆盖该处原有内容
G	取出暂存缓冲区里的内容,将其复制到模式空间,追加在原有内容后面
l	列出非打印字符
p	打印匹配行(和-n选项一起合用)
=	显示文件行号
{}	定位执行的命令组,“;”隔开
n	读入下一输入行,并从下一条命令而不是第一条命令开始处理
q	结束或退出 sed
r filename	从另一个文件中读文本,类似输入重定向   <
!	对所选行意外的所有行应用命令
s	用一个字符串替换另一个
2.5、替换标志
g	在行内进行全局替换
p	打印行
w filename	写文本到一个文件,类似输出重定向   >
x	交换暂存缓冲区与模式空间的内容
y	传送字符,替换单个字符(不能对正则表达式使用 y 命令)
2.6、sed的正则表达式
元字符	功 能	示 例	示例的匹配对象
^	行首定位符	/^love/	匹配所有以 love 开头的行
$	行尾定位符	/love$/	匹配所有以 love 结尾的行
.	匹配除换行外的单
  个字符	/l..e/	匹配包含字符 l、后跟两个任意
  字符、再跟字母 e 的行
*	匹配零个或多个前
  导字符	/*love/	匹配在零个或多个空格紧跟着
  模式 love 的行
  []	匹配指定字符组内
  任一字符	/[Ll]ove/	匹配包含 love 和 Love 的行
  [^]	匹配不在指定字符
  组内任一字符	/[^A-KM-Z]ove/	匹配包含 ove,但 ove 之前的那
  个字符不在 A 至 K 或 M 至 Z 间
  的行
  \(..\)	保存已匹配的字符		
  &	保存查找串以便在
  替换串中引用	s/love/**&**/	符号&代表查找串。字符串 love
  将替换前后各加了两个**的引
  用,即 love 变成**love**
  \<	词首定位符	/\<love/	匹配包含以 love 开头的单词的
  行
  \>	词尾定位符	/love\>/	匹配包含以 love 结尾的单词的
  行
  x\{m\}	连续 m 个 x	/o\{5\}/	分别匹配出现连续 5 个字母 o、
  至少 5 个连续的 o、或 5~10 个
  连续的 o 的行
  x\{m,\}	至少 m 个 x	/o\{5,\}/	
  x\{m,n\}	至少 m 个 x,但不
  超过 n 个 x	/o\{5,10\}/	

2.7、字符集
[:digit:]	所有数字,即[0-9]
[:lower:]	所有的小写字母
[:upper:]	所有的大写字母
[:alpha:]	所有的字母
[:alnum:]	相当于0-9a-zA-Z
[:space:]	空白字符
[:punct:]	所有标点符号

2.8、sed实例
# {}的应用
sed -n '1,4{=;p}' passwd
# a\的应用
sed ‘/pattern/a new_str’file # 在匹配模式的下一行新,增str
sed ‘1a new_str‘ file # 在第1行后,新增str
# !的应用
# 过滤#注释行和空格行
sed –n ‘/^#/!{/^$/!p}’file
l  /^#/!:打印除了#开头的行
l  {/^$/!p}:打印除了空格行
# -e 的应用
# 删除#注释行和空行。有时-e的不同顺序,会造成不同结果。比如 -e ’1a’–e ‘2a’
sed –e ‘/^#/d’-e ‘/^$/d’ file
# 将hello所在行的END替换为tail
sed –i ‘/hello/s@END@tail@#’
l  @:地址定界符,还可以是/,#等其他特殊字符
# ()和&
# 将目录下的.txt文件批量命名为.sh文件
find . –name ‘*.txt’ | sed –re ‘s#(.*).txt#mv & \1.sh#e’
l  (.*).txt:查找的文件,对应&
l  (.*):分组,对应\1,多个括号就依次对应\2,\3,…
l  e:执行mv命令
# \<\>
# 删除文件中含有you这个单词的行。\必须加
sed ‘/\<you\>/d’file
3、参考文档
linux sed命令详解(推荐) (http://www.jb51.net/article/111306.htm)
linux命令总结sed命令详解 (https://www.cnblogs.com/ginvip/p/6376049.html)
sed命令详解 (https://www.cnblogs.com/ctaixw/p/5860221.html)

grep
grep适合单纯的查找或匹配文本。
1、grep的参数
--color=atuo或者—color:对匹配到的文本着色
-i:忽略大小写
-n:显示结果所在行号
-c:统计匹配到的行数。注意:是匹配到的总行数,不是匹配到的次数
-o:只显示符合条件的字符串,但是不整行显示。每个符合条件的字符串单独显示一行
-v:接啥排除啥
-w:匹配整个单词,如果是字符创中包含这个单词,则不会匹配
-Ax:输出的时候包含结果所在行之后的指定行数,x是行数,A:after。如果有多个匹配结果。则每个结果的后x行都会显示
-Bx:输出的时候包含结果所在行之前的指定行数,x是行数,B:before。
-Cx:输出的时候包含结果所在行之前和行之后的指定行数,x是行数,C:context
-e:实现多个选项的匹配,逻辑or关系
-q:静默模式,不输出任何信息。于“echo $?”合用,查看是否匹配到,0表示匹配到,1表示没有匹配到
-P:使用兼容的perl的正则
-E:使用扩展正则表达式,同egrep
# -e的使用
grep –e’one’ –e’two’ file # 可以同时匹配one和two
练习题

1、将/etc/passwd 文件的前10行输入到passwd中,将passwd变为只有单词/字母存在的文本
sed -nr 's#[:/0-9]+# #gp' passwd.txt  #对passwd.txt文件进行处理,将 FS 变为空格
2、将/etc/passwd 文件的前10行输入到passwd中,计算文件中每个单词的重复数量
sed -nr 's#[:/0-9]+# #gp' passwd.txt | sed -nr 's# #\n#gp' | sort | uniq -c | sort –nr
l  sed -nr 's#[:/0-9]+# #gp' passwd.txt  #对passwd.txt文件进行处理,将 FS 变为空格
awk 'BEGIN{RS="[:/0-9]+"}{print $0}' passwd.txt | head -n -1 | sort | uniq -c | sort -nr  # head -n -1 是因为最后一行是空行,需要排除
3、从处理过的passwd文件中,找出第一列有1—2个o的行,并打印行号
# awk使用{m,n},需要加--posix
awk --posix ‘$1~/o{1,2}/{print NR,$1}’passwd
4、统计某一文件里空行的数量
sed -nr 's#^$##gp' file | wc -l
grep "^$" file |wc -l 
awk '/^$/{a=a+1} END{print a}' file
5、以 : 为分隔符,统计/etc/passwd文件中$3>5的行数
awk -F: '{$3>5?a++:b++} END{print a}' /etc/passwd
awk -F: '$3>5{a++;print NR,$0} END{print a}' /etc/passwd
6、找出环境变量$PATH中,所有只有三个任意字符的命令,如tee,并将它们重定向到command.txt中。每行显示1一个,并统计总个数
find $(echo $PATH | tr ":" "\n") -type f -name "???" 1> command 2>/dev/null;wc -l command
7、处理以下文件内容,将域名取出,并根据域名进行技术排序处理(去重)
http://www.cbl.org/index.html
http://www.cbl.org/1.html
http://post.cbl.org/index.html
http://mp3.cbl.org/index.html
http://www.cbl.org/3.html
http://post.cbl.org/2.html
awk -F "/" '{a[$3]++} END{for(i in a){print i,a[i]}}' test
8、处理以下文件内容,去重
111 222 333 444 222 222 111 111 11 11
22 33 44 55 33 33 55 22
77 88 77 77 88 99 33 33
awk '{for(i=1;i<=NF;i++)a[$i,NR]++} \
{for (j in a) {split(j,m,SUBSEP);if(m[2]==NR)printf m[1]" "} printf "\n"}' test
l  a[$i,NR]:二维数组
l  for (j in a):遍历,j是二维数组
l  split(j,m,SUBSEP):切割二维数组,SUBSEP是切割二维数组的分隔符
l  printf m[1]:如果使用print,则每个m[1],都会自动换行。printf不会,print需要自定义格式
l  printf "\n":换行。awk是一行一行处理的,一行处理完,换行,美化输出



# awk
```bash
# 或
echo -e "AAA\nBBB\nCCC\n"|awk '/AA/||/BB/{print NR $0}'
# 且
echo -e "AAA\nBBB\nCCCAABB\n"|awk '/AA/&&/BB/{print NR $0}'
```

查询eth0 的ip

```
ifconfig eth0|awk -F "[ :]+" 'NR==2{print $3}' 
ifconfig eth0|awk -v FS="[ :]+" 'NR==2{print $3}'
ifconfig eth0|sed -n 's/^.*inet\(.*\) netmask.*$/\1/gp'
```

```
# int() 取整
echo "1 0.1 2%"|awk '{print int($2)}'
```

```
awk -F "[||./]" 'NR==1{$2+20}'
```

[网友awk](https://blog.csdn.net/qq_24336773/article/details/79900174)


https://zhuanlan.zhihu.com/p/346050404
https://blog.csdn.net/qq_37041791/article/details/126031351
https://www.jianshu.com/p/264cbf8d618b
https://blog.csdn.net/tony_vip/article/details/104269574
https://cloud.tencent.com/developer/article/1602928
https://cloud.tencent.com/developer/article/1718187
https://cloud.tencent.com/developer/article/1690405
https://www.bookstack.cn/read/bash-tutorial/docs-intro.md
https://www.cnblogs.com/nulige/articles/8710561.html
https://dashdash.io/
https://www.cnblogs.com/tinywan/p/5903988.html
https://dabeaz-course.github.io/practical-python/Notes/02_Working_with_data/03_Formatting.html
https://cloud.tencent.com/document/product/457/47014
https://cloud.tencent.com/developer/article/1639217
https://www.cnblogs.com/mmgithub123/p/15853680.html
https://developer.aliyun.com/article/33
https://segmentfault.com/a/1190000008268803?utm_source=sf-backlinks
https://zhuanlan.zhihu.com/p/35725217
https://blog.csdn.net/tengmuxin/article/details/51073095	
https://log.qingcloud.com/archives/tag/kubesphere
mysql -h 55.13.58.69 -upcuser -p rehp8gY%

docker run -v `pwd`:/tmp/1 1209233066/base/pyinstall sh -c "cd /tmp/1;pyinstaller -F modify_saltmaster_v2.py"


大key分析工具
https://github.com/xueqiu/rdr
prometheus 全家桶,今天安装测试
https://blog.csdn.net/qq_41538097/article/details/125564711
https://www.cnblogs.com/skyflask/p/11480988.html

openvpn
https://blog.csdn.net/zzchances/article/details/124801161
https://kubernetes.io/zh-cn/docs/concepts/workloads/controllers/statefulset/
sts.spec.podManagementPolicy 


pod.spec.env.valueFrom.fieldRef


topologySpreadConstraints

updateStrategy


#pod.spec
hostAliases:
- ip: "10.1.2.3"
  hostnames:
  - "foo.com"
  - "bar.com"
pod.pec
shareProcessNamespace: true
hostNetwork: true
hostIPC: true
hostPID: true
    lifecycle:
      postStart:
        exec:
          command: ["/bin/sh", "-c", "echo Hello from the postStart handler > /usr/share/message"]
      preStop:
        exec:
          command: ["/usr/sbin/nginx","-s","quit"]

dnsConfig

posted @ 2021-04-26 22:39  mingtian是吧  阅读(79)  评论(0编辑  收藏  举报