因此,我登录到Solaris框中,尝试启动Apache,然后发现已经有一个侦听端口80的进程,而不是Apache。我们的盒子没有安装lsof,所以我无法查询。我想我可以做:
pfiles `ls /proc` | less
并寻找“端口:80”,但是如果有人有更好的解决方案,我将不知所措!如果我可以在没有root的情况下寻找收听过程,那就更好了。我对Shell和C解决方案都持开放态度;我不介意有一个小的自定义可执行文件可以在下次出现时随身携带。
更新:我正在谈论不是管理员的solaris通用安装(尽管我确实具有 super 用户访问权限),因此无法从免费软件磁盘安装东西。显然,它们都没有使用特定于Linux的扩展来融合,netstat或其他工具。到目前为止,不幸的是,在所有进程上运行pfile似乎是最好的解决方案。如果仍然如此,我可能会发布一个答案,上面的代码要比上面的剪辑更有效。
最佳答案
我在某个地方找到了这个脚本。我不记得在哪里,但是对我有用:
#!/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] Which process is bound to a given port ?
关于unix - 在Solaris上的某个端口上监听什么进程?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/91169/