在Solaris 中,/usr/ucb/ps auxww
给出完整的命令行参数(不截断长命令+参数)。
并且ps
有 -o 选项提供格式化输出。
是否有一个命令(或单行命令)具有这两种功能?
注意:该问题还与在特定宽度之后截断参数有关,ps
因此需要/usr/ucb/ps
.
答案1
据我所知,没有一个命令。
Solarisps
从以下位置获取诸如命令行参数之类的进程数据:/proc/[PID]/psinfo
文件,其中包含填充struct psinfo
每个的数据/usr/include/sys/procfs.h
:
#define PRARGSZ 80 /* number of chars of arguments */
typedef struct psinfo {
int pr_flag; /* process flags (DEPRECATED; do not use) */
int pr_nlwp; /* number of active lwps in the process */
.
.
.
char pr_fname[PRFNSZ]; /* name of execed file */
char pr_psargs[PRARGSZ]; /* initial characters of arg list */
...
因此您无法从 中获取整套命令行参数/usr/bin/ps
。您可以/usr/ucb/ps ...
像您已经注意到的那样使用并使用awk
类似的方法格式化您的输出。还有pargs
,它可用于发出命令行参数。 (安装位置pargs
因 Solaris 版本而异。)
但请注意,进程可以修改其参数,并且要获取完整的参数信息需要读取进程地址空间的权限。
答案2
ps -eo args
我认为如果您想查看每个参数,您可以使用
无论如何,您可以将第一个示例与更多选项结合起来
ps -eo user,pid,args