Linux後臺開發工具箱

https://files-cdn.cnblogs.com/files/aquester/Linux後臺開發工具箱.pdf html

 

目錄

 

目錄 1java

 

1. 前言 3node

 

2. 腳本類工具 3python

 

2.1. sed命令-字符串文本操做 3ios

 

2.2. sedawk使用外部變量 4git

 

2.3. awk給外部變量賦值 4github

 

3. 設備類工具 4redis

 

3.1. 查看網卡型號 4shell

 

3.2. dmidecode查看全部硬件信息工具 5數據庫

 

3.3. lscpu查看cpu工具 5

 

3.4. lspci查看主板工具 5

 

3.5. lsscsi查看SCSI卡工具 5

 

4. 系統類工具 5

 

4.1. sar系統綜合工具 5

 

4.2. vmstat系統級內存監測工具 5

 

4.3. iostat系統級磁盤IO監測工具 5

 

4.4. iotop進程級磁盤IO監測工具 6

 

4.5. tophtop 6

 

4.6. 定時查看CPU 6

 

4.7. 查看系統中斷 6

 

4.8. 查看網卡中斷 6

 

4.9. 查看中斷親和性 6

 

4.10. lsof 6

 

4.11. fuser 7

 

4.12. free查看內存工具 7

 

4.13. screenbyobutmux分屏工具 7

 

4.14. dtach 7

 

4.15. slabtop查看內核slab緩存工具 8

 

4.16. dmesg檢測和控制內核環緩衝工具 8

 

4.17. dstat可取代vmstat/iostat/netstat/ifstat的工具 8

 

4.18. MultiTail相似tail的同時監控多個文檔工具 9

 

4.19. Monitorix系統和網絡監控工具 9

 

4.20. collectl全能性能監控工具 9

 

4.21. percona工具包 10

 

5. 磁盤工具 10

 

5.1. sysbench 10

 

5.2. sfdisk分區工具 11

 

5.3. fdisk分區工具 11

 

5.4. cfdisk分區工具 11

 

5.5. parted分區工具 11

 

5.6. gparted分區工具 11

 

5.7. SCSI工具 11

 

5.8. RAID工具 11

 

5.9. hdparm磁盤性能測試工具 12

 

5.10. mount掛載磁盤工具 12

 

5.11. mkfs建立文件系統工具 12

 

5.12. df查看磁盤容量工具 12

 

5.13. du統計目錄和文件大小工具 12

 

6. 進程類工具 12

 

6.1. pwdx命令-查看工做目錄 12

 

6.2. pidof命令-查看進程ID 12

 

6.3. niceionice優先級調整工具 12

 

6.4. pstack查看調用棧工具 12

 

6.5. 查看可執行程序和共享庫工具 12

 

7. 性能類工具 13

 

7.1. valgrindqcachegrind內存分析工具 13

 

7.2. perf性能分析工具 13

 

7.3. 壓力測試工具:abtsungsiege 13

 

8. 網絡類工具 13

 

8.1. netstatss命令 13

 

8.2. ifconfigip命令 13

 

8.3. tcpdump網絡抓包工具 14

 

8.4. ifstat網絡流量實時查看工具 16

 

8.5. iptraf實時IP局域網監控 16

 

8.6. iftop網絡帶寬監控 16

 

8.7. nethogs網絡帶寬監控 16

 

8.8. slurm查看網絡流量工具 17

 

8.9. Arpwatch以太網活動監控器 17

 

8.10. Suricata網絡安全監控 17

 

8.11. Nagios網絡/服務器監控 17

 

8.12. socat多功能的網絡工具 17

 

8.13. mtr網絡連通性判斷工具 17

 

8.14. 查看網卡統計 17

 

8.15. 查看網卡RingBuffer大小 17

 

8.16. sar查看網絡流量 17

 

9. /proc文件系統 17

 

9.1. /proc/meminfo 18

 

9.2. /proc/cpuinfo 18

 

9.3. /proc/PID 18

 

9.4. /proc/irq/ 18

 

9.5. /proc/net 18

 

9.6. /proc/sys/fs 18

 

9.7. /proc/sys/net 19

 

9.8. /proc/sys/vm 19

 

10. 其它 19

 

10.1. shell中函數繼承問題 19

 

10.2. 查看Linux各發行版本方法 19

 

10.3. 取IP地址命令 20

 

10.4. 清除系統緩存 20

 

10.5. 查看TCP數據 20

 

10.6. 查看UDP數據 20

 

10.7. 查看socket緩衝區默認大小 20

 

10.8. 查看socket緩衝區最大大小 20

 

10.9. 找出CPU佔用最高的線程 20

 

10.10. Linux上查找形成IO高負載的進程 20

 

10.11. iptables簡單應用 21

 

10.12. 配置DNS客戶端方法 23

 

10.13. crontab使用環境變量 24

 

11. 幾種修改Linux主機名的方法 25

 

11.1. 臨時修改主機名 25

 

11.2. 永久修改主機名 25

 

11.3. 區別 26

 

12. process_monitor.sh進程監控重啓工具 26

 

13. 遠程批量操做工具 27

 

13.1. 批量執行命令工具:mooon_ssh 28

 

13.2. 批量上傳文件工具:mooon_upload 28

 

13.3. 使用示例 28

 

 

 

1. 前言

 

本文是個大雜燴,內容爲平常點滴的日積月累,持續更新當中,可關注博客(https://blog.csdn.net/Aquesterhttp://aquester.blog.chinaunix.net),查看最新版本。文中的內容,可幫忙開發提高分析和定位各種問題,好比找出致使IO負載高的進程等,以及一些簡單的運維工做等。

 

2. 腳本類工具

 

2.1. sed命令-字符串文本操做

 

如需直接修改文件方式替換,只需sed後帶參數「-i」。

 

 

 

1) 單引號替換(特殊字符須要使用反斜線」\」進行轉義

 

sed 's/原字符串/替換字符串/'

 

 

 

2) 雙引號替換(如要替換的包含了「/」,則可以使用「|」作分隔符)

 

sed "s/原字符串包含'/替換字符串包含'/"

 

 

 

3) 問號替換

 

sed 's?原字符串?替換字符串?'

 

 

 

4) 同時多個替換

 

不一樣替換間使用分號分開。

 

2.2. sedawk使用外部變量

 

x=MM

sed 's/AB/'$x'/g' filename

