クマの手も借りたい
馬とテニスとリラックマが好きな IT 系のエンジニアです。
Linux

Linuxのプロセス表示で実行中コマンドの最後まで見る

Linuxでプロセスを表示する時、実行中のコマンドなどが長い場合にコンソール画面に納まらずに切れてしまうことがあります。

今回は画面から見切れてしまっているプロセスの情報を折り返して確認する方法を紹介します。

プロセスの確認

プロセスの確認は ps コマンドですが、私は ef オプションを使うことが多いです。

$ ps -ef

例えば、nginx や Jenkins のサービスを起動しているサーバのプロセスを見てみるとこんな感じです。

Jenkins のプロセスが切れてしまってますね。

UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0  2017 ?        00:00:04 /sbin/init
root      7363     1  0 Jul16 ?        00:00:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
nginx     7365  7363  0 Jul16 ?        00:41:19 nginx: worker process                   
nginx     7366  7363  0 Jul16 ?        00:00:45 nginx: cache manager process            
root      7451     2  0 Jul08 ?        00:00:35 [kworker/u30:1]
nginx    15977 25371  0 May17 ?        00:50:18 php-fpm: pool www
jenkins  19631     1  0 Jul25 ?        00:08:30 /etc/alternatives/java -Dcom.sun.akuma.Daemon=daemonized -Djava.awt.headless=true -Dh

プロセスの全体確認

そんな時、w オプションを使用すると解決します。

w の数によって表示幅が増えていった記憶があったのですが、最近のカーネルでは変わったのでしょうか。

AmazonLinux では ww で実現できました。

$ ps -efww

これで Jenkins の長いプロセスの情報も複数行に折り返されて表示されます。

jenkins  19631     1  0 Jul25 ?        00:08:31 /etc/alternatives/java -Dcom.sun.akuma.Daemon=daemonized -Djava.awt.headless=true -Dhudson.util.ProcessTree.disable=true -Dorg.apache.commons.jelly.tags.fmt.timeZone=Asia/Tokyo -DJENKINS_HOME=/var/lib/jenkins -jar /usr/lib/jenkins/jenkins.war --logfile=/var/log/jenkins/jenkins.log --webroot=/var/cache/jenkins/war --daemon --httpPort=8080 --debug=5 --handlerCountMax=100 --handlerCountMaxIdle=20 --httpPort=8080

w オプションの説明は以下の通り。man で確認してみてくださいね。

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

Web API The Good Parts

オライリーの「Web API」に特化した本です。最近の多くの Web サービスは API が活用されていますが、その技術はこれまでの Web サイトとそれほど大きく変わりません。

今後、マイクロサービス化が進む中で知っておいて損はない内容が詰め込まれており、現場のエンジニアやこれから Web 系のエンジニアを目指す人にもオススメの一冊です。

created by Rinker
¥2,376
(2018/09/20 11:58:13時点 Amazon調べ-詳細)

あなたにオススメ