Shell linux中用户名过长时如何显示整个用户名
在我的项目中,我想在linux服务器的进程中选择用户名或用户ID 我使用的命令如下: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
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]'