文件差、并、diff操作、pstree、iftop命令使用笔记

数据准备:
inter12@inter12-VirtualBox:/tmp/temp$ more t1
12 hi zhaoming
32 ohoh mingtian
22 jhoh mingtian
2 iehieh tomorrow

inter12@inter12-VirtualBox:/tmp/temp$ more t2
2 iehieh tomorrow
12 hi zhaoming
32 ohoh mingtian
按照第一列排序
inter12@inter12-VirtualBox:/tmp/temp$ sort -n t1
2 iehieh tomorrow
12 hi zhaoming
22 jhoh mingtian
32 ohoh mingtian
或者是:

inter12@inter12-VirtualBox:/tmp/temp$ sort -h t1
2 iehieh tomorrow
12 hi zhaoming
22 jhoh mingtian
32 ohoh mingtian

按照第三列排序:
inter12@inter12-VirtualBox:/tmp/temp$ sort -k3,3 t1
22 ohoh mingtian
32 jhoh mingtian
2 iehieh tomorrow
12 hi zhaoming
先按照第三列排序,若是第三列相同的情况下按照第二类排序

inter12@inter12-VirtualBox:/tmp/temp$ sort -k3,3 t1 | sort -s -k2,2
12 hi zhaoming
2 iehieh tomorrow
32 jhoh mingtian
22 ohoh mingtian

jhoh这个字符串的首字母是在ohoh之前的,所以结果是正确的.
求两个文件的差集,并集,交集
并集:
inter12@inter12-VirtualBox:/tmp/temp$ cat t1 t2 | sort -h | uniq > t3 //按照第一列进行排序后并集

inter12@inter12-VirtualBox:/tmp/temp$ more t3
2 iehieh tomorrow
2 iehieh tomorrow
12 hi zhaoming
22 ohoh mingtian
32 jhoh mingtian
32 ohoh mingtian
交集

inter12@inter12-VirtualBox:/tmp/temp$ cat t1 t2 | sort -h | uniq -d | tee t3

12 hi zhaoming

只有一行是相同的,这个比较工具是按照一行一行的进行比较,只能进行简单的比较
差集

inter12@inter12-VirtualBox:/tmp/temp$ cat t1 t2 | sort | uniq -u | tee t3
22 ohoh mingtian
2 iehieh tomorrow
2 iehieh tomorrow
32 jhoh mingtian
32 ohoh mingtian
注意这里不是简单的 t3 = t1 – t2 , 而是除去了t1,t2中相同的元素后,剩下的元素。上面可以并集只有一个,3(t1)+4(t1) -2(t1+t2) = 5 所以剩下的就是现在这里 .

pstree :将用户的进程以一颗树的形式展开

inter12@inter12-VirtualBox:~$ pstree -ps 2086

init(1)───eclipse4.2.1(2073)───java(2086)─┬─{java}(2087)

├─{java}(2088)

├─{java}(2089)

├─{java}(2090)

├─{java}(2091)

├─{java}(2092)

├─{java}(2093)

├─{java}(2094)

├─{java}(2095)

├─{java}(2096)

├─{java}(2097)

├─{java}(2098)

├─{java}(2099)

├─{java}(2100)

├─{java}(2101)

├─{java}(2104)

├─{java}(2105)

├─{java}(2109)

├─{java}(2161)

├─{java}(2287)

├─{java}(2288)

├─{java}(2289)

├─{java}(2293)

└─{java}(2296)

常见的参数:

-a : 列出启动过程中的参数

-p : 显示PID

-s : 显示父进程ID

若是后面跟的不是PID,而是用户名,那么就会列出这个用户的进程树

inter12@inter12-VirtualBox:~$ pstree -psa inter12

/usr/bin/termin,2203 /usr/bin/terminator

├─(/usr/bin/termin,2209)

├─bash,2210

├─bash,2419

│ └─gedit,2478

│ ├─{gedit},2480

│ └─{gedit},2481

├─bash,2793

│ └─pstree,3276 -psa inter12

├─bash,2872

├─bash,2959

│ └─tail,3038 -f jetty.log

