【发布时间】:2014-01-07 08:30:48
【问题描述】:
我有一个快速的问题。我想知道 Solaris 系统中的 losf -i 等效命令是什么。
我只想显示有网络连接的文件。
谢谢!!
【问题讨论】:
标签: linux unix command solaris equivalent
我有一个快速的问题。我想知道 Solaris 系统中的 losf -i 等效命令是什么。
我只想显示有网络连接的文件。
谢谢!!
【问题讨论】:
标签: linux unix command solaris equivalent
这是一个 shell 脚本,它列出了 Solaris 上所有具有开放 TCP 或 UDP 端口的进程,您可以通过将其作为参数传递来将其限制为给定的端口号:
pfiles /proc/* 2>/dev/null | nawk -v port=$1 '
/^[0-9]/ { cmd=$2; type="unknown"; continue }
$1 == "SOCK_STREAM" { type="tcp" }
$1 == "SOCK_DGRAM" { type="udp" }
$2 ~ "AF_INET" { if((port!="")&&($5!=port)) continue;
if(cmd!="") { printf("%s\n",cmd); cmd="" }
printf(" %s:%s/%s\n",$3,$5,type); }'
注意:如pfiles manual page 的警告部分所述,不建议在负载繁重的生产系统上运行此命令,因为可能会发生死锁或崩溃,因为这可能会发生死锁或崩溃。
注意 #2:之前的警告不适用于 Solaris (Oracle Solaris 11.4) 的最新更新,因为pfiles 不再暂停受监控的进程。它现在只使用 ad hoc /proc 伪文件。
【讨论】:
mkdir ~/Functions;cat >~/Functions/myLsof <<%function myLsof() { pfiles /proc/* ... ,type); }' % ; export FPATH=~/Functions 之类的东西,只要确保 % 出现在不同的行中。如果不清楚,请随时提出新问题。
pfiles 会导致该进程崩溃的情况。原因是pfiles 暂时停止进程以检查它。我认为 99.9% 的所有流程都对此免疫,但一个非常“时间敏感”的流程可能不喜欢它。这可能是一个奇怪的情况,但它是可重现的,即您可以通过在其上运行pfiles 来每次使进程崩溃。您已被警告!
从 Solaris 11.2 开始,此类信息现在可以直接在 netstat 命令(-u 选项)中获得,因此您不必为此目的使用 pfiles hack 或使用 lsof 工具.就我个人而言,我一直想知道为什么这些信息不能成为netstat 输出的一部分,很高兴看到最终会是这样。
有一个nice blog from Oracle on the topic。
(警告:在撰写本文时,v11.2 处于测试阶段,但已完全披露内容/新功能)
【讨论】:
你可以试试 pfiles,fuser.你可以在solaris上安装lsof。
http://andriigrytsenko.net/2010/08/lsof-installation-on-solaris-10/
【讨论】: