在Solaris 8中将ps输出扩展到超过80个字符



如何在Solaris中扩展ps -fe的输出,使其显示超过80个字符?我的进程有几个参数,进程名不能再显示了

您不能使用默认ps (/usr/bin/ps)显示它们,这是SVR4的常规ps。

要获得完整的参数行,请使用BSD ps (UCB = University of California at Berkeley):

/usr/ucb/ps -alxwww

我们终于在Solaris中修复了这个问题;从Solaris 11.3 SRU 5开始,所有原始参数向量以及环境变量都可以从/proc中检索。Ps现在将打印所有的命令行。

修复Solaris 11.3 SRU 5

简单的答案是,没有办法可靠地获取Solaris上其他用户拥有的进程的完整参数。如果你有root或其他特权访问权限,你可以在旧版本上使用/usr/ucb/ps,在新版本上使用'pargs'或类似的工具(没有适用于所有版本的工具)。

基本上Solaris在进程启动时存储原始参数,而大多数其他平台允许ps在运行时通过某种方式访问进程的argv内容。这个存储副本位于一个特殊的内核数据结构中,其大小有限(80字节)。这也意味着程序不可能在启动后修改ps显示的参数,以达到有用或恶意的目的。

因此,如果您需要访问命令行以实现可移植的目的,例如pid检查,那么您将需要选择通过诸如启动不带绝对路径的程序控制execp路径之类的方法来强制执行短命令行,或者您将需要放弃Solaris上的可移植功能。

可以使用pargs PID它会提供比ps

更多的信息

尝试ps -efl。如果这不起作用(我手边没有Solaris盒子),您也可以尝试ps -efl | cat(因为有些程序检查它们是否输出到终端以决定它们的输出宽度)。

ps有两组可用的选项。其他选项将以正确的名称((可能是BSD和SRVn)?)

使用non-options-前置-连字符版本,您可以执行

ps auxww(w?) | grep ${PID}以延长打印的命令详细信息的长度(再次注意,NO前导'-'选项指示符)。

请注意,在某些情况下,您将在实际命令之前看到许多环境变量赋值,例如myPath=…cfgFile =…/道路//命令……args…

我认为'www'在某些系统中会打印所有内容,不管命令有多长。

最后,根据我使用ps做很多疯狂的事情的经验,我偶尔会有一个PID,输出将显示前6?列,但为命令保留的空间为空或具有某种占位符值。通过搜索comp.unix,我最终找到了原因。shell,但这是很久以前的事了,我现在无法访问Solaris系统。

最新更新