【原创】linux命令

1、 taskset

设置,查看进程的cpu亲和性

#taskset -c <cpu-list> <command>      运行程序command,并设置cpu亲和性(CPU affinity)
taskset -c 0 image_search
taskset -c 0-6 image_search


#taskset -c -p  <cpu-list> pid            显示进程pid的cpu亲和性设置
taskset -c -p  pid

#taskset -c -p  <cpu-list> pid        修改进程pid的cpu亲和性设置
taskset -c -p   0-6 pid

使用实例参考:https://diego.assencio.com/?index=4515794de9f941c632d593384ca39dea

查看所有进程的cpu亲和性:

for pid in $(ps -eLf | awk '{print $2}'); 
    do taskset  -c -p $pid; 
done

多数不允许在系统的所有逻辑核心中运行的线程(不包括用户设置的CPU亲缘关系的线程)是内核线程。 要验证这一点,请使用以下ps命令+PID的输出,以查找不允许在所有CPU上运行的某个进程:

ps -up <pid>

如果进程名称(COMMAND列)显示在方括号内(例如[kdmflush]),则它是内核线程。

2、lscpu

查看CPU的系列,型号等的基本信息,始终基于第一个CPU。

[zxy@host233186 ~]$ lscpu
Architecture:          x86_64                #cpu架构
CPU op-mode(s):        32-bit, 64-bit        #是否支持64位
Byte Order:            Little Endian         #小字节序
CPU(s):                16                    #16个cpu核心
On-line CPU(s) list:   0-15                  #cpulist编号
Thread(s) per core:    1                     #是否支持超线程,如果是这里应该是2
Core(s) per socket:    8      #用插槽数表示有少个物理CPU,每个物理cpu可以有多个core核心
Socket(s):             2      #两颗物理cpu
NUMA node(s):          2      #cpu 编号分两段
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 63
Model name:            Intel(R) Xeon(R) CPU E5-2630 v3 @ 2.40GHz
Stepping:              2
CPU MHz:               2399.906
BogoMIPS:              4809.15
Virtualization:        VT-x
L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
L3 cache:              20480K
NUMA node0 CPU(s):     0-7
NUMA node1 CPU(s):     8-15

3、Top 查看线程信息

top -H  -p  <pid>         #查看指定进程号的线程信息,包括cpu和内存利用率

[root@snisspreweb02 ~]# top -H -p 30786
top - 10:36:18 up 840 days, 18:49, 11 users,  load average: 14.59, 9.47, 4.33
Tasks:  31 total,  16 running,  15 sleeping,   0 stopped,   0 zombie
Cpu(s): 10.2%us, 34.7%sy,  0.0%ni, 46.5%id,  0.0%wa,  0.0%hi,  0.0%si,  8.6%st
Mem:  65973656k total, 57390508k used,  8583148k free,  2285332k buffers
Swap: 10485752k total,  2603892k used,  7881860k free, 26622400k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                 
31016 root      20   0 1096m 319m 6512 S 47.5  0.5   0:14.72 python                                                   
31014 root      20   0 1096m 319m 6512 S 46.1  0.5   0:14.09 python                                                   
31017 root      20   0 1096m 319m 6512 S 45.5  0.5   0:15.14 python                                                   
31013 root      20   0 1096m 319m 6512 S 45.1  0.5   0:14.24 python                                                   
31015 root      20   0 1096m 319m 6512 S 44.1  0.5   0:15.01 python                                                   
31019 root      20   0 1096m 319m 6512 S 42.5  0.5   0:14.91 python                                                   
31012 root      20   0 1096m 319m 6512 S 41.8  0.5   0:13.87 python                                                   
31018 root      20   0 1096m 319m 6512 S 41.5  0.5   0:15.19 python                                                   
31009 root      20   0 1096m 319m 6512 S 40.8  0.5   0:13.50 python                                                   
31010 root      20   0 1096m 319m 6512 S 40.8  0.5   0:14.02 python                                                   
31008 root      20   0 1096m 319m 6512 S 37.2  0.5   0:13.72 python                                                   
31004 root      20   0 1096m 319m 6512 S 36.8  0.5   0:12.43 python                                                   
31006 root      20   0 1096m 319m 6512 S 36.5  0.5   0:12.61 python                                                   
31005 root      20   0 1096m 319m 6512 S 35.8  0.5   0:12.81 python                                                   
31007 root      20   0 1096m 319m 6512 S 35.8  0.5   0:13.29 python                                                   
31110 root      20   0 1096m 319m 6512 R  6.6  0.5   0:01.73 python                                                   
31113 root      20   0 1096m 319m 6512 R  6.6  0.5   0:01.74 python                                                   
30786 root      20   0 1096m 319m 6512 R  6.3  0.5   0:02.45 python                                                   

查看指定指定进程名的线程信息使用命令

ps -ef | grep "042_faiss" | grep -v 'grep'| awk '{print $2}' | xargs -i -t top -b -H -p {}

注意: top -b 表示使用batch model,xargs不支持交互操作,不用-b选项会提示错误: “top: failed tty get”。如果要像top命令一样自动刷新,可以尝试下面的命令:

top -H -p  $(ps aux | awk '/ProgramName/ && ! /awk/ { print $2; exit; }')

  首先执行$()包括的命令,至于为什么,可以看下面的下一张的解释。括号里用的是awk命令,用法牛爆了,正则匹配项有两部分,一个要求包含ProtramName,一个要求不包含awk字样,两者使用&&连接,找到这样的句子执行打印进程号,并awk的操作。后面还得专门总结一下awk的用法,确实很好用。

或者使用pgrep配合top使用,命令更简单

top -H -p $(pgrep ProgameName | head -n 1)

4、shell中的$()和${}


#小括号$(),表示要执行的命令,多个命令使用分号分割,最后一个命令的输出做出$()的输出值
for  pid  in $(pgrep -f test.py);
    #大括号${}表示引用变量
    do ps -ef  | grep ${pid};
done

5、 awk命令

awk可以使用三种选项组合模式:

  • 两种模式用逗号分隔,表示范围搜索。匹配第一个模式的行为起始行,符合第二个模式的终止行,返回起始行和终止行的间的全部内容。继续搜索时将从终止行+1的位置开始匹配。例如:
# awk '/begin/,/end/' test.txt 
begin
1 2 3 4
end
begin
5 6 7 8
end

返回与包含字符串 “begin” 的记录以以及包含字符串 “end” 之间的所有记录(包含包括字符串 end 的记录)。文件中查找到两个组这样内容。

  • 括号 ( ) 将模式组合在一起。
  • 布尔运算符 ||(或)&&(和)以及 !(不)将模式组合成如果它们求值为真则匹配,否则不匹配的表达式。例如,模式:
$1 == "al" && $2 == "123"

与第一个字段是 al 且第二个字段是 123 的记录匹配。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值