クマの手も借りたい
茶トラネコ(@kumanotemo)です。上場を控えたITベンチャーを2社も退職してフリーランスの道を選んだ放浪エンジニアです。
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.

やさしいKotlin入門

プログラミング初心者または Kotlin 初心者向けの入門本。Android 開発ではなく Kotlin の言語を覚えてみたい方にオススメの入門本です。

Java と比較して説明される書籍が多い中、Java や他のプログラム言語を知らない人向けになるので、例えば Java はあまり詳しくないけど PHP や Python は書けるといったパターンとも相性がいいですよ。

あなたにオススメ