sed 's/AB/'"$x"'/g' filename

 

sed 's/'"$val"'//' filename

 

awk '{ print "'$x'" }' filename

 

2.3. awk給外部變量賦值

 

假設將值存在文件t中,文件t內容以下,只有一行:

 

a b c

 

 

 

須要將abc分別賦給外部變量xyz,則腳本可寫成以下:

 

eval $(awk '{ printf("x=%s\ny=%s\nz=%s",$1,$2,$3); }' ./t)

echo $x

echo $y

echo $z

 

 

 

請注意printf函數中的換行符\n是必須的,起關鍵做用的是eval命令,它在不少場景有特別的用處。

 

3. 設備類工具

 

3.1. 查看網卡型號

 

lspci | grep -i ethernet

 

3.2. dmidecode查看全部硬件信息工具

 

3.3. lscpu查看cpu工具

 

3.4. lspci查看主板工具

 

使用示例:

 

lspci -vvv

lspci -vvv -t

 

3.5. lsscsi查看SCSI卡工具

 

4. 系統類工具

 

4.1. sar系統綜合工具

 

全稱「System Activity Reporter」,即系統活動狀況報告,最爲全面的系統性能分析工具之一,也可用來查看網絡流量。

 

4.2. vmstat系統級內存監測工具

 

$ vmstat

procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----

 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st

 1  0 1397364 3553340 775800 22420964    0    0     0    41    0    0  6 10 84  0  0

 

4.3. iostat系統級磁盤IO監測工具

 

$ iostat

Linux 3.10.1-1-XXX-0041 (UN)      2018年12月12日  _x86_64_        (4 CPU)

 

avg-cpu:  %user   %nice %system %iowait  %steal   %idle

           6.13    0.01   10.00    0.02    0.00   83.84

 

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn

sdb               0.11         0.11         3.66    3818251  131342429

sda               6.06         1.54       158.24   55370852 5672335360

dm-0              0.00         0.03         0.02    1126394     833860

dm-5              0.00         0.00         0.00      45657       5116

dm-6              0.00         0.00         0.00      45657       5116

dm-1              0.00         0.00         0.00      45658       5110

dm-2              0.00         0.00         0.00      45658       5116

dm-3              0.00         0.00         0.00      46478       5216

dm-4              0.00         0.00         0.00      43486       3369

dm-7              0.00         0.00         0.00      43269       3361

 

4.4. iotop進程級磁盤IO監測工具

 

4.5. tophtop

 

htoptop的增強版本。

 

4.6. 定時查看CPU

 

mpstat -P ALL 1

mpstat -I SUM 1

 

 

 

示例(每秒顯示一次):

 

mpstat -P ALL 1

 

4.7. 查看系統中斷

 

cat /proc/interrupts

 

4.8. 查看網卡中斷

 

grep eth1 /proc/interrupts |awk '{print $NF}'

 

4.9. 查看中斷親和性

 

cat /proc/irq/74/smp_affinity # 以中斷74爲例

 

 

 

4.10. lsof

 

全稱「List Open Files」,可用來查看進程打開了哪些文件,也可用來查看一個文件被哪些進程打開了,或者一個端口是哪一個進程打開的等。

 

 

 

1) 查看端口被誰佔用

 

lsof -i:port,如:lsof -i:80

 

 

 

2) 顯示開啓文件abc.txt的進程

 

lsof abc.txt

 

 

 

3) 顯示abc進程如今打開的文件

 

lsof -c abc

 

 

 

4) 顯示目錄下被進程開啓的文件

 

lsof +d /usr/local/

 

 

 

5) 顯示使用fd4的進程

 

lsof -d 4

 

 

 

6) 以UID,列出打開的文件

 

lsof -u username

 

 

 

7) 看進程號爲12的進程打開了哪些文件

 

lsof -p 12

 

 

 

8) 反覆執行,刷新頻率爲2

 

lsof -i:10888 -r 2

 

 

 

ls +r 死循環執行,直到沒有結果,如已沒有程序佔用端口號10888

 

4.11. fuser

 

lsof有些相似的功能,可查看文件、文件系統或套接字被哪些進程打開了。

 

4.12. free查看內存工具

 

4.13. screenbyobutmux分屏工具

 

4.14. dtach

 

用來模擬screendetach的功能的小工具:http://dtach.sourceforge.net/

 

4.15. slabtop查看內核slab緩存工具

 

4.16. dmesg檢測和控制內核環緩衝工具

 

4.17. dstat可取代vmstat/iostat/netstat/ifstat的工具

 

1) 示例1

 

$ dstat

You did not select any stats, using -cdngy by default.

----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system--

usr sys idl wai hiq siq| read  writ| recv  send|  in   out | int   csw

  4   6  89   0   0   0| 746B  118k|   0     0 |   0    18B| 850  5461

  8   9  82   0   0   0|   0    92k| 111k   71k|   0     0 |6888    15k

 17  39  44   0   0   0|   0    96k| 107k   62k|   0     0 |7392    19k

  2   3  94   0   0   0|   0   484k| 124k  171k|   0     0 |6855    13k

 

 

 

2) 示例2

 

# dstat -l -m -r -c  --top-io --top-mem --top-cpu

---load-avg--- ------memory-usage----- --io/total- ----total-cpu-usage---- ----most-expensive---- --most-expensive- -most-expensive-

 1m   5m  15m | used  buff  cach  free| read  writ|usr sys idl wai hiq siq|     i/o process      |  memory process |  cpu process

0.14 0.14 0.14|2710M  407M 6067M  117G|0.01  3.34 |  0   0 100   0   0   0|process_mon 960k  639B|redis-server 412M|report_proxy 0.0

0.13 0.14 0.14|2710M  407M 6067M  117G|   0     0 |  0   0 100   0   0   0|redis-serve  13k 9360B|redis-server 412M|report_proxy 0.1

0.13 0.14 0.14|2710M  407M 6067M  117G|   0     0 |  0   0  99   0   0   0|process_mon2027k 1986B|redis-server 412M|report_proxy 0.0

0.13 0.14 0.14|2710M  407M 6067M  117G|   0     0 |  0   0 100   0   0   0|sap1002      30k  624B|redis-server 412M|report_proxy 0.1

0.13 0.14 0.14|2710M  407M 6067M  117G|   0  9.00 |  0   0  99   0   0   0|process_mon2024k 1986B|redis-server 412M|report_proxy 0.1

