有没有一种方法可以在一个 ps 命令中组合格式化输出和完整命令参数?

有没有一种方法可以在一个 ps 命令中组合格式化输出和完整命令参数?

在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

相关内容