感谢有奉献精神的人
转自:https://www.cnblogs.com/Jessy/p/3535612.html
1、linux进程查看:ps -aux 、top
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 10368 116 ? Ss Jan16 4:57 init [3]
root 2 0.0 0.0 0 0 ? S< Jan16 0:05 [migration/0]
root 3 0.0 0.0 0 0 ? SN Jan16 0:02 [ksoftirqd/0]
root 4 0.0 0.0 0 0 ? S< Jan16 0:00 [watchdog/0]
root 5 0.0 0.0 0 0 ? S< Jan16 4:43 [migration/1]
root 6 0.0 0.0 0 0 ? SN Jan16 0:04 [ksoftirqd/1]
root 7 0.0 0.0 0 0 ? S< Jan16 0:00 [watchdog/1]
root 8 0.0 0.0 0 0 ? S< Jan16 3:48 [migration/2]
root 9 0.0 0.0 0 0 ? SN Jan16 0:15 [ksoftirqd/2]
root 10 0.0 0.0 0 0 ? S< Jan16 0:00 [watchdog/2]
root 11 0.0 0.0 0 0 ? S< Jan16 4:16 [migration/3]
root 12 0.0 0.0 0 0 ? SN Jan16 0:22 [ksoftirqd/3]
root 13 0.0 0.0 0 0 ? S< Jan16 0:00 [watchdog/3]
root 14 0.0 0.0 0 0 ? S< Jan16 0:11 [migration/4]
root 15 0.0 0.0 0 0 ? SN Jan16 3:55 [ksoftirqd/4]
root 16 0.0 0.0 0 0 ? S< Jan16 0:00 [watchdog/4]
root 17 0.0 0.0 0 0 ? S< Jan16 0:26 [migration/5]
root 18 0.0 0.0 0 0 ? SN Jan16 4:53 [ksoftirqd/5]
root 19 0.0 0.0 0 0 ? S< Jan16 0:00 [watchdog/5]
root 20 0.0 0.0 0 0 ? S< Jan16 0:28 [migration/6]
root 21 0.0 0.0 0 0 ? SN Jan16 5:08 [ksoftirqd/6]
root 22 0.0 0.0 0 0 ? S< Jan16 0:00 [watchdog/6]
root 23 0.0 0.0 0 0 ? S< Jan16 0:29 [migration/7]
root 24 0.0 0.0 0 0 ? SN Jan16 5:13 [ksoftirqd/7]
进程状态:
D 无法中断的休眠状态(通常 IO 的进程);
R 正在运行可中在队列中可过行的;
S 处于休眠状态;
T 停止或被追踪;
W 进入内存交换 (从内核2.6开始无效);
X 死掉的进程 (基本很少見);
Z 僵尸进程;
< 优先级高的进程
N 优先级较低的进程
L 有些页被锁进内存;
s 进程的领导者(在它之下有子进程);
l 多进程的(使用 CLONE_THREAD, 类似 NPTL pthreads);
+ 位于后台的进程组;
2、线程查看 ps -Lf pid、ps -T -p pid 、top -Hp pid 查看线程数ps -Lf 570470|wc -l
ps -Lf 570470
UID PID PPID LWP C NLWP STIME TTY STAT TIME CMD
wls81 570470 570467 570470 0 183 Apr27 ? Sl 0:00 /wls/apache/tomcat/jdk1.7.0_67/bin/java -DserverName=tm_icp-coreSF003 -Xms1024M -Xmx1024M -XX:MaxNewSize=128m -XX:MaxPermSize=256m -XX:+UseConcMarkSweepGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -verbos
wls81 570470 570467 570476 0 183 Apr27 ? Sl 0:01 /wls/apache/tomcat/jdk1.7.0_67/bin/java -DserverName=tm_icp-coreSF003 -Xms1024M -Xmx1024M -XX:MaxNewSize=128m -XX:MaxPermSize=256m -XX:+UseConcMarkSweepGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -verbos
wls81 570470 570467 570477 0 183 Apr27 ? Sl 0:07 /wls/apache/tomcat/jdk1.7.0_67/bin/java -DserverName=tm_icp-coreSF003 -Xms1024M -Xmx1024M -XX:MaxNewSize=128m -XX:MaxPermSize=256m -XX:+UseConcMarkSweepGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -verbos
wls81 570470 570467 570478 0 183 Apr27 ? Sl 0:07 /wls/apache/tomcat/jdk1.7.0_67/bin/java -DserverName=tm_icp-coreSF003 -Xms1024M -Xmx1024M -XX:MaxNewSize=128m -XX:MaxPermSize=256m -XX:+UseConcMarkSweepGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -verbos
wls81 570470 570467 570479 0 183 Apr27 ? Sl 0:04 /wls/apache/tomcat/jdk1.7.0_67/bin/java -DserverName=tm_icp-coreSF003 -Xms1024M -Xmx1024M -XX:MaxNewSize=128m -XX:MaxPermSize=256m -XX:+UseConcMarkSweepGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -verbos
wls81 570470 570467 570480 0 183 Apr27 ? Sl 0:08 /wls/apache/tomcat/jdk1.7.0_67/bin/java -DserverName=tm_icp-coreSF003 -Xms1024M -Xmx1024M -XX:MaxNewSize=128m -XX:MaxPermSize=256m -XX:+UseConcMarkSweepGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -verbos
wls81 570470 570467 570481 0 183 Apr27 ? Sl 0:00 /wls/apache/tomcat/jdk1.7.0_67/bin/java -DserverName=tm_icp-coreSF003 -Xms1024M -Xmx1024M -XX:MaxNewSize=128m -XX:MaxPermSize=256m -XX:+UseConcMarkSweepGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -verbos
wls81 570470 570467 570482 0 183 Apr27 ? Sl 0:00 /wls/apache/tomcat/jdk1.7.0_67/bin/java -DserverName=tm_icp-coreSF003 -Xms1024M -Xmx1024M -XX:MaxNewSize=128m -XX:MaxPermSize=256m -XX:+UseConcMarkSweepGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -verbos
wls81 570470 570467 570483 0 183 Apr27 ? Sl 0:00 /wls/apache/tomcat/jdk1.7.0_67/bin/java -DserverName=tm_icp-coreSF003 -Xms1024M -Xmx1024M -XX:MaxNewSize=128m -XX:MaxPermSize=256m -XX:+UseConcMarkSweepGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -verbos
wls81 570470 570467 570484 0 183 Apr27 ? Sl 0:00 /wls/apache/tomcat/jdk1.7.0_67/bin/java -DserverName=tm_icp-coreSF003 -Xms1024M -Xmx1024M -XX:MaxNewSize=128m -XX:MaxPermSize=256m -XX:+UseConcMarkSweepGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -verbos
wls81 570470 570467 570485 0 183 Apr27 ? Sl 0:42 /wls/apache/tomcat/jdk1.7.0_67/bin/java -DserverName=tm_icp-coreSF003 -Xms1024M -Xmx1024M -XX:MaxNewSize=128m -XX:MaxPermSize=256m -XX:+UseConcMarkSweepGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -verbos
wls81 570470 570467 570486 0 183 Apr27 ? Sl 0:43 /wls/apache/tomcat/jdk1.7.0_67/bin/java -DserverName=tm_icp-coreSF003 -Xms1024M -Xmx1024M -XX:MaxNewSize=128m -XX:MaxPermSize=256m -XX:+UseConcMarkSweepGC -X
线程的状态:
1.新建状态(New):
当用new操作符创建一个线程时, 例如new Thread(r),线程还没有开始运行,此时线程处在新建状态。 当一个线程处于新生状态时,程序还没有开始运行线程中的代码
2.就绪状态(Runnable)
一个新创建的线程并不自动开始运行,要执行线程,必须调用线程的start()方法。当线程对象调用start()方法即启动了线程,start()方法创建线程运行的系统资源,并调度线程运行run()方法。当start()方法返回后,线程就处于就绪状态。
处于就绪状态的线程并不一定立即运行run()方法,线程还必须同其他线程竞争CPU时间,只有获得CPU时间才可以运行线程。因为在单CPU的计算机系统中,不可能同时运行多个线程,一个时刻仅有一个线程处于运行状态。因此此时可能有多个线程处于就绪状态。对多个处于就绪状态的线程是由Java运行时系统的线程调度程序(thread scheduler)来调度的。
3.运行状态(Running)
当线程获得CPU时间后,它才进入运行状态,真正开始执行run()方法.
4. 阻塞状态(Blocked)
线程运行过程中,可能由于各种原因进入阻塞状态:
1>线程通过调用sleep方法进入睡眠状态;
2>线程调用一个在I/O上被阻塞的操作,即该操作在输入输出操作完成之前不会返回到它的调用者;
3>线程试图得到一个锁,而该锁正被其他线程持有;
4>线程在等待某个触发条件;
......
所谓阻塞状态是正在运行的线程没有运行结束,暂时让出CPU,这时其他处于就绪状态的线程就可以获得CPU时间,进入运行状态。
5. 死亡状态(Dead)
有两个原因会导致线程死亡:
1) run方法正常退出而自然死亡,
2) 一个未捕获的异常终止了run方法而使线程猝死。
为了确定线程在当前是否存活着(就是要么是可运行的,要么是被阻塞了),需要使用isAlive方法。如果是可运行或被阻塞,这个方法返回true; 如果线程仍旧是new状态且不是可运行的, 或者线程死亡了,则返回false.
3、网络连接状态 netstat -an
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 10.21.5.193:58080 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:4265 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:11050 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:11052 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:28309 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN
tcp 0 0 10.21.5.193:10050 10.21.2.83:19165 TIME_WAIT
tcp 0 0 10.21.5.193:10050 10.21.2.83:19200 TIME_WAIT
tcp 0 0 10.21.5.193:10050 10.21.2.83:18949 TIME_WAIT
tcp 0 0 10.21.5.193:10050 10.21.2.83:18259 TIME_WAIT
tcp 0 0 10.21.5.193:10050 10.21.2.83:17645 TIME_WAIT
tcp 0 0 10.21.5.193:10050 10.21.2.83:20460 TIME_WAIT
tcp 0 0 10.21.5.193:10050 10.21.2.83:17748 TIME_WAIT
tcp 0 0 10.21.5.193:10050 10.21.2.83:17955 TIME_WAIT
tcp 0 0 10.21.5.193:10050 10.21.2.83:17344 TIME_WAIT
tcp 0 0 10.21.5.193:10050 10.21.2.83:18420 TIME_WAIT
tcp 0 0 10.21.5.193:10050 10.21.2.83:20611 TIME_WAIT
tcp 0 0 10.21.5.193:15909 10.21.255.227:12054 TIME_WAIT
tcp 0 0 10.21.5.193:10050 10.21.2.83:19950 TIME_WAIT
tcp 0 0 10.21.5.193:15908 10.21.255.227:12054 TIME_WAIT
tcp 0 0 10.21.5.193:10050 10.21.2.83:19028 TIME_WAIT
tcp 0 0 10.21.5.193:10050 10.21.2.83:19755 TIME_WAIT
tcp 0 0 10.21.5.193:10050 10.21.2.83:17136 TIME_WAIT
tcp 0 0 10.21.5.193:10050 10.21.2.83:17877 TIME_WAIT
tcp 0 0 10.21.5.193:10050 10.21.2.83:17521 TIME_WAIT
tcp 0 0 10.21.5.193:10050 10.21.2.83:17304 TIME_WAIT
tcp 0 0 10.21.5.193:41533 215.22.0.52:5180 ESTABLISHED
tcp 0 0 10.21.5.193:25706 10.21.255.72:9988 ESTABLISHED
tcp 0 0 10.21.5.193:10050 10.21.2.83:20165 TIME_WAIT
tcp 0 0 10.21.5.193:10050 10.21.2.83:17827 TIME_WAIT
tcp 0 0 10.21.5.193:10050 10.21.2.83:17449 TIME_WAIT
tcp 0 0 10.21.5.193:10050 10.21.2.83:20380 TIME_WAIT
tcp 0 0 10.21.5.193:938 215.22.0.180:2049 ESTABLISHED
tcp 0 0 10.21.5.193:57503 10.21.255.226:12056 ESTABLISHED
tcp 0 0 10.21.5.193:10050 10.21.2.83:17562 TIME_WAIT
tcp 0 0 10.21.5.193:10050 10.21.2.83:18009 TIME_WAIT
tcp 0 0 10.21.5.193:10050 10.21.2.83:19438 TIME_WAIT
4、如何查看tomcat对应的进程号:ps -ef|grep tomcat
根据进程号查询对应的目录:/proc/pid/cwd、ls -la /proc/pid/fd
根据目录查找对应的进程:lsof path
5、查看tomcat的线程数:ps -Lf pid|wc -l
6、查看tomcat的并发数:netstat -an|grep 10050|awk '{count[$6]++} END{for (i in count) print(i,count[i])}'
TIME_WAIT 25
LISTEN 1
7、根据端口号查询对应进程
lsof -Pnl +m -i4|grep port #根据此命令查出端口号对应的进程pid,然后使用ps查到进程信息。
netstat -anp|grep prot #根据此命令查出端口号对应的进程pid,然后使用ps查到进程信息。