如何在Linux中用户名过长时显示整个用户名

时间:2019-04-19 01:48:40

标签: 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.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”。但是我认为一个接一个地解决每个过程是很丑的。

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

2 个答案:

答案 0 :(得分:1)

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

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

ps axo user:20,pid,pcpu,pmem,vsz,rss,tty,stat,start,time,comm

结果将是这样:

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

答案 1 :(得分:0)

尝试一下:

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

n选项打印出uid而不是用户名,然后perl位查找uid的用户名(如果没有关联的名称,则继续使用uid),并打印出带有tab的行-分隔的列。