如何在solaris中获得完整的进程列表,而没有截断的行?


57

有没有一种方法可以在solaris中生成完整的过程清单,而不会出现断线?我已经尝试过ps使用以下参数的命令:

  -f生成完整列表。(请参阅下面的
                      完整列表中各列的重要性-
                      ing。)
  -l生成长列表。(见下文。)

因此,这两者似乎都可以满足我的要求,但是在ps手册页中,我发现了这一点:

 
 args该命令及其所有参数为
                         串。实现可能会截断
                         该值等于场宽;它是
                         依赖于实现
                         进一步的截断发生。它是
                         未指定字符串
                         表示的是参数的一个版本
                         传递给命令的列表
                         它何时开始,或者是
                         参数可能已被修改
                         通过应用程序。应用程序无法
                         取决于能够修改他们的
                         参数列表并进行修改
                         反映在ps的输出中。
                         Solaris实施限制了
                         字符串到80个字节; 字符串是
                         参数列表的原样
                         启动时传递给命令。

基本上说输出将被截断,对此我无能为力。所以,我要来这里。当然,其他人也遇到了这个问题,甚至有办法解决。我猜想ps无法做到这一点,所以我需要使用其他工具来做到这一点。准确吗?


您在说ps命令吗?如果是这样,请更新问题,使问题更清楚。
phunehehe

是的,很抱歉...我最初的修改是使用ps命令,我已经使问题更清楚了。
gabe。

Answers:


63

你可以尝试

pargs <PID>

这为您提供了所有参数的列表

否则使用其他ps。如果以root用户身份运行(或具有足够权限的任何用户)

/usr/ucb/ps auxww

会给你所有的争论。SUNWscpu的一部分,“源兼容性,(苏联)”


pargs显示命令行参数(以及环境)的进程内副本。很高兴知道,谢谢!
吉尔斯(Gilles)2010年

1
整个/ usr / ucb目录对我来说是新的...我喜欢它!
gabe。

2
在Solaris 11上,如果您使用不带破折号的选项(例如“ / usr / bin / ps auxwww”),它们将被视为UCB样式选项,即使您不是以root身份运行,输出也会显示额外的长行。这没有得到很好的宣传。另请参见:superuser.com/questions/148271/ps-command-in-solaris
Chris Quenelle

14

不需要内核来跟踪命令行参数。通过execve调用启动程序时,内核必须将参数复制到进程存储器中(例如,它们将像argv在C程序中一样可用)。之后,内核可以丢弃用于存储初始命令行参数的内存。允许进程覆盖其参数副本。因此,可能根本就没有论据的痕迹。

一些unix变体确实以某种形式保留了参数的副本。Solaris在中公开了一些数据/proc/$pid。从OpenSolaris 2009.06开始,参数的唯一踪迹是在中/proc/$pid/psinfo,它们之间用空格隔开(因此您不能区分foo "one" "two"foo "one two"),结果字符串被截断为80个字节。该字段/proc/$pid/psinfo是列中ps打印的内容args

顺便说一句,-f-l选项控制要打印哪些字段,而不是控制这些字段是否被截断为某个宽度。


这也是一个很好的答案,非常有用。pargs命令更好地满足了我的需求,这是我选择此答案的唯一原因。
gabe。

6
因此,我们在2013年再次坐在这里,但仍然将字符串截断为80个字节,因为在1970年代我们只有80个字符的终端,并且“某些”程序尚未了解生活还在继续发展的事实。而且我们喜欢它,我们称赞它为“兼容性”!我们应该为自己感到羞耻……
Manjabes

1
@Manjabes哈哈!选择继续使用Solaris的人们不应抱怨该系统以过时的方式运行;-) Solaris故意更改缓慢,以便与期望某些行为的较旧程序更加向后兼容。如果您想要一个具有更长ps列表和更多实用功能的操作系统,则可以改用Linux。
JohnGH


0

根据ps您使用的命令,我使用

ps -auxw

1
在Solaris上使用auxw参数的ps版本不需要以“-”开头。如果您不在Solaris上,则答案与之无关。
JohnGH

0

prstat 将为您提供当前正在运行的进程及其pid和CPU利用率。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.