PSコマンドの完全な出力の表示


163

ps -auxputtyを使用して接続したLinuxサーバーでコマンドを実行すると、現在のウィンドウ幅に収まらないほど長いプロセスはありません。代わりはありますか?

-更新-

ダウングレードしてごめんなさい、他の人も答えが役に立たないと思ったのでダウングレードしました。

ここにあなたが求めた情報があります。

hadoop-user@hadoop-desk:~$ echo $TERM
xterm

hadoop-user@hadoop-desk:~$ stty -a
speed 38400 baud; rows 47; columns 158; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany -imaxbel -iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke

hadoop-user@hadoop-desk:~$ echo $COLUMNS
158

余談ですが、提供する情報は非常に少ないため、これまでに得たすべての回答に反対票を投じるべきではありません。私たちはあなたを助けようとしています。あなたはの出力を投稿する必要がありecho $TERMstty -aecho $COLUMNSあなたの質問インチ
Alok Singhal、2010年

試しstty ocrnlおよび/またはstty sane
Alok Singhal、2010年

29
ps axuwwそれが答えです;)少なくとも私にとっては。二倍にwwなった。
brutuscat 2012年

回答:


145

それはあなたのようなページャを使用している可能性があるlessmostの出力がps aux長い画面分以上です。その場合、次のオプションを使用すると、長い行が切り捨てられる代わりに折り返されます(または強制されます)。

ps aux | less -+S

ps aux | most -w

次のいずれかのコマンドを使用すると、行は折り返されませんが、矢印キーまたはその他の移動キーを使用して、左右にスクロールできます。

ps aux | less -S    # use arrow keys, or Esc-( and Esc-), or Alt-( and Alt-) 

ps aux | most       # use arrow keys, or < and > (Tab can also be used to scroll right)

行は常にためにラップされているmorepg

ときにps auxパイプに使用され、w以降のオプションは不要でありps、出力が端末である場合にのみ、画面幅を使用します。


21
参照:Linuxでのカーネルのコードにハードコードされた4096文字の制限が依然として存在していることをしてくださいノートstackoverflow.com/questions/199130/...
マリアーノPaniga

3
@MarianoPaniga:あなたはそのコメントで私の命を救った。
スタック型の2014

最も?もっと意味ですか?
Mike Furlender 2018

@MikeFurlender:いいえ、most別のポケットベルです。回答にリンクを追加しました。
追って通知があるまで一時停止。

@DennisWilliamson wパイプを使用するときに不要であるというあなたの声明は、システムに依存しているようです。openSUSE Leap 15.0とUbuntu 18.04の両方で、ターミナル幅ps aux | grep <something>ps切り捨てられた出力に似たコマンドが作用します。
pkeller

149

auxwwフラグを使用すると、ターミナルウィンドウとシェルスクリプトの両方に出力へのフルパスが表示されます。

darragh@darraghserver ~ $uname -a
SunOS darraghserver 5.10 Generic_142901-13 i86pc i386 i86pc

darragh@darraghserver ~ $which ps
/usr/bin/ps<br>

darragh@darraghserver ~ $/usr/ucb/ps auxww | grep ps
darragh 13680  0.0  0.0 3872 3152 pts/1    O 14:39:32  0:00 /usr/ucb/ps -auxww
darragh 13681  0.0  0.0 1420  852 pts/1    S 14:39:32  0:00 grep ps

ps auxすべてのユーザーが実行したすべてのプロセスをリストします。詳細man psについては、を参照してください。wwフラグは、無制限の幅を設定します。

-w         Wide output. Use this option twice for unlimited width.
w          Wide output. Use this option twice for unlimited width.

次のブログで答えを見つけました。http
//www.snowfrog.n​​et/2010/06/10/solaris-ps-output-truncated-at-80-columns/


10
すべてのシステム(組み込みLinux)に「ほとんど」、「より多く」、または「より少ない」ページャーが含まれているわけではないため、これは現在受け入れられているソリューションよりも良い答えです。
frakman1

または、ps auxf > ps.log
Marslo 2018年


64

猫に投げるだけで、自動的に折り返されます

ps aux | cat

詳しく説明できます。
MZaragoza 14年

10
BusyBoxのような軽量のLinuxディストリビューションに適したソリューションであり、高度なツールを利用できません:)
Lion

覚えやすい!
fzN

とてもシンプルです。catコマンドはそこにあるすべてのnixボックスにあります。
リゲマー2018年

15

w秒経過すると、表示幅は無視されます。


複数追加してみましたか?
Ignacio Vazquez-Abrams

5.以上を追加しようとしましたが、どういうわけか、完全なコマンドが表示されません。
ブール演算、

1
3に到達すると、すべてが表示されます。そこに示されているもの以外は、どのプログラムから見えません。別の問題があります。
Ignacio Vazquez-Abrams、

11

出力形式を手動で指定する場合は、argsオプションが出力フィールドのリストの最後にあることを確認する必要もあります。そうでない場合、切り捨てられます。

ps -A -o args,pid,lstart 与える

