最近接到一个任务,有一批机器在正常使用,但是由于交接手续不完全,需要弄清楚里面的服务哪些是正常使用的

一开始碰到这个需求,我是懵逼的,这需求就像开盲盒,怎么才能又准确又快的找出在用的程序呢

思来想去,最好的线索就是端口占用情况,以及关键词搜索

 

linux:

#切换到管理员账号
su
- #安装工具,以及查询端口占用 yum install -y net-tools
#大致检查哪些端口有可能是有用的
netstat -tunlp
#根据关键词大致观察可能的程序
ps -ef|grep java
ps -ef|grep mysql
ps -ef|grep nginx
ps -ef|grep php
#查看docker的容器情况
docker ps --no-trunc

#根据端口查pid
netstat -tunlp|grep 端口号

#根据pid查应用
ps -ef|grep pid

#其实有些docker应用也会混入在关键词搜索中,如何分辨他们是docker里的还是直接部署在服务器上的,status命令可以看出端倪,docker应用一般都查不出子进程
systemct status pid

#根据pid查程序为准
ls -l /proc/pid

 

windows:

windwos思路和linux大致相当,也是主要以端口为线索

#查看端口占用情况
netstat -aon

#用端口查出的pid查询端口对应的程序
tasklist /svc|findstr PID
#这里有个技巧就是利用任务管理器里的进程,windows10之前的,在查看里调出 pid,进程名,命令行选项,windows10之后的直接点击任务管理器的名称栏,勾选pid,进程名,命令行
#想复制任务管理器 命令行里的命令有技巧
#在cmd中输入以下命令即可,一个是根据应用名,一个是根据pid,windows10之后的可以直接选中右键粘贴,windows10之前的,要在cmd窗口点右键,标记,选中要粘贴的部分,再点右键即复制成功
wmic process where caption="java.exe" get caption,commandline,ProcessId /value
wmic process where ProcessId="1111" get caption,commandline,ProcessId /value

#根据端口号和pid查任务,以及杀掉异常任务
netstat -aon|findstr 端口号 tasklist /svc|findstr PID taskkill /t /f /pid pid号

 

 

参考文档:

 https://ask.csdn.net/questions/257405

https://blog.csdn.net/weixin_46699775/article/details/120301242

https://jingyan.baidu.com/article/af9f5a2d75f16e02150a451c.html

https://blog.csdn.net/saibeifeng187/article/details/128868154

https://www.cnblogs.com/idean/p/15093313.html

posted on 2023-04-20 19:38  06  阅读(22)  评论(0编辑  收藏  举报