您的位置:首页 > 运维架构 > Linux

windows/linux进程操作

2017-12-27 14:02 495 查看
背景:
近日,在用idea撸码的时候,启动了多个tomcat,此时idea突然奔溃了(莫名其妙就消失不见了,迷之尴尬...)。然后,我只能重新打开idea,再次启动tomcat的时候,提示"11:23    Error running 'tomcat7': Address localhost:1091 is already in use"的错误日志,发现端口被占用了,tomcat在idea奔溃的时候,没有被正常关闭。于是,就引出了如下问题:


windows操作系统进程

一. tasklist命令:

1) 使用帮助:tasklist /?

C:\Users\wangdy>tasklist /?

TASKLIST [/S system [/U username [/P [password]]]]
[/M [module] | /SVC | /V] [/FI filter] [/FO format] [/NH]

描述:
该工具显示在本地或远程机器上当前运行的进程列表。

参数列表:
/S     system           指定连接到的远程系统。

/U     [domain\]user    指定应该在哪个用户上下文执行这个命令。

/P     [password]       为提供的用户上下文指定密码。如果省略,则
提示输入。

/M     [module]         列出当前使用所给 exe/dll 名称的所有任务。
如果没有指定模块名称,显示所有加载的模块。

/SVC                    显示每个进程中主持的服务。

/APPS 显示应用商店应用及其关联的进程。

/V                      显示详细任务信息。

/FI    filter           显示一系列符合筛选器
指定条件的任务。

/FO    format           指定输出格式。
有效值: "TABLE"、"LIST"、"CSV"。

/NH                     指定列标题不应该
在输出中显示。
只对 "TABLE" 和 "CSV" 格式有效。

/?                      显示此帮助消息。

筛选器:
筛选器名称     有效运算符           有效值
-----------     ---------------           --------------------------
STATUS          eq, ne                    RUNNING | SUSPENDED
NOT RESPONDING | UNKNOWN
IMAGENAME       eq, ne                    映像名称
PID             eq, ne, gt, lt, ge, le    PID 值
SESSION         eq, ne, gt, lt, ge, le    会话编号
SESSIONNAME     eq, ne                    会话名称
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                    用户名,格式为
[域\]用户
SERVICES        eq, ne                    服务名称
WINDOWTITLE     eq, ne                    窗口标题
模块         eq, ne                    DLL 名称

注意: 当查询远程计算机时,不支持 "WINDOWTITLE" 和 "STATUS"
筛选器。

Examples:
TASKLIST
TASKLIST /M
TASKLIST /V /FO CSV
TASKLIST /SVC /FO LIST
TASKLIST /APPS /FI "STATUS eq RUNNING"
TASKLIST /M wbem*
TASKLIST /S system /FO LIST
TASKLIST /S system /U 域\用户名 /FO CSV /NH
TASKLIST /S system /U username /P password /FO TABLE /NH
TASKLIST /FI "USERNAME ne NT AUTHORITY\SYSTEM" /FI "STATUS eq running"


2) 管道过滤查找对应任务

使用管道“|”符合配合findstr 命令使用:

C:\Users\wangdy>tasklist | findstr java
映像名称                       PID 会话名              会话#       内存使用
========================= ======== ================ =========== ============
java.exe                      4264 Console                    1      5,264 K
java.exe                      1200 Console                    1     97,528 K
java.exe                       836 Console                    1      1,680 K
java.exe                      5772 Console                    1      1,688 K
java.exe                      8496 Console                    1     16,276 K
java.exe                     11152 Console                    1    125,112 K


二. netstat命令:

1)查看所有系统进程netstat -ano

C:\Users\wangdy>netstat -ano

活动连接

