linux实战:ps和top命令系统调优 女爷i 2021-06-24 15:56 404阅读 0赞 1、linux下查看sleep状态的进程:(ps -l) [root@ttAlgorithm-tomcat-online101-jylt ~]# ps -efl | head F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD 4 S root 1 0 0 80 0 - 4839 poll_s Jan05 ? 00:00:06 /sbin/init 1 S root 2 0 0 80 0 - 0 kthrea Jan05 ? 00:00:00 [kthreadd] 1 S root 3 2 0 -40 - - 0 migrat Jan05 ? 00:00:43 [migration/0] 1 S root 4 2 0 80 0 - 0 ksofti Jan05 ? 00:02:24 [ksoftirqd/0] 1 S root 5 2 0 -40 - - 0 cpu_st Jan05 ? 00:00:00 [stopper/0] 5 S root 6 2 0 -40 - - 0 watchd Jan05 ? 00:00:13 [watchdog/0] 1 S root 7 2 0 -40 - - 0 migrat Jan05 ? 00:00:34 [migration/1] 1 S root 8 2 0 -40 - - 0 cpu_st Jan05 ? 00:00:00 [stopper/1] 1 S root 9 2 0 80 0 - 0 ksofti Jan05 ? 00:01:09 [ksoftirqd/1] 各个列含义: F:代表这个进程旗标 (process flags),说明这个进程的权限,常见有: 若4 表示此进程的权限 root ; 若1 則表示此子进程仅能fork。 S:代表这个进程的状态 (STAT),主要的状态有: R (Running):该进程正在运行; S (Sleep):该进程正在睡眠,可被唤醒。 D :不可被唤醒 T :停止状态(stop); Z (Zombie):僵尸进程。 UID/PID/PPID:代表『此进程被该 UID 所拥有/进程的 PID 号/此进程的父进程 PID 』 C:代表 CPU 使用率,单位为百分比; PRI/NI:Priority/Nice 的缩写,代表此进程被 CPU 所执行的优先顺序,数值越小代表该进程越快被 CPU 执行。 ADDR/SZ/WCHAN:都与内存,ADDR 是 kernel function,指出该进程在内存的哪個部分,如果是个 running 进程,一般就会显示『 - 』 / SZ 代表此进程用掉多少内存 / WCHAN 表示目前进程是否工作,同样的, 若为 - 表示正在工作中。 TTY:登入者的终端机位置,若为远程登入则使用动态終端介面 (pts/n); TIME:使用掉的 CPU 时间,注意,是实际花费掉的 CPU 运作的时间,而不是系統时间; CMD:就是 command 的缩写,造成此进程的指令。 2、查看进程状态信息: # cat /proc/30276/status Name: java State: S (sleeping) Tgid: 30276 Pid: 30276 PPid: 1 TracerPid: 0 Uid: 0 0 0 0 Gid: 0 0 0 0 Utrace: 0 FDSize: 512 Groups: 0 VmPeak: 26622128 kB VmSize: 26614976 kB VmLck: 0 kB VmHWM: 944056 kB VmRSS: 937028 kB VmData: 26457872 kB VmStk: 88 kB VmExe: 4 kB VmLib: 15796 kB VmPTE: 2748 kB VmSwap: 0 kB Threads: 155 SigQ: 2/256717 SigPnd: 0000000000000000 ShdPnd: 0000000000000000 SigBlk: 0000000000000000 SigIgn: 0000000000000002 SigCgt: 2000000181005ccd CapInh: 0000000000000000 CapPrm: ffffffffffffffff CapEff: ffffffffffffffff CapBnd: ffffffffffffffff Cpus_allowed: ff Cpus_allowed_list: 0-7 Mems_allowed: 00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000001 Mems_allowed_list: 0 voluntary_ctxt_switches: 1 nonvoluntary_ctxt_switches: 3 3、linux下统计线程数: 1)统计当前系统线程页:(ps -efL) # ps -efL | grep -v $$ | wc -l 650 注:其中$$ 表示脚本运行的当前进程ID号 2)Linux下查看某个进程的线程数量: 方法一:pstree -p 进程id | wc -l # pstree -p 30276 java(30276)─┬─{java}(30277) ├─{java}(30278) ├─{java}(30279) ├─{java}(30280) ├─{java}(30281) ├─{java}(30282) ├─{java}(30283) ├─{java}(30284) ├─{java}(30285) ├─{java}(30286) ├─{java}(30287) ├─{java}(30288) ├─{java}(30289) ├─{java}(30290) ├─{java}(30291) 方法二:top -Hp 进程号 Tasks: 155 total, 0 running, 155 sleeping, 0 stopped, 0 zombie Cpu(s): 0.1%us, 0.1%sy, 0.0%ni, 99.8%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 32880500k total, 17735632k used, 15144868k free, 308996k buffers Swap: 4194300k total, 0k used, 4194300k free, 14014444k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 30364 root 20 0 25.4g 915m 11m S 0.3 2.8 1:54.37 java 30398 root 20 0 25.4g 915m 11m S 0.3 2.8 1:57.57 java 30399 root 20 0 25.4g 915m 11m S 0.3 2.8 0:06.34 java 30440 root 20 0 25.4g 915m 11m S 0.3 2.8 1:54.48 java 30455 root 20 0 25.4g 915m 11m S 0.3 2.8 0:07.52 java 30515 root 20 0 25.4g 915m 11m S 0.3 2.8 0:29.62 java 30723 root 20 0 25.4g 915m 11m S 0.3 2.8 0:29.63 java 32392 root 20 0 25.4g 915m 11m S 0.3 2.8 0:03.12 java 30276 root 20 0 25.4g 915m 11m S 0.0 2.8 0:00.00 java 30277 root 20 0 25.4g 915m 11m S 0.0 2.8 0:00.88 java 30278 root 20 0 25.4g 915m 11m S 0.0 2.8 0:03.30 java 30279 root 20 0 25.4g 915m 11m S 0.0 2.8 0:03.25 java 30280 root 20 0 25.4g 915m 11m S 0.0 2.8 0:03.23 java 30281 root 20 0 25.4g 915m 11m S 0.0 2.8 0:03.28 java 30282 root 20 0 25.4g 915m 11m S 0.0 2.8 0:03.25 java 30283 root 20 0 25.4g 915m 11m S 0.0 2.8 0:03.21 java 30284 root 20 0 25.4g 915m 11m S 0.0 2.8 0:03.27 java 30285 root 20 0 25.4g 915m 11m S 0.0 2.8 0:03.31 java 30286 root 20 0 25.4g 915m 11m S 0.0 2.8 0:00.00 java 30287 root 20 0 25.4g 915m 11m S 0.0 2.8 0:00.00 java 30288 root 20 0 25.4g 915m 11m S 0.0 2.8 0:01.33 java 30289 root 20 0 25.4g 915m 11m S 0.0 2.8 0:03.95 java 30290 root 20 0 25.4g 915m 11m S 0.0 2.8 0:00.07 java 30291 root 20 0 25.4g 915m 11m S 0.0 2.8 0:00.08 java 30292 root 20 0 25.4g 915m 11m S 0.0 2.8 0:00.00 java 参考:http://www.bubuko.com/infodetail-976020.html 4、top和ps命令各个列含义: 1)ps aux: # ps aux | head USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.0 19356 1260 ? Ss Jan05 0:06 /sbin/init root 2 0.0 0.0 0 0 ? S Jan05 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? S Jan05 0:44 [migration/0] root 4 0.0 0.0 0 0 ? S Jan05 2:24 [ksoftirqd/0] root 5 0.0 0.0 0 0 ? S Jan05 0:00 [stopper/0] root 6 0.0 0.0 0 0 ? S Jan05 0:13 [watchdog/0] root 7 0.0 0.0 0 0 ? S Jan05 0:34 [migration/1] root 8 0.0 0.0 0 0 ? S Jan05 0:00 [stopper/1] root 9 0.0 0.0 0 0 ? S Jan05 1:09 [ksoftirqd/1] 解释如下: VSZ–进程的虚拟大小 RSS–驻留集的大小,可以理解为内存中页的数量 TTY–控制终端的ID STAT–也就是当前进程的状态,其中S-睡眠,s-表示该进程是会话的先导进程,N-表示进程拥有比普通优先级更低的优先级,R-正在运行,D-短期等待,Z-僵死进程,T-被跟踪或者被停止等等 STRAT–这个很简单,就是该进程启动的时间 TIME–进程已经消耗的CPU时间,注意是消耗CPU的时间 COMMOND–命令的名称和参数 应用:用ps大概统计下所有程序占用的总内存 ps aux | awk '{mem += $6} END {print mem/1024/1024}' 2)top top - 12:35:14 up 136 days, 20:38, 1 user, load average: 0.00, 0.00, 0.00 Tasks: 391 total, 1 running, 390 sleeping, 0 stopped, 0 zombie Cpu(s): 0.2%us, 0.1%sy, 0.0%ni, 99.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 32880500k total, 17735940k used, 15144560k free, 308996k buffers Swap: 4194300k total, 0k used, 4194300k free, 14022888k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 30276 root 20 0 25.4g 913m 11m S 1.0 2.8 19:50.88 java 9419 root 20 0 15296 1500 952 R 0.3 0.0 0:00.05 top 15257 root 20 0 8419m 1.6g 27m S 0.3 5.1 352:21.36 java 1 root 20 0 19356 1260 940 S 0.0 0.0 0:06.37 init 2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd 3 root RT 0 0 0 0 S 0.0 0.0 0:44.00 migration/0 4 root 20 0 0 0 0 S 0.0 0.0 2:24.97 ksoftirqd/0 解释: VIRT:virtual memory usage 虚拟内存,进程“需要的”虚拟内存大小,包括进程使用的库、代码、数据等.假如进程申请100m的内存,但实际只使用了10m,那么它会增长100m,而不是实际的使用量。 RES:resident memory usage 常驻内存,进程当前使用的内存大小,包含其他进程的共享,但不包括swap out.如果申请100m的内存,实际使用10m,它只增长10m,与VIRT相反。 SHR:shared memory 共享内存 PR:优先级;
还没有评论,来说两句吧...