前言
在开发中经常需要查看端口、进程和线程的相关信息,下面从三个方面介绍一下常用的命令:
- Windows常用命令
- Linux常用命令
- Java中常用命令
Windows常用命令
Windows中查看进程和端口相关命令主要有tasklist、taskkill、netstat三个,使用时一般都是先通过tasklist和netstat命令找到PID,然后通过taskkill命令杀死进程。
tasklist:不加参数默认打印【映像名称、PID、会话名、会话、内存使用】等信息,一般使用这个就够用了;tasklist /V:查看进程详细信息,包括【映像名称、PID、会话名、会话、内存使用、状态、用户名、CPU、时间、窗口标题】,很少用tasklist /SVC:显示每个进程中的服务信息,打印信息包括【映像名称、PID、服务】,很少用taskkill /F /PID [进程ID]:强制杀死指定PID的进程;/F表示强制执行;netstat -ano:查看所有的端口号,打印信息包括【协议、本地地址、外部地址、状态、PID】a:显示所有端口号n:以数字形式显示地址和端口号o:显示关联的进程PID
Linux常用命令
Linux中查看进程常用命令有ps、top、kill
ps aux:查看所有进程信息包括USER,PID,%CPU,%MEM,VSZ,RSS,TTY,STAT,START,TIME,COMMANDa:all with tty, including other users,显示当前终端下的所有进程信息,包括其他用户的进程。u:user-oriented format,面向用户的格式进行输出x:processes without controlling ttys,显示没有控制终端的进程
ps -ef:查看所有进程信息,打印内容包括UID,PID,PPID,C,STIME,TTY,TIME,CMD-e:和-A一样表示所有进程-f:full-format, including command lines,使用完整格式输出信息,包含命令行
top:可以动态监测系统进程信息,和Windows的任务管理器类似kill -9 PID:杀死进程
ps aux和ps -ef都可以通过管道符查找进程信息,比如ps aux | grep java或者ps -ef | grep java来查找java相关进程信息
Java中常用命令
Java开发中最常用的进程和线程相关的命令是jps、jstack、jconsole
jps:查看所有Java进程,输出内容为进程ID和启动类简易名称(Test)jps -l:查看所有Java进程,输出内容为进程ID和启动类全类名(com.xxx.xxx.Test)jstack 进程ID:查看当前进程的所有线程信息,可以查看线程状态是否死锁;jconsole:可以对本地和远程服务器的中Java进程的内存、线程状态、类以及是否死锁等进行检测
应用场景
- 想要杀死某个运行中的
Java进程:首先通过jps命令找到该进程的PID,然后通过taskkill或者kill命令杀死进程。 - 某个运行中的
Java进程卡死:首先通过jps命令找到该进程的PID,然后通过jstack命令查看线程状态是否有sleep或者死锁的线程,定位到具体代码位置进行排查。
tip:一般情况下用到的命令都可以通过-h/-help/--help来查看帮助文档,快速了解用法和每个参数的意义