Shell linux中用户名过长时如何显示整个用户名

Shell linux中用户名过长时如何显示整个用户名,shell,Shell,在我的项目中,我想在linux服务器的进程中选择用户名或用户ID 我使用的命令如下: ps aux | grep -v root 我得到了一些这样的内容: mae-wan+ 34325 99.7 0.5 1717096 1056124 ? Rl Apr18 1533:33 ./turb mae-wan+ 34326 99.7 0.5 1717128 1057284 ? Rl Apr18 1533:35 ./turb mae-wan+ 34327 99.7 0

在我的项目中,我想在linux服务器的进程中选择用户名或用户ID

我使用的命令如下:

ps aux | grep -v root
我得到了一些这样的内容:

mae-wan+  34325 99.7  0.5 1717096 1056124 ?     Rl   Apr18 1533:33 ./turb
mae-wan+  34326 99.7  0.5 1717128 1057284 ?     Rl   Apr18 1533:35 ./turb
mae-wan+  34327 99.7  0.5 1716992 1056860 ?     Rl   Apr18 1533:41 ./turb
mae-wan+  34328 99.7  0.5 1717244 1056644 ?     Rl   Apr18 1533:43 ./turb
mae-wan+  34329 99.7  0.5 1717100 1054616 ?     Rl   Apr18 1533:43 ./turb
mae-wan+  34330 99.5  0.5 1717100 1057640 ?     Rl   Apr18 1530:33 ./turb
第一列是:

mae-wan+
因此,整个名称应为:

mae-wangjc
也许,mae wangjc的名字太长了,它显示给了mae wan+

因此,我不得不使用:

ll /proc/34325 | awk '{print $3}' | uniq
我能成功地得到“mae wangjc”这个名字。但我认为一个一个地解决每一个过程是丑陋的


哪个命令可以显示整个用户名而不是缩写名称?

根据man ps,ps-aux是“使用BSD语法查看系统上的每个进程”

但是,在标准语法中,可以设置列的宽度,如:user:。以下内容应提供相同的信息,将用户名列宽设置为20(或任何其他值):

结果如下:

mae-wangjc  34325 99.7  0.5 1717096 1056124 ?     Rl   Apr18 1533:33 ./turb
mae-wangjc  34326 99.7  0.5 1717128 1057284 ?     Rl   Apr18 1533:35 ./turb
mae-wangjc  34327 99.7  0.5 1716992 1056860 ?     Rl   Apr18 1533:41 ./turb
mae-wangjc  34328 99.7  0.5 1717244 1056644 ?     Rl   Apr18 1533:43 ./turb
mae-wangjc  34329 99.7  0.5 1717100 1054616 ?     Rl   Apr18 1533:43 ./turb
试试这个:

$  ps aunx | perl -lane 'BEGIN{$, = "\t"} print getpwuid $F[0] // $F[0], @F[1..$#F]'
n
选项打印出uid而不是用户名,然后perl位查找uid的用户名(如果没有相关名称,则继续使用uid),并打印出带有制表符分隔列的行。

跨站点复制
$  ps aunx | perl -lane 'BEGIN{$, = "\t"} print getpwuid $F[0] // $F[0], @F[1..$#F]'