长字符用户名的 ps aux 显示加号

Gio*_*nir 20 ps 14.04

我正在尝试从中获取输出ps aux,使其看起来像:

giovanni     28331  4381  0 15:43 ?       00:00:00 sshd: giovanni@pts/1
giovanni     28346 28331  0 15:43 pts/1   00:00:00 -bash
giovanni     28646 28346  0 15:43 pts/1   00:00:00 ./example.sh
Run Code Online (Sandbox Code Playgroud)

但是,在 Ubuntu 14.04 LTS 上运行此命令会提供以下内容:

giovan+     28331  4381  0 15:43 ?       00:00:00 sshd: giovanni@pts/1
giovan+     28346 28331  0 15:43 pts/1   00:00:00 -bash
giovan+     28646 28346  0 15:43 pts/1   00:00:00 ./example.sh
Run Code Online (Sandbox Code Playgroud)

那么如何删除这些加号并指示命令向我显示整个用户名呢?

Jac*_*ijm 29

根据man psps -aux是“使用标准(UNIX)语法查看系统上的每个进程”。我发现无法设置用户定义的格式来显示输出。

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

ps axo user:20,pid,pcpu,pmem,vsz,rss,tty,stat,start,time,comm
Run Code Online (Sandbox Code Playgroud)

具有(非常)长名称的输出:

USER                   PID %CPU %MEM    VSZ   RSS TT       STAT  STARTED     TIME COMMAND

.........................................................................................

root                  3826  0.0  0.1  77828  4788 ?        Ss   08:15:55 00:00:00 cupsd
lp                    3831  0.0  0.0  63156  2224 ?        S    08:15:56 00:00:00 dbus
lp                    3832  0.0  0.0  63156  2220 ?        S    08:15:56 00:00:00 dbus
root                  4822  1.7  5.1 446964 210416 tty8    Ss+  08:38:00 00:03:27 Xorg
root                  4923  0.0  0.1 174652  4412 ?        Sl   08:38:02 00:00:00 lightdm
tantemarievanhier     5181  0.0  0.1 544216  4796 ?        Sl   08:38:08 00:00:00 gnome-keyring-d
tantemarievanhier     5228  0.0  0.0  40492  2740 ?        Ss   08:38:08 00:00:00 init
tantemarievanhier     5369  0.0  0.0  41816  3064 ?        Ss   08:38:09 00:00:02 dbus-daemon
tantemarievanhier     5376  0.0  0.0  10616   316 ?        Ss   08:38:09 00:00:00 ssh-agent
Run Code Online (Sandbox Code Playgroud)

将列宽设置为 7:

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

USER     PID  %CPU %MEM    VSZ   RSS TT       STAT  STARTED     TIME COMMAND

.........................................................................................

tantem+  6623  0.0  0.0 287228  3820 ?        Sl   08:39:00 00:00:00 unity-webapps-s
tantem+  6679  0.0  0.4 676856 18640 ?        Sl   08:39:20 00:00:00 update-notifier
tantem+  6721  0.0  0.1 541224  7056 ?        Sl   08:40:20 00:00:00 deja-dup-monito
tantem+  6743  0.0  0.5 810616 21888 ?        Sl   08:41:55 00:00:00 unity-scope-hom
tantem+  6758  0.0  0.2 717256 10352 ?        Sl   08:41:55 00:00:00 unity-files-dae
tantem+  6760  0.0  0.5 607208 22920 ?        Sl   08:41:55 00:00:00 unity-scope-loa
tantem+  6784  0.0  0.2 350676  9060 ?        Sl   08:41:56 00:00:00 unity-music-dae
Run Code Online (Sandbox Code Playgroud)

为方便起见,您可以将以下行添加到~/.bashrc

alias psaux='ps axo user:20,pid,pcpu,pmem,vsz,rss,tty,stat,start,time,comm'
Run Code Online (Sandbox Code Playgroud)

所以这ps aux是“正常”输出,同时psaux为您提供全名版本。

笔记:

您还可以通过将名称列移动到最后一个位置来显示全名:

ps axo pid,pcpu,pmem,vsz,rss,tty,stat,start,time,comm,user
Run Code Online (Sandbox Code Playgroud)

给出:

 PID %CPU %MEM    VSZ   RSS TT       STAT  STARTED     TIME COMMAND         USER


 5181  0.0  0.1 544216  4548 ?        Sl   08:38:08 00:00:00 gnome-keyring-d tantemarievanhier
 5228  0.0  0.0  40492  2668 ?        Ss   08:38:08 00:00:00 init            tantemarievanhier
 5369  0.0  0.0  41816  3032 ?        Ss   08:38:09 00:00:07 dbus-daemon     tantemarievanhier
Run Code Online (Sandbox Code Playgroud)

如何显示输出,自动设置 USER 列的宽度

还有另一种更精细的方法来设置 USER- 列的宽度。如果我们使用 USER 列宽的非常高的值运行命令,我们可以使用一个小脚本来重新排列行,将列宽调整为最长的用户名。

这样做

  • 复制下面的脚本,将其粘贴到一个空文件中,将其另存为psaux_alternative.py.
  • 使其可执行
  • 添加一行到您的~/.bashrc

    alias psaux='/path/to/psaux_alternative.py`
    
    Run Code Online (Sandbox Code Playgroud)

然后,psaux在终端窗口中运行将显示具有 USER 列自动宽度的输出。

剧本:

ps axo user:20,pid,pcpu,pmem,vsz,rss,tty,stat,start,time,comm
Run Code Online (Sandbox Code Playgroud)

  • @GiovanniMounir 我制作了一个小脚本来完成这项工作。运行它会显示USER列的输出宽度自动宽度。 (2认同)