0.13 0.14 0.14|2715M  407M 6067M  117G|   0  28.0 |  0   1  99   0   0   0|redis-serve  38k 4339k|redis-server 412M|report_proxy 0.1

0.68 0.25 0.18|2723M  407M 6067M  117G|   0  5.00 |  1   1  98   0   0   0|crond        13M  180k|redis-server 412M|report_proxy 0.1

 

4.18. MultiTail相似tail的同時監控多個文檔工具

 

4.19. Monitorix系統和網絡監控工具

 

4.20. collectl全能性能監控工具

 

能夠交互式地運行或做爲一個守護進程或同時兩者兼備地運行,可替代pstopiotopvmstat等,能夠做爲一個服務來監控遠程機或者整個服務器集羣。可以使用yumapt-get安裝,官網:http://collectl.sourceforge.net/

 

 

 

1) 示例1

 

collectl

 

#<--------CPU--------><-----------Disks-----------><-----------Network---------->

#cpu sys inter  ctxsw KBRead  Reads  KBWrit Writes netKBi pkt-in  netKBo pkt-out

  37  37   382    188      0      0   27144    254     45     68       3      21

  25  25   366    180     20      4   31280    296      0      1       0       0

  25  25   368    183      0      0   31720    275      2     20       0       1

 

 

 

2) 示例2

 

collectl -sjmf -oT

 

#         <-------Int--------><-----------Memory-----------><------NFS Totals------>

#Time     Cpu0 Cpu1 Cpu2 Cpu3 Free Buff Cach Inac Slab  Map  Reads Writes Meta Comm

08:36:52  1001   66    0    0   2G 201M 609M 363M 219M 106M      0      0    5    0

08:36:53   999 1657    0    0   2G 201M   1G 918M 252M 106M      0  12622    0    2

08:36:54  1001 7488    0    0   1G 201M   1G   1G 286M 106M      0  20147    0    2

 

 

 

3) 示例3

 

collectl -sn --verbose -oT

 

# NETWORK SUMMARY (/sec)

#          KBIn  PktIn SizeIn  MultI   CmpI  ErrIn  KBOut PktOut  SizeO   CmpO ErrOut

08:46:35   3255  41000     81      0      0      0 112015  78837   1454      0      0

08:46:36      0      9     70      0      0      0     29     25   1174      0      0

08:46:37      0      2     70      0      0      0      0      2    134      0      0

 

 

 

4) 示例4

 

collectl -sJ -oTm

 

#              Int    Cpu0   Cpu1   Cpu2   Cpu3   Type            Device(s)

08:52:32.002   225       0      4      0      0   IO-APIC-level   ioc0

08:52:32.002   000    1000      0      0      0   IO-APIC-edge    timer

08:52:32.002   014       0      0     18      0   IO-APIC-edge    ide0

08:52:32.002   090       0      0      0  15461   IO-APIC-level   eth1

 

4.21. percona工具包

 

簡稱PTPercona Toolkit),可用來監控MySQLMongoDB等。

 

1) 查詢程序執行聚合的GDB堆棧跟蹤,先進性堆棧跟蹤,而後將跟蹤信息彙總:

 

pt-pmp -p pid

 

 

 

2) 格式化explain出來的執行計劃按照tree方式輸出,方便閱讀:

 

pt-visual-explain

 

 

 

3) 從log文件中讀取插敘語句,並用explain分析他們是如何利用索引,完成分析以後會生成一份關於索引沒有被查詢使用過的報告:

 

pt-index-usage

 

5. 磁盤工具

 

5.1. sysbench

 

下載地址:https://github.com/akopytov/sysbench/releases

 

一個開源的、模塊化的、跨平臺的多線程性能測試工具,能夠用來進行CPU、內存、磁盤I/O、線程、數據庫的性能測試。目前支持的數據庫有MySQLOraclePostgreSQL

 

示例:測試fsync是否爲實時fsync

 

sysbench --test=fileio --file-fsync-freq=1 --file-num=1 --file-total-size=16384 --file-test-mode=rndwr prepare

sysbench --test=fileio --file-fsync-freq=1 --file-num=1 --file-total-size=16384 --file-test-mode=rndwr run

 

 

 

運行時,若是遇到警告「Did you forget to run the prepare step」,則表示須要先執行「prepare」。

 

 

 

Python腳本測試:

 

#!/usr/bin/python

# time python fsync.py

import os, sys, mmap

 

# Open a file

fd = os.open( "testfile", os.O_RDWR|os.O_CREAT|os.O_DIRECT )

m = mmap.mmap(-1, 512)

for i in range (1,1000):

   os.lseek(fd,os.SEEK_SET,0)

   m[1] = "1"

   os.write(fd, m)

   os.fsync(fd)

# Close opened file

os.close( fd )

 

5.2. sfdisk分區工具

 

示例:列出全部分區

 

# sfdisk -l

 

5.3. fdisk分區工具

 

示例:列出全部分區

 

# fdisk -l

 

5.4. cfdisk分區工具

 

具備互動式操做界面的磁盤分區工具,參數-P表示顯示分區表的內容,附加參數「s」會依照磁區的順序顯示相關信息。

 

5.5. parted分區工具

 

一個由GNU開發的功能強大的磁盤分區和分區大小調整工具。

 

5.6. gparted分區工具

 

parted的圖形化版本。

 

5.7. SCSI工具

 

1) dmesg |grep SCSI

 

2) lsscsi

 

5.8. RAID工具

 

1) dmesg |grep -i raid

 

2) 查看軟RAIDcat /proc/mdstat

 

5.9. hdparm磁盤性能測試工具

 

使用示例:hdparm -t /dev/sda

 

5.10. mount掛載磁盤工具

 

文件/etc/fstab的內容和mount輸出是一致的。

 

5.11. mkfs建立文件系統工具

 

掛載一塊磁盤以前,須要先建立好文件系統。

 

5.12. df查看磁盤容量工具

 

5.13. du統計目錄和文件大小工具

 

6. 進程類工具

 

6.1. pwdx命令-查看工做目錄

 

根據進程ID,查看指定進程的當前工做目錄(注意不是程序文件所在目錄),格式:pwdx pid,如pwdx 1

 

6.2. pidof命令-查看進程ID

 

根據進程名,查看進程的ID,格式:pidof 進程名,如:pidof init

 

6.3. niceionice優先級調整工具

 

