在Solaris上的某个端口上侦听什么进程?
时间:2020-03-06 14:20:31 来源:igfitidea点击:
因此,我登录到Solaris框中,尝试启动Apache,然后发现已经有一个侦听端口80的进程,而不是Apache。我们的盒子没有安装lsof,所以我无法查询。我想我可以做到:
pfiles `ls /proc` | less
并寻找"端口:80",但是如果有人有更好的解决方案,我将不知所措!如果我可以在没有root的情况下寻找收听过程,那就更好了。我对Shell和C解决方案都持开放态度;我不介意有一个小的自定义可执行文件可以在下次出现时随身携带。
更新:我正在谈论不是管理员的solaris通用安装(尽管我确实具有超级用户访问权限),因此无法从免费软件磁盘安装东西。显然,它们都没有使用特定于Linux的扩展来融合,netstat或者其他工具。到目前为止,不幸的是,在所有进程上运行pfile似乎是最好的解决方案。如果仍然如此,我可能会发布一个答案,上面的代码要比上面的剪辑稍微有效一些。
解决方案
如果我们可以访问netstat
,那可以做到这一点。
最可能是sun的管理服务器。
它通常与sun的目录以及默认安装中的其他一些webmin-ish捆绑在一起
我们可能不需要,但是最好的选择是获取sunfreeware CD并安装lsof。
除此之外,是的,我们可以使用Shell脚本在/ proc中四处浏览。
这是一种间接方法,但是我们可以查看网站是否从端口80上运行的任何内容加载到我们选择的Web浏览器上。也可以通过telnet到端口80并查看是否得到响应,从而为我们提供线索到该端口上正在运行的内容,则可以将其关闭。由于端口80是HTTP流量机会的默认端口,因此默认情况下会在其中运行某种HTTP服务器,但不能保证。
我在某个地方找到了这个脚本。我不记得在哪里,但是对我有用:
#!/bin/ksh line='---------------------------------------------' pids=$(/usr/bin/ps -ef | sed 1d | awk '{print }') if [ $# -eq 0 ]; then read ans?"Enter port you would like to know pid for: " else ans= 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]哪个进程绑定到给定的端口?