协议  本地地址          外部地址        状态           PID
TCP    0.0.0.0:135            0.0.0.0:0              LISTENING       1136
TCP    0.0.0.0:445            0.0.0.0:0              LISTENING       4
TCP    0.0.0.0:1091           0.0.0.0:0              LISTENING       1200
TCP    0.0.0.0:1095           0.0.0.0:0              LISTENING       8496
TCP    0.0.0.0:3306           0.0.0.0:0              LISTENING       4400
TCP    0.0.0.0:8009           0.0.0.0:0              LISTENING       8496
TCP    0.0.0.0:8081           0.0.0.0:0              LISTENING       1200
TCP    0.0.0.0:8085           0.0.0.0:0              LISTENING       8496
…………   …………   …………  …………


2)过滤出指定进程

C:\Users\wangdy>netstat -ano | findstr 8081
TCP    0.0.0.0:8081           0.0.0.0:0              LISTENING       1200


三. taskkill命令:

1)杀掉被占用端口的进程

先使用netstat -nao | findstr 1095查出指定端口的进程信息(PID)

C:\Users\wangdy>netstat -nao | findstr 1095
协议  本地地址                     外部地址               状态           PID
TCP    0.0.0.0:1095           0.0.0.0:0              LISTENING       14528
TCP    [::]:1095              [::]:0                 LISTENING       14528


根据查询到的PID杀掉指定进程

命令:taskkill /f /pid 指定进程号(PID) 其中:/f表示强制

C:\Users\wangdy>taskkill /f  /pid 14528
成功: 已终止 PID 为 14528 的进程。


这样,windows下我们某些端口号被进程占用后,就可以杀掉了,杀掉后再次重启就没这个异常了,比如tomcat端口等。

linux上操作系统进程

linux大家常用,此处引生下就好了:

1)查看系统进程: ps -ef

[root@iZ2zean9vwo40c7sg3aqrxZ ~]# ps -ef
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 Apr12 ?        00:00:04 /sbin/init
root         2     0  0 Apr12 ?        00:00:00 [kthreadd]
root         3     2  0 Apr12 ?        00:00:00 [migration/0]
root         4     2  0 Apr12 ?        00:00:10 [ksoftirqd/0]
root         5     2  0 Apr12 ?        00:00:00 [stopper/0]
root         6     2  0 Apr12 ?        00:00:15 [watchdog/0]
root         7     2  0 Apr12 ?        00:12:35 [events/0]
root         8     2  0 Apr12 ?        00:00:00 [events/0]
root         9     2  0 Apr12 ?        00:00:00 [events_long/0]
root        10     2  0 Apr12 ?        00:00:00 [events_power_ef]
root        11     2  0 Apr12 ?        00:00:00 [cgroup]
root        12     2  0 Apr12 ?        00:00:00 [khelper]

4000
root        13     2  0 Apr12 ?        00:00:00 [netns]
root        14     2  0 Apr12 ?        00:00:00 [async/mgr]
………… …………


2)管道过滤指定进程: | grep

[root@iZ2zean9vwo40c7sg3aqrxZ bin]# ps -ef | grep tomcat
UID        PID  PPID  C STIME TTY          TIME CMD
root     17110     1 83 13:53 pts/0    00:00:06 /usr/local/jdk8/jre/bin/java -Djava.util.logging.config.file=/usr/local/tomcat8/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -classpath /usr/local/tomcat8/bin/bootstrap.jar:/usr/local/tomcat8/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/tomcat8 -Dcatalina.home=/usr/local/tomcat8 -Djava.io.tmpdir=/usr/local/tomcat8/temp org.apache.catalina.startup.Bootstrap start
root     17129 17076  0 13:53 pts/0    00:00:00 grep tomcat
[root@iZ2zean9vwo40c7sg3aqrxZ bin]#


3)杀掉指定进程:kill -9 PID 其中:-9表示强制

[root@iZ2zean9vwo40c7sg3aqrxZ bin]# kill -9 17110
[root@iZ2zean9vwo40c7sg3aqrxZ bin]# ps -ef | grep tomcat
root     17159 17076  0 13:56 pts/0    00:00:00 grep tomcat
[root@iZ2zean9vwo40c7sg3aqrxZ bin]#


杀掉再查看,对应进程就没有了。

END

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息