nice是進程的CPU優先級查看和調整工具,ionice是進程的IO優先級查看和調整工具。

 

6.4. pstack查看調用棧工具

 

根據進程ID,查看指定進程調用棧的工具,格式:pstack pid

 

6.5. 查看可執行程序和共享庫工具

 

1) objdump

 

2) nm 常常用來查看共享庫是否包含了某個符號

 

3) ldd 查看依賴關係工具

 

4) strings 列出符號

 

5) strip 刪除符號表工具

 

6) readelf

 

7. 性能類工具

 

7.1. valgrindqcachegrind內存分析工具

 

開源的內存分析和性能分析工具。qcachegrind是一個valgrind輔助工具,可視化方式查看valgrind性能分析結果。

 

7.2. perf性能分析工具

 

Linux自帶的功能強大的性能分析工具,可結合火焰圖。使用方式,如:perf top -p pid。自帶了生成SVG格式的圖形化工具timechart

 

7.3. 壓力測試工具:abtsungsiege

 

8. 網絡類工具

 

8.1. netstatss命令

 

ss是一個能夠替代netstat的網絡鏈接查看工具(socket statistics)

 

 

 

示例1:查看TCP監聽

 

netstat -lpnt

 

 

 

示例1:查看TCP鏈接

 

netstat -lpna

 

8.2. ifconfigip命令

 

ip是一個能夠替代ifconfigroute等的網絡管理工具,爲iproute2套件中的一員,而ifconfignet-tools中已被廢棄使用的一個命令,許多年前就已經沒有維護了。

 

 

 

1) 示例1:設置一個IP

 

ip addr add 192.168.31.13/24 dev eth1

 

 

 

2) 示例2:查看設置的IP是否生效

 

ip addr show eth1

 

 

 

3) 示例3:刪除IP

 

ip addr del 192.168.31.13/24 dev eth1

 

 

 

4) 示例4:查看路由表

 

ip route show

 

8.3. tcpdump網絡抓包工具

 

參數「-s」指定顯示多少字節的包內容。

 

 

 

1) 顯示包的內容:

 

tcpdump -i eth1 -n -vv -x -e -s 600 # 僅二進制

tcpdump -i eth1 -n -vv -X -e -s 600 # 二進制和文本

 

 

 

2) 抓包保存到文件供Wireshark分析:

 

tcpdump -i eth1 -n -vv -X -e -s 600 -w x.cap

 

 

 

3) 抓取192.168.31.180端口的包:

 

tcpdump -i eth1 host 192.168.31.1 and port 80

 

 

 

4) 抓取目標IP192.168.31.1和目標端口爲80端口的包:

 

tcpdump -i eth1 dst host 192.168.31.1 and dst port 80

 

 

 

5) 監聽指定網卡

 

tcpdump -i eth1

 

 

 

6) 監聽指定UDP端口

 

tcpdump udp port 10888

 

 

 

7) 監聽指定TCP端口

 

tcpdump tcp port 80

 

 

 

8) 監聽ABAC間的通信

 

tcpdump host A and \(B or C \)

# tcpdump host 127.0.0.1 and \(127.0.0.1 or 110.240.110.18 \)

 

 

 

9) 監聽A的全部通信,但不包括AB

 

tcpdump ip A and not B

 

 

 

10) 監聽A發出的全部包

 

tcpdump -i eth1 src host A

 

 

 

11) 監聽全部發送到B的包

 

tcpdump -i eth1 dst host B

 

 

 

12) 監聽A收到或發出的全部http

 

tcpdump tcp port 80 and host A

 

 

 

13) 列出tcpdump可以監聽的網卡

 

tcpdump -D

 

 

 

14) 監聽全部網卡,要求2.2或更高版本內核

 

tcpdump -i any

 

 

 

15) 詳細顯示捕獲的信息

 

tcpdump -v

 

 

 

更詳細可使用「tcpdump -vv」和「tcpdump -vvv」。

 

 

 

16) 以十六進制和ASCII方式打印包,除了鏈接層頭

 

tcpdump -v -X

 

 

 

17) 以十六進制和ASCII方式打印包,包括鏈接層頭

 

tcpdump -v -XX

 

 

 

18) 限制捕獲100個包

 

tcpdump -c 100

 

 

 

19) 將記錄寫入文件

 

tcpdump -w filename.log

 

 

 

20) 使用IP代替域名

 

tcpdump -n

 

 

 

21) 捕獲每一個包的100字節而不是默認的68字節

 

tcpdump -s 500

 

 

 

若是要捕獲全部字節則爲:tcpdump -s 0

 

 

 

22) 捕獲全部廣播或多播包

 

tcpdump -n "broadcast or multicast"

 

 

 

23) 捕獲全部icmparp

 

tcpdump -v "icmp or arp"

 

 

 

24) 捕獲arp

 

tcpdump -v arp

 

 

 

25) 捕獲目標地址是192.168.0.1,端口是80443的包

 

tcpdump -n "dst host 192.168.0.1 and (dst port 80 or dst port 443)"

 

 

 

26) 捕獲目標端口號在1-1023間的UDP

 

tcpdump -n udp dst portrange 1-1023

 

 

 

27) 捕獲目標端口號爲23的包

 

tcpdump dst port 23

 

 

 

28) 捕獲目標網絡爲192.168.1.0/24的包

 

tcpdump -n dst net 192.168.1.0/24

 

 

 

29) 捕獲源網絡爲192.168.1.0/24的包

 

tcpdump -n src net 192.168.1.0/24

 

8.4. ifstat網絡流量實時查看工具

 

$ ifstat

#kernel

Interface        RX Pkts/Rate    TX Pkts/Rate    RX Data/Rate    TX Data/Rate

                 RX Errs/Drop    TX Errs/Drop    RX Over/Rate    TX Coll/Rate

lo                  8546 0          8546 0        11845K 0        11845K 0

                       0 0             0 0             0 0             0 0

eth1               93020 0         41717 0         8867K 0         5969K 0

                       0 0             0 0             0 0             0 0

 

8.5. iptraf實時IP局域網監控

 

8.6. iftop網絡帶寬監控

 

按對端IP查看網絡流量。

 

8.7. nethogs網絡帶寬監控

 

按進程查看網絡流量:https://github.com/raboof/nethogs/releases

 

8.8. slurm查看網絡流量工具

 

8.9. Arpwatch以太網活動監控器

 

8.10. Suricata網絡安全監控

 