├─bash,3185

│ └─top,3246

├─{/usr/bin/termi},2208

└─{/usr/bin/termi},2211

VBoxClient,1816 –clipboard

└─{VBoxClient},1837

VBoxClient,1824 –display

└─{VBoxClient},1850

VBoxClient,1828 –seamless

└─{VBoxClient},1830

bamfdaemon,1915

└─{bamfdaemon},1991

dbus-daemon,1811 –fork –print-pid 5 –print-address 7 –session

dbus-daemon,1835 –fork –print-pid 8 –print-address 10 –session

dbus-launch,1810 –autolaunch ae29ca89bd7c49cef31124a600000007 –binary-syntax –close-stderr

dbus-launch,1834 –exit-with-session gnome-session –session=ubuntu

dconf-service,1908

├─{dconf-service},1909

└─{dconf-service},1911

eclipse4.2.1,2073

└─java,2086 -Xms40m -Xmx512m -XX:MaxPermSize=256m -jar/home/inter12/install/soft/eclipse4.2.1/eclipse//plugins/org.eclipse.equinox.launcher_1.3.0.v20120522-181

├─{java},2087

├─{java},2088

├─{java},2089

├─{java},2090

。。。。。。。 后面还有很多!这个用户可能还有一个用处就是查看java的线程数量吧:

inter12@inter12-VirtualBox:~$ pstree -p 2086 | grep java | wc -l
24
2086总共开启了24个线程.

iftop:一个查看网络流量的蛮有意思工具

top:

50.0Kb 100Kb 150Kb 200Kb 250Kb

└──────────────────────────────────┴──────────────────────────────────┴──────────────────────────────────┴──────────────────────────────────┴──────────────────────────────────

inter12-VirtualBox.local => 192.168.7.41 0b 7.98Kb 4.03Kb

<= 0b 11.3Kb 5.67Kb

……

───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

TX: cumm: 628KB peak: 43.6Kb rates: 3.71Kb 2.28Kb 6.09Kb

RX: 620KB 59.5Kb 3.13Kb 1.88Kb 7.39Kb

TOTAL: 1.22MB 103Kb 6.84Kb 4.16Kb 13.5Kb

前面两行代表 从本地流向192.168.7.41这个地址的流量 后面三个数值分别代表 过去2秒,10秒,40秒的平均流量
底部的参数说明:
TX:发送流量
RX:接收流量
TOTAL:总流量
Cumm:运行iftop到目前时间的总流量
peak:流量峰值
rates:分别表示过去 2秒 10秒 40秒 的平均流量

几个常见的参数:
-i设定监测的网卡,如:iftop -i eth0
-n使host信息默认直接都显示IP,如:# iftop -n
-F显示特定网段的进出流量,如# iftop -F 192.168.7.41/24或# iftop -F 10.10.1.0/255.255.255.0

iftop -F 192.168.7.41/24

12.5Kb 25.0Kb 37.5Kb 50.0Kb 62.5Kb

└──────────────────────────────────┴──────────────────────────────────┴──────────────────────────────────┴──────────────────────────────────┴──────────────────────────────────

192.168.7.41 => inter12-VirtualBox.local 0b 80b 4.08Kb

<= 0b 74b 2.90Kb
就之显示自己谁设定的IP段
-b使流量图形条默认就显示,比较有用的命令。
-P使host信息及端口信息默认就都显示;

sudo iftop -P

12.5Kb 25.0Kb 37.5Kb 50.0Kb 62.5Kb

└──────────────────────────────────┴──────────────────────────────────┴──────────────────────────────────┴──────────────────────────────────┴──────────────────────────────────

192.168.7.41:2181 => inter12-VirtualBox.local:35760 0b 11.3Kb 5.16Kb

<= 0b 7.98Kb 3.66Kb

这样就可以看到端口了。
-B 以bytes为单位显示流量(默认是bits),如:# iftop -B
详细的可以参见 man iftop

作者: inter12

在这苦短的人生中,追求点自己的简单快乐

发表评论

电子邮件地址不会被公开。 必填项已用*标注