我有一台 Solaris 服务器,其中发现许多 sshd 服务正在运行:
ps -ef | grep 23492
root 25449 23492 0 15:27:17 ? 0:00 /usr/sbin/sshd2 -oPidFile=/var/run/sshd2_22.pid -R internal_rexec
root 25432 23492 0 15:24:32 ? 0:00 /usr/sbin/sshd2 -oPidFile=/var/run/sshd2_22.pid -R internal_rexec
root 25350 23492 0 15:14:22 ? 0:00 /usr/sbin/sshd2 -oPidFile=/var/run/sshd2_22.pid -R internal_rexec
root 25344 23492 0 15:13:59 ? 0:00 /usr/sbin/sshd2 -oPidFile=/var/run/sshd2_22.pid -R internal_rexec
root 25539 23492 0 15:34:42 ? 0:00 /usr/sbin/sshd2 -oPidFile=/var/run/sshd2_22.pid -R internal_rexec
root 23492 1 0 11:45:46 ? 0:01 /usr/sbin/sshd2 -oPidFile=/var/run/sshd2_22.pid
root 24101 23492 0 13:06:34 ? 0:00 /usr/sbin/sshd2 -oPidFile=/var/run/sshd2_22.pid -R internal_rexec
root 25472 23492 0 15:30:38 ? 0:00 /usr/sbin/sshd2 -oPidFile=/var/run/sshd2_22.pid -R internal_rexec
如您所见,PID-23492
/usr/sbin/sshd2
已创建多个子进程。我想知道是谁/哪个其他进程/脚本正在启动此进程。
Solaris 中是否有任何命令可以给我提供有关该过程的更多详细信息?
我尝试lsof
在 PID 文件上执行此操作,但我猜测它在 Solaris 上不起作用:
[root@e0100damsgmgt01 /var/adm]$ lsof /var/run/sshd2_22.pid
ld.so.1: lsof: fatal: libc.so.1: version `SUNW_1.22.5' not found (required by file /opt/csw/bin/amd64/lsof)
ld.so.1: lsof: fatal: libc.so.1: open failed: No such file or directory
Killed
[root@e0100damsgmgt01 /var/adm]$
我的 Solaris 版本:
[root@e0100damsgmgt01 /var/adm]$ uname -a
SunOS e0100damsgmgt01 5.10 Generic_137112-07 i86pc i386 i86pc
[root@e0100damsgmgt01 /var/adm]$
请帮忙。
答案1
ps axf
应该会显示进程树,您将在其中看到一个服务器,其他的是与不同客户端通信的子进程。这是正常行为。
要获取进程打开的文件列表,您应该使用
lsof -p $(cat /var/run/sshd2_22.pid)
$(...)
或者您可以通过用上一个命令中的 PID替换来查看每个其他进程的列表。