8.11. Nagios網絡/服務器監控

 

8.12. socat多功能的網絡工具

 

全稱「Socket CAT」,爲netcat的增強版。

 

8.13. mtr網絡連通性判斷工具

 

集成了tracerouteping

 

8.14. 查看網卡統計

 

ethtool -S eth1

 

8.15. 查看網卡RingBuffer大小

 

ethtool -g eth1

 

8.16. sar查看網絡流量

 

sar -n DEV 1 # 流量信息

sar -n EDEV 1 # 錯誤信息

sar -u 2 5 # 每2秒報告CPU使用率,共顯示5行(次)

sar -I 14 -o int14.file 2 10 每2秒報告14號中斷,共顯示10行(次),結果寫入文件int14.file

sar -f /var/log/sa/sa16 顯示內存和網絡統計,結果寫入文件/var/log/sa/sa16

sar -A 顯示全部統計

 

9. /proc文件系統

 

有關/proc的內容很龐大,系統監控須要從這裏讀取大量數據,這裏逐步記錄一些經常使用到的。

 

9.1. /proc/meminfo

 

內存大小和使用信息。

 

9.2. /proc/cpuinfo

 

CPU個數和頻率等CPU信息。

 

9.3. /proc/PID

 

進程的各類信息,其中PID爲進程ID,假設進程ID2019,則路徑爲「/proc/2019」。一個進程所建立和打開的文件描述符,全在/proc/PID/fd下,以Linuxinit進程爲例:

 

# ls /proc/1/fd

0  1  10  11  12  13  14  15  16  17  2  20  21  22  24  25  26  27  28  29  3  30  31  32  33  34  37  38  39  4  5  6  7  8  9

 

 

 

包括進程的命令行參數等都可以這個目錄下獲得。

 

9.4. /proc/irq/

 

1) /proc/irq/

 

該目錄下存放的是以IRQ號命名的目錄,如/proc/irq/40/表示中斷號爲40的相關信息。

 

2) /proc/irq/[irq_num]/smp_affinity

 

該文件存放的是CPU位掩碼(十六進制),修改該文件中的值能夠改變CPU和某中斷的親和性。

 

3) /proc/irq/[irq_num]/smp_affinity_list

 

該文件存放的是CPU列表(十進制),注意CPU核心個數用表示編號從0開始,如cpu0cpu1等。

 

9.5. /proc/net

 

網絡相關的:

 

1) /proc/net/dev

 

可用來統計網卡流量。

 

2) /proc/net/sockstat SOCKET的各種狀態

 

9.6. /proc/sys/fs

 

文件系統相關:

 

1) /proc/sys/fs/file-max

 

2) /proc/sys/fs/file-nr

 

3) /proc/sys/fs/inode-nr

 

9.7. /proc/sys/net

 

網絡相關:

 

1) /proc/sys/net/core/somaxconn 控制TCP監聽隊列大小

 

2) /proc/sys/net/ipv4/tcp_fin_timeout 控制FIN_WAIT_2狀態的超時時長

 

3) /proc/sys/net/ipv4/tcp_keepalive_intvl

 

9.8. /proc/sys/vm

 

內存相關:

 

1) /proc/sys/vm/drop_caches

 

2) /proc/sys/vm/overcommit_memory

 

10. 其它

 

10.1. shell中函數繼承問題

 

咱們知道變量是會被子進程繼承的,能夠直接使用。有些狀況下可能須要繼承函數,以方便透明使用,方法很是簡單,使用「export -f」,注意參數「-f」,它表示函數的意思,不帶參數的export只針對變量。

 

function ifprop()

{

    echo ":$1=$2"

}

export -f ifprop

 

 

 

也可使用「typeset -fx」替代「export -f」。

 

10.2. 查看Linux各發行版本方法

 

基本上各發行版本均在/etc目錄下有個後綴爲「-release」的文件,該文件即存儲了發行版本的版本號信息,如:

 

1) SuSE

 

cat /etc/SuSE-release

 

 

 

2) Slackware

 

cat /etc/slackware-version

 

 

 

3) Redhat

 

cat /etc/redhat-release

 

10.3. 取IP地址命令

 

netstat -ie|awk /broadcast/'{print $2}'

netstat -ie|awk -F '[ :]+' /cast/'{print $4}'

netstat -ie|awk -F '[ :]+' /cast/'{print $3}'

 

10.4. 清除系統緩存

 

echo 3 > /proc/sys/vm/drop_caches

 

 

 

測試請參見:http://blog.chinaunix.net/uid-20682147-id-4209165.html

 

10.5. 查看TCP數據

 

cat /proc/net/tcp

 

10.6. 查看UDP數據

 

cat /proc/net/udp

 

10.7. 查看socket緩衝區默認大小

 

cat /proc/sys/net/core/rmem_default

 

10.8. 查看socket緩衝區最大大小

 

cat /proc/sys/net/core/rmem_max

 

10.9. 找出CPU佔用最高的線程

 

ps -mp 20693 -o THREAD,tid,time | sort -rn

 

10.10. Linux上查找形成IO高負載的進程

 

1) 方法1:使用iotop工具

 

這是一個python腳本工具,使用方法如:iotop -o

 

 

 

2) 方法2:使用工具dmesg

 

使用dmesg以前,須要先開啓內核的IO監控:

 

echo 1 >/proc/sys/vm/block_dump或sysctl vm.block_dump=1

 

 

 

而後可使用以下命令查看IO最重的前10個進程:

 

dmesg |awk -F: '{print $1}'|sort|uniq -c|sort -rn|head -n 10

 

 

 

3) 方法3:使用命令「iostat -x 1「肯定哪一個設備IO負載高

 

# iostat -x 1 3

avg-cpu:  %user   %nice %system %iowait  %steal   %idle

           1.06    0.00    0.99    1.09    0.00   97.85

 

Device:    rrqm/s wrqm/s   r/s   w/s  rsec/s  wsec/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util

sda          0.49  17.29  1.74  6.75   23.47  200.18    11.73   100.09    26.33     0.10   12.25   5.73   4.87

 

 

 

找「await」值最大的設備(Device),如上的結果即爲sda。而後使用mount找到sda掛載點,再使用fuser命令查看哪些進程在訪問,如:

 

# fuser -vm /data

 

10.11. iptables簡單應用

 

iptables命令操做只對當前登陸有效,若是需重啓後也有效,可將操做放到/etc/rc.d/boot.local中,如:

 

