如何在Solaris中扩展ps -fe的输出,使其显示超过80个字符?我的进程有几个参数,进程名称无法再显示。
答案 0 :(得分:8)
您无法使用默认的ps(/ usr / bin / ps)显示它们,这是一个常规的SVR4。
要获得完整的参数线,请使用BSD ps(UCB =加州大学伯克利分校):
/usr/ucb/ps -alxwww
答案 1 :(得分:3)
我们终于在Solaris中解决了这个问题;从Solaris 11.3 SRU 5开始,可以从/ proc检索所有原始参数向量以及环境变量。 ps现在将打印所有命令行。
答案 2 :(得分:2)
简单的答案是,无法为Solaris上的进程可靠地获取其他用户拥有的进程的完整参数。如果您具有root权限或其他特权访问权限,则可以在旧版本上使用/ usr / ucb / ps,以及' pargs'或更新版本上的类似工具(没有适用于所有版本的工具)。
本质上,Solaris在进程启动时存储原始args,而大多数其他平台允许ps通过某种方式在进程的运行时访问argv的内容。该存储副本采用特殊的内核数据结构,大小有限(80字节)。这也意味着程序无法修改启动后的args,因为ps显示有用或恶意的方法。
因此,如果您需要为便携式目的访问命令行,例如pid检查,则需要选择通过黑客强制执行短命令行,例如启动程序控制的execp路径而不使用绝对路径,或者您需要放弃Solaris上的便携式功能。
答案 3 :(得分:1)
你可以使用pargs PID 它会提供比ps更多的信息
答案 4 :(得分:0)
ps有两组选项可用。其他人会用正确的名字(可能是BSD和SRVn)来填充?)
使用非选项 - 带有连字符的版本,您可以执行
ps auxww(w?) | grep ${PID}
扩展打印的命令详细信息的长度(再次注意,没有前导' - '选项指示符)。
请注意,在某些情况下,您会在实际命令之前看到很多环境变量赋值,即myPath = ... cfgFile = ... / path / to / command ... args ...
我认为某些系统中的'www'会打印所有内容,无论命令有多长。
最后,根据我使用ps做很多疯狂事情的经验,我会偶尔有一个PID,输出会显示前6个?列,但为命令保留的空间为空或具有某种占位符值。我最终通过搜索comp.unix.shell找到了原因,但是现在很久以前确定并且我现在无法访问Solaris系统。
我希望这会有所帮助。
答案 5 :(得分:0)
试试ps -efl
。如果这不起作用(我没有方便的Solaris盒子),你也可以尝试ps -efl | cat
(因为有些程序会检查它们是否输出到终端来决定它们的输出宽度)。