/usr/lib/postgresql/9.5/bin 29900 Thu May 11 10:41:59 2017
postgres: checkpointer proc 29902 Thu May 11 10:41:59 2017
postgres: writer process    29903 Thu May 11 10:41:59 2017
postgres: wal writer proces 29904 Thu May 11 10:41:59 2017
postgres: autovacuum launch 29905 Thu May 11 10:41:59 2017
postgres: stats collector p 29906 Thu May 11 10:41:59 2017
[kworker/2:0]               30188 Fri May 12 09:20:17 2017
/usr/lib/upower/upowerd     30651 Mon May  8 09:57:58 2017
/usr/sbin/apache2 -k start  31288 Fri May 12 07:35:01 2017
/usr/sbin/apache2 -k start  31289 Fri May 12 07:35:01 2017
/sbin/rpc.statd --no-notify 31635 Mon May  8 09:49:12 2017
/sbin/rpcbind -f -w         31637 Mon May  8 09:49:12 2017
[nfsiod]                    31645 Mon May  8 09:49:12 2017
[kworker/1:0]               31801 Fri May 12 09:49:15 2017
[kworker/u16:0]             32658 Fri May 12 11:00:51 2017

しかしps -A -o pid,lstart,args、完全なコマンドラインを取得します:

29900 Thu May 11 10:41:59 2017 /usr/lib/postgresql/9.5/bin/postgres -D /tmp/4493-d849-dc76-9215 -p 38103
29902 Thu May 11 10:41:59 2017 postgres: checkpointer process   
29903 Thu May 11 10:41:59 2017 postgres: writer process   
29904 Thu May 11 10:41:59 2017 postgres: wal writer process   
29905 Thu May 11 10:41:59 2017 postgres: autovacuum launcher process   
29906 Thu May 11 10:41:59 2017 postgres: stats collector process   
30188 Fri May 12 09:20:17 2017 [kworker/2:0]
30651 Mon May  8 09:57:58 2017 /usr/lib/upower/upowerd
31288 Fri May 12 07:35:01 2017 /usr/sbin/apache2 -k start
31289 Fri May 12 07:35:01 2017 /usr/sbin/apache2 -k start
31635 Mon May  8 09:49:12 2017 /sbin/rpc.statd --no-notify
31637 Mon May  8 09:49:12 2017 /sbin/rpcbind -f -w
31645 Mon May  8 09:49:12 2017 [nfsiod]
31801 Fri May 12 09:49:15 2017 [kworker/1:0]
32658 Fri May 12 11:00:51 2017 [kworker/u16:0]

9

たとえば、コマンドとプロセスIDだけを表示するように、出力形式を設定できます。

ps -eo pid,args

その他の出力形式については、psのmanページを参照してください。-wまたは、または--width nオプションを使用できます。

他のすべてが失敗した場合は、ここに別の回避策があります(長いコマンドを確認するだけです)

awk '{ split(FILENAME,f,"/") ; printf "%s: %s\n", f[3],$0 }' /proc/[0-9]*/cmdline

1
順序を変更して再試行してください。pid、args
ghostdog74

3

パーティーに遅れて申し訳ありませんが、問題に対するこの解決策を見つけました。

psは$ COLUMNSの値の使用を要求するため、出力がその時点で画面でなくても、行は切り捨てられます。これはバグです。しかし、簡単に回避するには、psにスーパーワイドスクリーンがあると考えさせる、つまり、psコマンドの実行中はCOLUMNSを高く設定します。例:

$ ps -edalf                 # truncates lines to screen width
$ COLUMNS=1000 ps -edalf    # wraps lines regardless of screen width

これがまだ誰かに役立つことを願っています。他のすべてのアイデアは非常に複雑すぎるように見えました:)


1

上記の解決策のいずれも機能しない場合、の出力psはあなたの問題ではありません。多分あなたは長い行ラップするようにパテを設定する必要がありますか?

それ以外の場合は、さらに情報が必要です。


しかたがない。変なことが起こっています。
Alok Singhal、2010年

1

あなたならばgrep、あなたがPS AUXからのパイプとを探しているコマンドは、自動的にテキストをラップします。私はここで他の多くの答えを使用しましたが、特定の何かを探している場合は、単に使用するのが良いですし、それがgrep行を折り返すことを知っています。

例えばps aux | grep ffmpeg



0

他の人が言及した切り捨ての証拠(個人的な例)

foo=$(ps -p 689 -o command); echo "$foo"

COMMAND
/opt/conda/bin/python -m ipykernel_launcher -f /root/.local/share/jupyter/runtime/kernel-5732db1a-d484-4a58-9d67-de6ef5ac721b.json

その^^は変数にその長い出力をキャプチャします

ps -p 689 -o command

COMMAND
/opt/conda/bin/python -m ipykernel_launcher -f /root/.local/share/jupyter/runtim

私はこれをDocker jupyterノートブックから試していたので、もちろんこれを強打して実行する必要がありました。

!foo=$(ps -p 689 -o command); echo "$foo"

驚いたことに、jupyterノートブックならそれも実行できます!しかし、すべての私のメモリを消費している問題のあるノートブックを見つけるのを手伝ってうれしい= D

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.