/sbin/iptables -F

/sbin/iptables -A INPUT -i eth0 -p tcp --sport 80 -j ACCEPT

/sbin/iptables -A INPUT -i eth0 -p tcp -j DROP

/sbin/iptables -A INPUT -i eth0 -p udp -j DROP

 

 

 

iptables是一個鏈的方式從前日後判斷,若是前面的規則成立就不會日後繼續,因此要注意順序,每行對應一條規則。

 

參數「-A」是Append意思,也就是追加;參數「-I」是Insert意思,也就是插入;參數「-F」是Flush意思,表示清除(即刪除)掉已有規則,也就是清空。

 

 

 

查看已有的規則,執行命令:

 

iptables -L -n

 

 

 

帶行號顯示結果(DEL操做須要指定行號):

 

# iptables -L -n --line-number

Chain INPUT (policy ACCEPT)

num  target     prot opt source               destination

1    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp spt:443

2    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp spt:443

3    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp spt:443

4    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80

5    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp spt:443

6    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:8000

7    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp spt:443

8    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp spt:80

9    DROP       tcp  --  0.0.0.0/0            0.0.0.0/0

10   DROP       udp  --  0.0.0.0/0            0.0.0.0/0

 

Chain FORWARD (policy ACCEPT)

num  target     prot opt source               destination

 

Chain OUTPUT (policy ACCEPT)

num  target     prot opt source               destination

 

 

 

從上能夠看到,iptables有三種規則鏈(Chain

 

1) INPUT 用於指定輸入規則,好比外部是能夠訪問本機的80端口

 

2) OUTPUT 用於指定輸出規則,好比本機是否能夠訪問外部的80端口

 

3) FORWARD 用於指定端口轉發規則(至關於rinetd功能),好比將8080端口的數據轉到到80端口

 

 

 

參數「-I」和參數「-A」須要指定鏈(Chain)名,其中「-I」的鏈名後還須要指定第幾條(行)規則。

 

可經過「-D」參數刪除規則,有兩種刪除方式,一是匹配模式,二是指定第幾條(行)。也能夠經過「-R」參數修改已有規則,另外「-L」參數後也能夠跟鏈(Chain)名,表示只列出指定鏈的全部規則。「-j」參數後跟的是動做,即知足規則時執行的操做,能夠爲ACCEPTDROPREJECTREDIRECT等。

 

 

 

iptablesINPUT鏈的第一行插入一條規則(可訪問其它機器的80端口):

 

iptables -I INPUT 1 -p tcp --sport 80 -j ACCEPT

 

 

 

iptablesINPUT鏈尾追加一條規則(可訪問其它機器的80端口):

 

iptables -A INPUT -p tcp --sport 80 -j ACCEPT

 

 

 

若是要讓其它機器能夠訪問本機的80端口,則爲:

 

iptables -A INPUT -p tcp --dport 80 -j ACCEPT

 

 

 

插入前:

 

# iptables -L -n

Chain INPUT (policy ACCEPT)

target     prot opt source               destination         

DROP       tcp  --  0.0.0.0/0            0.0.0.0/0           

DROP       udp  --  0.0.0.0/0            0.0.0.0/0  

 

 

 

插入:

 

# iptables -I INPUT 1 -p tcp --sport 80 -j ACCEPT

 

 

 

插入後:

 

# iptables -L -n

Chain INPUT (policy ACCEPT)

target     prot opt source               destination         

ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp spt:80

DROP       tcp  --  0.0.0.0/0            0.0.0.0/0           

DROP       udp  --  0.0.0.0/0            0.0.0.0/0  

 

 

 

追加前:

 

# iptables -L -n

Chain INPUT (policy ACCEPT)

target     prot opt source               destination         

DROP       tcp  --  0.0.0.0/0            0.0.0.0/0           

DROP       udp  --  0.0.0.0/0            0.0.0.0/0 

 

 

 

追加:

 

# iptables -I INPUT 1 -p tcp --sport 80 -j ACCEPT

 

 

 

追加後(ACCEPT將不能生效):

 

# iptables -L -n

Chain INPUT (policy ACCEPT)

target     prot opt source               destination         

DROP       tcp  --  0.0.0.0/0            0.0.0.0/0           

DROP       udp  --  0.0.0.0/0            0.0.0.0/0 

ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp spt:80

 

 

 

刪除INPUT的第3條(即第3行,執行「iptables -L INPUT --line-numbers」顯示行號)規則:

 

iptables -D INPUT 3

 

10.12. 配置DNS客戶端方法

 

配置DNS客戶端的方法很是簡單,須要修改兩個文件:

 

1) 修改/etc/resolv.conf

 

在這個文件裏增長DNS服務器的IP地址,格式爲:nameserver  DNS服務器IP地址

 

如:

 

nameserver 192.168.1.46

 

 

 

能夠有多行nameserver,如:

 

nameserver 192.168.1.46

nameserver 219.133.38.2

nameserver 219.133.38.3

 

 

 

2) 修改/etc/nsswitch.conf

 

在這個文件中增長以下內容便可:

 

hosts:          files  dns

networks:       files  dns

 

 

 

如今便可ping域名了,如:ping www.hadoopor.com。固然在ping以前要保證該機器是能夠正常鏈接到DNS服務器的,DNS服務器的默認端口號爲53,能夠經過telnet命令來測試是否可以鏈接到DNS服務器,如:telnet 192.168.1.46 53

 

10.13. crontab使用環境變量

 

有兩種方式在crontab中定義變量:

 

1) 直接在crontab中定義變量

 

A=123

* * * * * echo $A > /tmp/a.txt

 

 

 

注意在定義變量時不能使用$引用其它變量,以下面的作法錯誤:

 

A=123

B=$A

 

 

 

2) 在/etc/environment中定義變量

 

此文件定義變量的格式爲:

 

NAME=VALUE

 

 

 

crontab,也不能使用$引用其它變量。操做系統在登陸時使用的第一個文件是/etc/environment文件,/etc/environment文件包含指定全部進程的基本環境的變量。

 

千萬注意,不要有「PATH=$PATH:/usr/local/jdk/bin」這樣的用法,這將致使系統沒法啓動。

 

小技巧:想保持多臺機器的crontab一致,但變量值不徹底相同,這個時候能夠考慮將變量配置在/etc/environment中,這樣crontab就能夠相同了。

 

