最近接到一个任务,有一批机器在正常使用,但是由于交接手续不完全,需要弄清楚里面的服务哪些是正常使用的
一开始碰到这个需求,我是懵逼的,这需求就像开盲盒,怎么才能又准确又快的找出在用的程序呢
思来想去,最好的线索就是端口占用情况,以及关键词搜索
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