在网络程序的调试过程中,经常发生一些出乎意料的事情,比如创建一个TCP服务失败,这时候往往需要查看系统的网络情况,最常用的网络抓包当然非WireShark模式。但往往很多时候只需要查看某个端口的使用情况,它到底被那个进程(对应PID)占用了,或者你还需要把它Kill掉。如果你在Windows操作系统,你可以使用netstat命令来查询PID,然后可以打开任务管理器,查看这个PID对应的进程名;如果PID没有显示,菜单》查看》选择列》选中PID即可;得知进程后,我们可以将进程杀掉。下面我简单描述一下我所了解的在Windows和Linux系统下处理方式。 (假如我们需要确定谁占用了我们的9010端口)
1、Windows平台
在windows控制台窗口下执行:
netstat -nao | findstr "9010"
TCP 127.0.0.1:9010 0.0.0.0:0 LISTENING 3017
你看到是PID为3017的进程占用了9010端口,如果进一步你想知道它的进程名称,你可以使用如下命令:
tasklist | findstr "3017"
如果你想杀死这个进程,你当然可以用前面描述的那种方法,在任务管理器里把它KILL了,但如果你喜欢高效一点,那么用taskkill命令就可以了。
taskkill /pid 3017
那么这个进程就灰灰湮灭了:)
2、Linux
如果你是个Linux爱好者,那个这个命令你应该很熟了,
netstat -pan | grep 9010
如果你稍微仔细一点,你会发现,用的都是netsta命令,事实上,netstat是一个比较通用的网络统计命令,几乎适用于所有现在流行的操作系统,无论是Linux,Window,还是其他Unix,或者Unix-like操作系统,而且用法基本一致。
下面是一个对Windows系统中netstat命令行参数的详细解释。
格式:
netstat [-a] [-e] [-n] [-o] [-p Protocol] [-b] [-r] [-s] [-v] [Interval]
参数说明:
-a 显示所有连接和监听端口。
-n 以数字形式显示地址和端口号。
-o 显示与每个连接相关的所属进程 ID。
-p 在Windows系统中,该选项用于指定默认情况的子集。proto 显示 proto 指定的协议的连接;proto 可以是下列协议之一: TCP、UDP、TCPv6 或 UDPv6。
如果与 -s 选项一起使用以显示按协议统计信息,proto 可以是下列协议之一:
IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 或 UDPv6。
-b 显示包含于创建每个连接或监听端口的可执行组件。在某些情况下已知可执行组件拥有多个独立组件,并且在这些情况下; 包含于创建连接或监听端口的组件序列被显示。这种情况下,可执行组件名在底部的 [] 中,顶部是其调用的组件,等等,直到 TCP/IP 部分。注意此选项 可能需要很长时间,如果没有足够权限可能失败。
-e 显示以太网统计信息。此选项可以与 -s选项组合使用。
-s 显示按协议统计信息。默认地,显示 IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 和 UDPv6 的统计信息。
-r 显示路由表。
-v 与 -b 选项一起使用时将显示包含于为所有可执行组件创建连接或监听端口的组件。
interval 重新显示选定统计信息,每次显示之间暂停时间间隔(以秒计)。按 CTRL+C 停止重新显示统计信息。如果省略,netstat 显示当前
配置信息(只显示一次)。
第二篇:DOS或命令行下查看进程,结束进程命令
DOS或命令行下查看进程,结束进程命令
XP中和进程有关的命令:
在system32目录中,dir task*
会看到如下几个文件:
+------------------------------+
taskkill.exe
tasklist.exe
taskman.exe
taskmgr.exe
+------------------------------+
其中,tasklist 已经算是一个比较强悍的查进程工具了,不用费事去下载其他工具。 直接敲tasklist命令,看到结果和进程Ctrl+Shift+Esc进程管理器看到的结果差不多。
用tasklist /?可以看到该命令的帮助。
比较常用的参数有:
/M [module] 列出所有其中符合指定模式名的 DLL 模块的所有任务。如果没有指定模块名,则显示每个任务加载的所有模块。
例如,我想查看Firefox进程加载的所有模块。那么,可以先直接用tasklist查到firefox的PID,比如2436,然后用
Tasklist /Fi "PID eq 2436" /M 显示出firefox进程所调用的模块。
/V 进程详细信息。主要是用它来知道进程对应的执行文件位置。
/SVC 显示进程相关的服务。 有什么用处呢? 比如:很多人有“svchost恐惧症”,一看见这个进程就疑心是不是中了病毒。用tasklist /SVC命令可以查看到底是那些进程使用了svchost服务。
其他细节可以在tasklist /? 中查到。
对应的,还有taskkill命令,杀进程的。
参数和tasklist差不多,也可以用taskkill /? 来显示所有参数用法。
记一下/PID和/T 就够用了
T的意思是Tree,这个参数的功能是结束一个进程树。
例如:taskkill /PID 1234 /T ,结束某个PID为1234的进程及其子进程。
这个工具不必很用心记,用Ctrl+Shift+Esc弹出进程管理器来杀进程更方便些。
cmd下两个非常重要的命令,往往我们在得到对方的dosshell以后,想给对方传送木 马或者rdmin等远程控制软件,但是对方开了win自带的防火墙,或者是天网,更或者 是瑞星的实时监控(其中以瑞星的最麻烦,因为都是有关联服务的),这时我们可以 用"tsd -c q -p PID",PID的获得方法有vbs脚本,也可以使用tasklist..现在先说下 tasklist...(cmd下执行tasklist就可以获得进程的详细资料,如下图所示)
PID也就是process id--进程id,获得进程id的作用,嘿嘿,不用说太明白了吧 Taskkill的具体格式
taskkill 有如下参数:
/S system 指定要连接到的远程系统。
/U [domain\]user 指定应该在哪个用户上下文
执行这个命令。
/P [password] 为提供的用户上下文指定
密码。如果忽略,提示输入。
/F 指定要强行终止
进程。
/FI filter 指定筛选进或筛选出查询的
的任务。
/PID process id 指定要终止的进程的
PID。
/IM image name 指定要终止的进程的
图像名。通配符 '*'
可用来指定所有图像名。
/T Tree kill: 终止指定的进程
和任何由此启动的子进程。
/? 显示帮助/用法
例如:
TASKKILL /S system /F /IM notepad.exe /T
TASKKILL /PID 1230 /PID 1241 /PID 1253 /T
TASKKILL /F /IM notepad.exe /IM mspaint.exe
TASKKILL /F /FI "PID ge 1000" /FI "WINDOWTITLE ne untitle*"
TASKKILL /F /FI "USERNAME eq NT AUTHORITY\SYSTEM" /IM notepad.exe TASKKILL /S system /U domain\username /FI "USERNAME ne NT*" /IM * TASKKILL /S system /U username /P password /FI "IMAGENAME eq note*" 我一般用的是 taskkill /f /pid <相对的PID值> /t
比如我们要在DOS下结束QQ.exe 先用tasklist查一下QQ的PID值,我现在的是3108,那么输入
taskkill /f /pid 3108 /t
这个命令的意思是,强行终止远程计算机进程ID为3108的特定进程,并关
由此进程打开任何子进程...
最后补充,用vbs脚本查看pid的方法,将以下代码保存为vbs文件,dos下传给对方 ,然后执行cscript pid.vbs
wscript.echo "PID ProcessName"
for each ps in getobject("winmgmts:\\.\root\cimv2:win32_process").instances_
wscript.echo ps.handle&vbtab&ps.name
next
杀进程的其他命令
ntsd -c q -p PID
-----------------------------------------------------------------------------------------------------------------------------------------------
以下是命令行下关于 taskkill 命令的介绍
Microsoft Windows XP [版本 5.1.2600]
(C) 版权所有 1985-2001 Microsoft Corp.
C:\Documents and Settings\tanyuqiang.COLORME>taskkill /?
TASKKILL [/S system [/U username [/P [password]]]]
{ [/FI filter] [/PID processid | /IM imagename] } [/F] [/T]
描述:
这个命令行工具可用来结束至少一个进程。
可以根据进程 id 或图像名来结束进程。
参数列表:
/S system 指定要连接到的远程系统。
/U [domain\]user 指定应该在哪个用户上下文
执行这个命令。
/P [password] 为提供的用户上下文指定
密码。如果忽略,提示输入。
/F 指定要强行终止
进程。
/FI filter 指定筛选进或筛选出查询的
的任务。
/PID process id 指定要终止的进程的
PID。
/IM image name 指定要终止的进程的
图像名。通配符 '*'
可用来指定所有图像名。
/T Tree kill: 终止指定的进程
和任何由此启动的子进程。
/? 显示帮助/用法。
筛选器:
筛选器名 有效运算符 有效值
----------- --------------- --------------
STATUS eq, ne 运行 | 没有响应
IMAGENAME eq, ne 图像名
PID eq, ne, gt, lt, ge, le PID 值
SESSION eq, ne, gt, lt, ge, le 会话编号
CPUTIME eq, ne, gt, lt, ge, le CPU 时间,格式为
hh:mm:ss。
hh - 时,
mm - 钟,ss - 秒
MEMUSAGE eq, ne, gt, lt, ge, le 内存使用,单位为 KB
USERNAME eq, ne 用户名,格式为
[domain\]user
MODULES eq, ne DLL 名
SERVICES eq, ne 服务名
WINDOWTITLE eq, ne 窗口标题
注意: 只有带有筛选器的情况下,才能跟 /IM 切换使用通配符 '*'。
注意: 远程进程总是要强行终止,
不管是否指定了 /F 选项。
例如:
TASKKILL /S system /F /IM notepad.exe /T
TASKKILL /PID 1230 /PID 1241 /PID 1253 /T
TASKKILL /F /IM notepad.exe /IM mspaint.exe
TASKKILL /F /FI "PID ge 1000" /FI "WINDOWTITLE ne untitle*"
TASKKILL /F /FI "USERNAME eq NT AUTHORITY\SYSTEM" /IM notepad.exe TASKKILL /S system /U domain\username /FI "USERNAME ne NT*" /IM *
TASKKILL /S system /U username /P password /FI "IMAGENAME eq note*"
C:\Documents and Settings\tanyuqiang.COLORME>
--------------------------------------------------------------------------------------------------------------------------------------------
Linux下查看终止进程的命令
如查看JAVA进程
[root@thg ~]# ps -ef |grep java
root 11683 1 2 11:15 pts/1 00:00:42 /usr/java/jdk1.5.0_12/bin/java -Djava.endorsed.dirs=/data/tomcat/common/endorsed -classpath /usr/java/jdk1.5.0_12/lib/tools.jar:/data/tomcat/bin/bootstrap.jar:/data/tomcat/bin/commons-logging-api.jar -Dcatalina.base=/data/tomcat -Dcatalina.home=/data/tomcat -Djava.io.tmpdir=/data/tomcat/temp org.apache.catalina.startup.Bootstrap start
root 11869 11837 0 11:46 pts/2 00:00:00 grep java
[root@thg ~]#
杀掉JAVA进程
[root@thg ~]# kill -9 11683