如機器1

 

A=123

 

 

 

機器2

 

A=456

 

 

 

二者的crontab配置:

 

* * * * * echo "$A" > /x.txt

 

 

 

通常不建議直接修改/etc/environment,而可採起在目錄/etc/profile.d下新增一個.sh文件方式替代。但若是想crontab中生效,則只能修改/etc/environment,經測試/etc/profile.d方式不起做用。

 

另外注意在/etc/environment設置的變量,在shell中並不生效,但對crontab有效。

 

11. 幾種修改Linux主機名的方法

 

在安裝一些系統時,須要修改hostname,好比安裝Hadoop時須要修改主機名,並且主機名不能包含下劃線。

 

實際上,主機名分三種(命令hostnamectl或hostnamectl status可查看三種主機名):

 

1) 「pretty」主機名,UTF8格式的主機名,這個僅供閱讀,長度無限制;

 

2) 「static」主機名,平常所稱的主機名(traditional hostname)。最多爲64個字符,僅可包含「.」、「_」、「-」、「a-z」、「A-Z」和「0-9」這些字符,而且不能以「.」打頭和結尾,也不能兩個「.」連續;

 

3) 「transient」主機名,內核維護的動態主機名,初始化爲「static」主機名,默認爲localhost。也爲hadoop要求的主機名,它的約束規則同「static」主機名。若是存在「static」主機名,且不是「localhost」,那麼將忽略「transient」主機名。「transient」主機名可被DHCPmDNS修改。

 

 

 

當三種主機名相同時,「hostnamectl status」只會顯示「static」主機名,三種主機名的設置方法:

 

hostnamectl --pretty set-hostname NAME

hostnamectl --static set-hostname NAME

hostnamectl --transient set-hostname NAME

 

 

 

 

hostnamectl修改的主機名,在系統重啓以前會一直有效,而hostname只對當次有效。若是不指定參數,則一次設置三種主機名:

 

hostnamectl set-hostname NAME

 

11.1. 臨時修改主機名

 

命令hostname不但能夠查看主機名,還能夠用它來修改主機名,格式爲:hostname 新主機名。

 

在修改以前9.4.149.11對應的主機名爲hadoop_10202,而9.4.149.6對應的主機名爲hadoop_10203。二者的主機名均帶有下劃線,所以須要修改。爲求簡單,僅將原下劃線去掉:

 

hostname hadoop10202

 

hostname hadoop10203

 

 

 

通過上述修改後,相似於修改環境變量,只臨時有效,還須要修改相應的系統配置文件,以永久有效。

 

11.2. 永久修改主機名

 

不一樣的Linux發行版本,對應的系統配置文件可能不一樣,SuSE 10.1/etc/HOSTNAME:

 

# cat /etc/HOSTNAME

hadoop_10202

 

 

 

將文件中的「hadoop_10202」,改爲「hadoop10202」。有些Linux發行版本對應的多是/etc/hostname文件,有些如CentOSRedHat同時有/etc/hostname/etc/sysconfig/network兩個文件,修改/etc/hostname便可。

 

需注意:/etc/sysconfig/network的格式和/etc/hostname/etc/HOSTNAME不一樣,爲:

 

HOSTNAME=主機名

 

 

 

修改以後,須要重啓網卡,以使修改生效,執行命令:/etc/rc.d/boot.localnet start(不一樣系統命令會有差別,這是SuSE上的方法,其它一些可能爲:/etc/init.d/network restart或service network restart等),再次使用hostname查看,會發現主機名變了。

 

上述方法若是不能永久有效,則可以使用hostnamectl修改來修改永久有效。若是仍是不行,則可重啓系統以使永久有效。

 

 

 

能夠經過如下多種方法查看主機名:

 

1) hostname命令(也能夠用來修改主機名,但當次僅當次會話有效)

 

2) hostnamectl命令(也能夠用來修改主機名,系統重啓前一直有效)

 

3) cat /proc/sys/kernel/hostname

 

4) cat /etc/hostnamecat /etc/sysconfig/network(永久性的修改,須要重啓)

 

5) sysctl kernel.hostname(也能夠用來修改主機名,但僅重啓以前有效)

 

 

 

批量修改/etc/hostname工具(其它可參照):

 

https://github.com/eyjian/libmooon/blob/master/shell/set_hostname.sh

 

11.3. 區別

 

方法

效果

hostname

當次登陸臨時有效,新登陸或從新登陸後無效

hostnamectl

系統重啓以前一直有效,重啓後無效

/etc/hostname

只有在系統重啓後纔有效

 

12. process_monitor.sh進程監控重啓工具

 

使用process_monitor.sh監控進程,當進程掛掉後,可以在兩三秒內將進程重拉起,而且支持同一程序以不一樣參數啓動多個實例,和不一樣用戶以相同參數啓動多個實例。

 

下載:https://github.com/eyjian/libmooon/blob/master/shell/process_monitor.sh

 

通常建議將process_monitor.sh放在/usr/local/bin目錄下,並設置好可執行權限,放在crontab中運行。

 

 

 

1) 示例1:監控redis進程

 

* * * * * /usr/local/bin/process_monitor.sh "/data/redis/bin/redis-server 6379" "/data/redis/bin/redis-server /data/redis/conf/redis-6379.conf"

* * * * * /usr/local/bin/process_monitor.sh "/data/redis/bin/redis-server 6380" "/data/redis/bin/redis-server /data/redis/conf/redis-6380.conf"

 

 

 

2) 示例2:監控zookeeper進程

 

* * * * * /usr/local/bin/process_monitor.sh "/usr/local/jdk/bin/java -Dzookeeper" "/data/zookeeper/bin/zkServer.sh start"

 

 

 

process_monitor.sh啓動後,會在/tmp目錄下建立以「/process_monitor-」打頭的日誌文件,假設root用戶運行process_monitor.sh,則日誌全路徑爲:/tmp/process_monitor-root.log

 

13. 遠程批量操做工具

 

遠程批量工具包含:

 

1) 批量命令工具mooon_ssh

 

2) 批量上傳文件工具mooon_upload

 

3) 批量下載文件工具mooon_download

 

 

 

可執行二進制包下載地址:

 

https://github.com/eyjian/libmooon/releases

 

 

 

源代碼包下載地址:

 

https://github.com/eyjian/libmooon/archive/master.zip

 

 

 

批量工具除由三個工具組成外,還分兩個版本:

 

