那些年珍藏的linux监控命令

如果只会用个top和ps,岂不是太大材小用了,而且很多参数都没用上。

下面是一些实际的解决方案,本文非讲解参数或原理,具体参数含义有兴趣自行查询。

查看内存占用最多的进程

实际一般只需要知道内存占用,及其进程启动命令,知道是哪个程序就好。

ps大法

# ps -eo pmem,pcpu,vsize,pid,cmd | sort -k 1 -nr | head -5
 9.3  0.1 9031172 16090 java -jar start.jar
 8.3  0.0 8487956 26303 java -jar web.jar

如果更详细内容:

# ps aux --sort -rss | head
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root     16090  0.1  9.3 9031172 1534136 ?     Sl   Mar26  10:48 java -jar start.jar
root     26303  0.0  8.3 8487956 1376960 ?     Sl   Mar23   7:38 java -jar web.jar

下面更容易理解,但是命令显示不全

# ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head -10
  PID  PPID CMD                         %MEM %CPU
16090     1 java -jar start.jar          9.3  0.1
26303     1 java -jar web.jar  8.3  0.0

top大法好

# top -b -o +%MEM | head -n 14
top - 19:40:37 up 16 days,  7:21,  3 users,  load average: 0.50, 0.51, 0.42
Tasks: 156 total,   1 running, 155 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  1.0 sy,  0.0 ni, 99.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem : 16432412 total,  3776164 free, 11291864 used,  1364384 buff/cache
KiB Swap:  8388604 total,  4448996 free,  3939608 used.  4711392 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
16090 root      20   0 9031172 1.463g   8308 S   0.0  9.3  10:49.47 java
26303 root      20   0 8487956 1.313g   5928 S   0.0  8.4   7:39.10 java
 1967 root      20   0 5810680 1.166g   5600 S   0.0  7.4 390:36.74 java
24983 root      20   0 9010736 988.6m  15032 S   0.0  6.2   2:03.30 java
30677 root      20   0 20.868g 796216  32420 S   0.0  4.8   4:48.23 java
21704 root      20   0 8949684 710076  13308 S   0.0  4.3   1:27.42 java
 9851 just      20   0 6189964 484484   4944 S   0.0  2.9 183:57.37 java

htop

top的升级版,界面非常好看,谁用谁知道。

查看占用空间最多的文件(夹)

当前目录占用最多的文件夹或文件(不包括子文件夹):

# du -hs * | sort -rh | head -n 5
452M	lib
127M	cache
125M	ftp
93M	log
260K	spool

如果要包括子文件夹:

# du -Sh | sort -rh | head -n 5
173M	./lib/mysql
125M	./ftp
101M	./lib/rpm
89M	./log
53M	./lib/mysql/jobserver

只查看占用空间最多的文件:

# find -type f -exec du -Sh {} + | sort -rh | head -n 5
125M	./ftp/dependencies.jar
92M	./lib/rpm/Packages
76M	./lib/mysql/ibdata1
48M	./lib/mysql/ib_logfile1
48M	./lib/mysql/ib_logfile0

如果要指定路径,只需修改find参数:

# find /var/ftp -type f -exec du -Sh {} + | sort -rh | head -n 5
125M	/var/ftp/dependencies.jar
4.0K	/var/ftp/tmp.txt
4.0K	/var/ftp/pub/tmp.txt

网络

查看某端口对应的进程

# lsof -i TCP:8080
COMMAND   PID USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
java    31876 root  269u  IPv6 1897559      0t0  TCP *:webcache (LISTEN)

IO

iotop

查看实时磁盘读写

iostat

查看硬盘读写速率,一般用于排查磁盘性能问题

# iostat
Linux 3.10.0-693.el7.x86_64 (host) 	03/30/2020 	_x86_64_	(6 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           5.48    0.00    0.32    0.35    0.01   93.84

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
vda               7.57       120.45      1012.41  170193222 1430505193

未完待续~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章