長い文字のユーザー名のps auxにプラス記号が表示される


18

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

ただし、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

これらのプラス記号を削除して、代わりにユーザー名全体を表示するようにコマンドに指示するにはどうすればよいですか?


1
それは面白いです、私のユーザー名は同じ長さであり、切り捨てられません
ジェイミー

回答:


24

によるとman psps -aux標準(UNIX)構文を使用してシステム上のすべてのプロセスを表示するには」です。出力を表示するためにユーザー定義の形式を設定する方法が見つかりませんでした。

ではBSD構文:しかし、あなたのような列の幅を設定することができますuser:<width>。以下は同じ情報を提供し、ユーザー名列の幅を20(またはその他の値)に設定します。

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

(非常に)長い名前の出力:

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

列幅を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

便宜上、次の行をに追加できます~/.bashrc

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

これがps aux「通常の」出力でありpsaux、完全な名前バージョンを提供します。

注意:

名前列を最後の位置に移動することによって、フルネームを表示することもできます。

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

与える:

 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

出力を表示し、USER列の幅を自動的に設定する方法

USER-列の幅を設定する別のより洗練された方法があります。USER列幅に非常に高い値を指定してコマンドを実行すると、小さなスクリプトを使用して行を再配置し、列幅を最長のユーザー名に調整できます。

そうするには

  • 以下のスクリプトをコピーし、空のファイルに貼り付けて、名前を付けて保存しますpsaux_alternative.py
  • 実行可能にする
  • に次の行を追加します~/.bashrc

    alias psaux='/path/to/psaux_alternative.py`
    

次に、psauxターミナルウィンドウで実行すると、USER列の幅が自動的に設定された出力が表示されます。

スクリプト:

#!/usr/bin/env python3

import subprocess

command = "ps axo user:30,pid,pcpu,pmem,vsz,rss,tty,stat,start,time,comm"
l = subprocess.check_output(["/bin/bash", "-c", command]).decode("utf-8").split("\n")
minlen = sorted(set([30-len(item.split(" ")[0]) for item in l]))[0]
for line in l:
    print(line[:30-minlen]+line[30:])

これは非常に良い回避策です、ジェイコブに感謝します!しかし、これを行う適切な方法があると思いますか?私がやったことは列幅を広げることでしたが、最大のユーザー名の長さに応じてUbuntuにこの幅を自動的に広げさせる方法はありませんか?
ジョヴァンニムニール

@GiovanniMounir今、それは興味深い質問です!はい、可能です。遅くとも明日または明後日に連絡します。
ジェイコブVlijm

2
@GiovanniMounir私は仕事をするために小さなスクリプトを作りました。実行すると、USER列の出力幅の自動幅が表示されます。
ジェイコブVlijm 14

素晴らしい回避策、ジェイコブ!どうもありがとうございました!
ジョヴァンニムニール14

@JacobVlijmとても素敵なものです!私は再び...すべての目的のために、あなたのスクリプトに感銘を受けています; D
バイト司令

1

同じ問題が発生しました。psマニュアルは、WIDE-WCHAN-COLUMNについて説明しています。並列に形成されたWIDE-RUSER-COLUMNを使用したスマートトライは、望ましい結果で終わりました。

$ ps -e -o ruser=WIDE-RUSER-COLUMN

コマンドを説明するコンテキストを回答に追加してください。歓迎と感謝
αғsнιη

@KasiyA編集されました。
バイトコマンダー

@ByteCommanderなるほど。ところで、私はダウン投票した人ではありません:( +1を彼のため。
αғsнιη15年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.