1) C++版本

 

2) GO版本

 

 

 

當前C++版本比較成熟,GO版本至關簡略,但C++版本依賴C++運行時庫,不一樣環境須要特定編譯,而GO版本可不依賴CC++運行時庫,因此不需編譯便可應用到普遍的Linux環境。

 

 

 

使用簡單,直接執行命令,即會提示用法,如C++版本:

 

$ mooon_ssh

parameter[-c]'s value not set

 

usage:

-h[]: Connect to the remote machines on the given hosts separated by comma, can be replaced by environment variable 'H', example: -h='192.168.1.10,192.168.1.11'

-P[36000/10,65535]: Specifies the port to connect to on the remote machines, can be replaced by environment variable 'PORT'

-u[]: Specifies the user to log in as on the remote machines, can be replaced by environment variable 'U'

-p[]: The password to use when connecting to the remote machines, can be replaced by environment variable 'P'

-t[60/1,65535]: The number of seconds before connection timeout

-c[]: The command is executed on the remote machines, example: -c='grep ERROR /tmp/*.log'

-v[1/0,2]: Verbosity, how much troubleshooting info to print

 

13.1. 批量執行命令工具:mooon_ssh

 

參數名

默認值

說明

-u

用戶名參數,可用環境變量U替代

-p

密碼參數,可用環境變量P替代

-h

IP列表參數,可用環境變量H替代

-P

22,可修改源碼,編譯爲經常使用端口號

SSH端口參數,可用環境變量PORT替代

-c

在遠程機器上執行的命令,建議單引號方式指定值,除非要執行的命令自己已經包含了單引號有衝突。使用雙引號時,要注意轉義,不然會被本地shell解釋

-v

1

工具輸出的詳細度

-thr

1

線程數,當線程數大於2時,併發執行;若是值爲0,表示線程數和IP數相同

 

13.2. 批量上傳文件工具:mooon_upload

 

參數名

默認值

說明

-u

用戶名參數,可用環境變量U替代

-p

密碼參數,可用環境變量P替代

-h

IP列表參數,可用環境變量H替代

-P

22,可修改源碼,編譯爲經常使用端口號

SSH端口參數,可用環境變量PORT替代

-s

以逗號分隔的,須要上傳的本地文件列表,能夠帶相對或絕對目錄

-d

文件上傳到遠程機器的目錄,只能爲單個目錄

-thr

1

線程數,當線程數大於2時,併發執行;若是值爲0,表示線程數和IP數相同

 

13.3. 使用示例

 

1) 使用示例1:上傳/etc/hosts

 

mooon_upload -s=/etc/hosts -d=/etc

 

 

 

2) 使用示例2:檢查/etc/profile文件是否一致

 

mooon_ssh -c='md5sum /etc/hosts'

 

 

 

3) 使用示例3:批量查看crontab

 

mooon_ssh -c='crontab -l'

 

 

 

4) 使用示例4:批量清空crontab

 

mooon_ssh -c='rm -f /tmp/crontab.empty;touch /tmp/crontab.empty'

mooon_ssh -c='crontab /tmp/crontab.emtpy'

 

 

 

5) 使用示例5:批量更新crontab

 

mooon_ssh -c='crontab /tmp/crontab.online'

 

 

 

6) 使用示例6:取遠端機器IP

 

由於awk用單引號,因此參數「-c」的值不能使用單引號,因此內容須要轉義,相對其它來講要複雜點:

 

mooon_ssh -c="netstat -ie | awk -F[\\ :]+ 'BEGIN{ok=0;}{if (match(\$0, \"eth1\")) ok=1; if ((1==ok) && match(\$0,\"inet\")) { ok=0; if (7==NF) printf(\"%s\\n\",\$3); else printf(\"%s\\n\",\$4);} }'"

 

 

 

不一樣的環境,IP在「netstat -ie」輸出中的位置稍有不一樣,因此awk中加了「7==NF」判斷,但仍不必定適用於全部的環境。須要轉義的字符包含:雙引號、美圓符和斜槓。

 

 

 

7) 使用示例7:批量查看kafka進程(環境變量方式)

 

$ export H=192.168.31.9,192.168.31.10,192.168.31.11,192.168.31.12,192.168.31.13

$ export U=kafka

$ export P='123456'

 

$ mooon_ssh -c='/usr/local/jdk/bin/jps -m'

[192.168.31.15]

50928 Kafka /data/kafka/config/server.properties

125735 Jps -m

[192.168.31.15] SUCCESS

 

[192.168.31.16]

147842 Jps -m

174902 Kafka /data/kafka/config/server.properties

[192.168.31.16] SUCCESS

 

[192.168.31.17]

51409 Kafka /data/kafka/config/server.properties

178771 Jps -m

[192.168.31.17] SUCCESS

 

[192.168.31.18]

73568 Jps -m

62314 Kafka /data/kafka/config/server.properties

[192.168.31.18] SUCCESS

 

[192.168.31.19]

123908 Jps -m

182845 Kafka /data/kafka/config/server.properties

[192.168.31.19] SUCCESS

 

 

================================

[192.168.31.15 SUCCESS] 0 seconds

[192.168.31.16 SUCCESS] 0 seconds

[192.168.31.17 SUCCESS] 0 seconds

[192.168.31.18 SUCCESS] 0 seconds

[192.168.31.19 SUCCESS] 0 seconds

SUCCESS: 5, FAILURE: 0

 

 

 

8) 使用示例8:批量中止kafka進程(參數方式)

 

$ mooon_ssh -c='/data/kafka/bin/kafka-server-stop.sh' -u=kafka -p='123456' -h=192.168.31.15,192.168.31.16,192.168.31.17,192.168.31.18,192.168.31.19

[192.168.31.15]

No kafka server to stop

command return 1

 

[192.168.31.16]

No kafka server to stop

command return 1

 

[192.168.31.17]

No kafka server to stop

command return 1

 

[192.168.31.18]

No kafka server to stop

command return 1

 

[192.168.31.19]

No kafka server to stop

command return 1

 

================================

[192.168.31.15 FAILURE] 0 seconds

[192.168.31.16 FAILURE] 0 seconds

[192.168.31.17 FAILURE] 0 seconds

[192.168.31.18 FAILURE] 0 seconds

[192.168.31.19 FAILURE] 0 seconds

SUCCESS: 0, FAILURE: 5

相關文章
相關標籤/搜索