1. 程式人生 > >Linux後臺開發常用工具

Linux後臺開發常用工具

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

目錄

目錄 1

1. 前言 3

2. 指令碼類工具 3

2.1. sed命令-字串文字操作 3

2.2. sedawk使用外部變數 4

2.3. awk給外部變數賦值 4

3. 裝置類工具 5

3.1. 檢視網絡卡型號 5

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 7

4.11. fuser 7

4.12. free檢視記憶體工具 8

4.13. screenbyobutmux分屏工具 8

4.14. dtach 8

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

5. 磁碟工具 10

5.1. sfdisk分割槽工具 10

5.2. fdisk分割槽工具 10

5.3. cfdisk分割槽工具 10

5.4. parted分割槽工具 10

5.5. gparted分割槽工具 10

5.6. SCSI工具 10

5.7. RAID工具 11

5.8. hdparm磁碟效能測試工具 11

5.9. mount掛載磁碟工具 11

5.10. mkfs建立檔案系統工具 11

5.11. df檢視磁碟容量工具 11

5.12. du統計目錄和檔案大小工具 11

6. 程序類工具 11

6.1. pwdx命令-檢視工作目錄 11

6.2. pidof命令-檢視程序ID 11

6.3. niceionice優先順序調整工具 11

6.4. pstack檢視呼叫棧工具 12

6.5. 檢視可執行程式和共享庫工具 12

6.6. process_monitor.sh程序監控重啟工具 12

7. 效能類工具 12

7.1. valgrindqcachegrind記憶體分析工具 12

7.2. perf效能分析工具 13

7.3. 壓力測試工具:abtsungsiege 13

8. 網路類工具 13

8.1. netstatss命令 13

8.2. ifconfigip命令 13

8.3. tcpdump網路抓包工具 13

8.4. ifstat網路流量實時檢視工具 16

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

8.6. iftop網路頻寬監控 16

8.7. nethogs網路頻寬監控 16

8.8. slurm檢視網路流量工具 16

8.9. Arpwatch乙太網活動監控器 16

8.10. Suricata網路安全監控 16

8.11. Nagios網路/伺服器監控 16

8.12. socat多功能的網路工具 16

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

8.14. 檢視網絡卡統計 17

8.15. 檢視網絡卡RingBuffer大小 17

8.16. sar檢視網路流量 17

9. 跟蹤分析類工具 17

9.1. orzdba監控指令碼 17

9.2. percona工具包 17

10. /proc檔案系統 18

10.1. /proc/meminfo 18

10.2. /proc/cpuinfo 18

10.3. /proc/PID 18

10.4. /proc/irq/ 18

10.5. /proc/net 18

10.6. /proc/sys/fs 19

10.7. /proc/sys/net 19

10.8. /proc/sys/vm 19

11. 其它 19

11.1. shell中函式繼承問題 19

11.2. 檢視Linux各發行版本方法 19

11.3. 取IP地址命令 20

11.4. 清除系統快取 20

11.5. 檢視TCP資料 20

11.6. 檢視UDP資料 20

11.7. 檢視socket緩衝區預設大小 20

11.8. 檢視socket緩衝區最大大小 20

11.9. 找出CPU佔用最高的執行緒 20

11.10. Linux上查詢造成IO高負載的程序 21

11.11. iptables簡單應用 21

11.12. 配置DNS客戶端方法 23

11.13. crontab使用環境變數 24

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

12.1. 臨時修改主機名 25

12.2. 永久修改主機名 26

12.3. 區別 26

13. 遠端批量操作工具 27

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

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

5. 磁碟工具

5.1. sfdisk分割槽工具

示例:列出所有分割槽

# sfdisk -l

5.2. fdisk分割槽工具

示例:列出所有分割槽

# fdisk -l

5.3. cfdisk分割槽工具

具有互動式操作介面的磁碟分割槽工具,引數-P表示顯示分割槽表的內容,附加引數“s”會依照磁區的順序顯示相關資訊。

5.4. parted分割槽工具

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

5.5. gparted分割槽工具

parted的圖形化版本。

5.6. SCSI工具

1) dmesg |grep SCSI

2) lsscsi

5.7. RAID工具

1) dmesg |grep -i raid

2) 檢視軟RAIDcat /proc/mdstat

5.8. hdparm磁碟效能測試工具

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

5.9. mount掛載磁碟工具

檔案/etc/fstab的內容和mount輸出是一致的。

5.10. mkfs建立檔案系統工具

掛載一塊磁碟之前,需要先建立好檔案系統。

5.11. df檢視磁碟容量工具

5.12. 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

6.6. 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

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. 跟蹤分析類工具

9.1. orzdba監控指令碼

淘寶DBA團隊釋出的監控指令碼,使用perl開發,可以完成對linux系統和MySql相關指標的實時監控。

9.2. percona工具包

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

1) 查詢程式執行聚合的GDB堆疊跟蹤,先進性堆疊跟蹤,然後將跟蹤資訊彙總:

pt-pmp -p pid

 

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

pt-visual-explain

 

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

pt-index-usage

10. /proc檔案系統

有關/proc的內容很龐大,系統監控需要從這裡讀取大量資料,這裡逐步記錄一些常用到的。

10.1. /proc/meminfo

記憶體大小和使用資訊。

10.2. /proc/cpuinfo

CPU個數和頻率等CPU資訊。

10.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

 

包括程序的命令列引數等均可以這個目錄下得到。

10.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等。

10.5. /proc/net

網路相關的:

1) /proc/net/dev

可用來統計網絡卡流量。

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

10.6. /proc/sys/fs

檔案系統相關:

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

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

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

10.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

10.8. /proc/sys/vm

記憶體相關:

1) /proc/sys/vm/drop_caches

2) /proc/sys/vm/overcommit_memory

11. 其它

11.1. shell中函式繼承問題

我們知道變數是會被子程序繼承的,可以直接使用。有些情況下可能需要繼承函式,以方便透明使用,方法非常簡單,使用“export -f”,注意引數“-f”,它表示函式的意思,不帶引數的export只針對變數。

function ifprop()

{

    echo ":$1=$2"

}

export -f ifprop

 

也可以使用“typeset -fx”替代“export -f”。

11.2. 檢視Linux各發行版本方法

基本上各發行版本均在/etc目錄下有個字尾為“-release”的檔案,該檔案即儲存了發行版本的版本號資訊,如:

1) SuSE

cat /etc/SuSE-release

 

2) Slackware

cat /etc/slackware-version

 

3) Redhat

cat /etc/redhat-release

11.3. 取IP地址命令

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

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

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

11.4. 清除系統快取

echo 3 > /proc/sys/vm/drop_caches

 

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

11.5. 檢視TCP資料

cat /proc/net/tcp

11.6. 檢視UDP資料

cat /proc/net/udp

11.7. 檢視socket緩衝區預設大小

cat /proc/sys/net/core/rmem_default

11.8. 檢視socket緩衝區最大大小

cat /proc/sys/net/core/rmem_max