我开始使用 Oracle Solaris 11.2 SPARC。
在Linux下,我可以写
ps aux | grep *some_data*
...但这在 Solaris 上没有显示任何结果。
相反我需要说
ps auxww | grep *some_data*
我查看了man ps
有关的更多信息ww
如果选项字母重复,即-ww,该选项使用任意宽的输出
为什么我需要使用ww
来获取任何东西grep
?
答案1
无论是在 Linux 还是 Solaris 下,您都在使用非标准 BSD 选项。
可移植的方式是使用-o
选项来指定要显示哪些字段,例如此处ps -o pid,args
。请注意,除非您使用最近的 11.3 更新或更高版本,否则参数列表将限制为 80 个字符,除非您是 root 或拥有该进程。
或者,您可以使用pgrep -f
which 来搜索完整的命令行。
答案2
在 Linux 上,该ps
命令检测输出是否到终端。如果是终端,则会将输出截断为终端宽度。如果它不在终端上,那么它不会被截断。实际上,它的行为就像自动添加ww
标志一样。
ps aux
您可以通过键入和查看差异ps aux | cat
在您的示例中,您将输出通过管道传输到grep
,因此它的作用就像您键入了ps auxww | grep
.
为了可移植性,ww
如果您想查看超过(例如)80 个字符的所有数据,您应该始终使用这些标志。
注意:您使用的是 BSD 形式的ps
命令,因此在 Solaris 上请确保您调用的是正确的命令!