当前位置:  开发笔记 > 运维 > 正文

什么进程正在侦听Solaris上的某个端口?

如何解决《什么进程正在侦听Solaris上的某个端口?》经验,为你挑选了2个好方法。

所以我登录到Solaris框,尝试启动Apache,并发现已经有一个进程正在侦听端口80,而且它不是Apache.我们的盒子没有安装lsof,所以我不能用它来查询.我想我能做到:

pfiles `ls /proc` | less

并寻找"端口:80",但如果有人有更好的解决方案,我全都耳朵!如果我可以在没有root的情况下寻找听力过程,那就更好了.我对shell和C解决方案都持开放态度; 我不介意有一个小的自定义可执行文件随身携带,以便下次出现.

更新:我说的是solaris的通用安装我不是管理员(虽然我有超级用户访问权限),所以从免费软件磁盘安装东西不是一个选项.显然,两者都没有使用针对fuser,netstat或其他工具的特定于Linux的扩展.到目前为止,在所有进程上运行pfiles 似乎是最好的解决方案,不幸的是.如果仍然如此,我可能会发布一个答案,其中包含一些稍微更高效的代码.



1> mavroprovato..:

我在某个地方找到了这个脚本.我不记得在哪里,但它对我有用:

#!/bin/ksh

line='---------------------------------------------'
pids=$(/usr/bin/ps -ef | sed 1d | awk '{print $2}')

if [ $# -eq 0 ]; then
   read ans?"Enter port you would like to know pid for: "
else
   ans=$1
fi

for f in $pids
do
   /usr/proc/bin/pfiles $f 2>/dev/null | /usr/xpg4/bin/grep -q "port: $ans"
   if [ $? -eq 0 ]; then
      echo $line
      echo "Port: $ans is being used by PID:\c"
      /usr/bin/ps -ef -o pid -o args | egrep -v "grep|pfiles" | grep $f
   fi
done
exit 0

编辑:这是原始来源: [Solaris]哪个进程绑定到给定端口?


主要CAVEAT在这里!从pfiles手册页:
警告以下proc工具在检查它们并报告结果时停止其目标进程: pfiles ,pldd和pstack.进程在停止时无效.在生产环境中停止频繁使用的进程...可能会导致严重的瓶颈甚至挂起这些进程,从而导致用户无法使用这些进程.某些数据库也可能异常终止.因此,应避免在生产环境中停止UNIX进程.

2> Mauricio Mor..:

这是一个单行:

ps -ef| awk '{print $2}'| xargs -I '{}' sh -c 'echo examining process {}; pfiles {}| grep 80'

'echo examine process PID'将在每次搜索之前打印,因此一旦你看到输出引用端口80,你就会知道哪个进程持有句柄.

或者使用:

ps -ef| grep $USER|awk '{print $2}'| xargs -I '{}' sh -c 'echo examining process {}; pfiles {}| grep 80'

因为'pfiles'可能不喜欢你试图访问其他用户的进程,除非你当然是root.

推荐阅读
oDavid_仔o_880
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有