Linuxでプロセスを表示する時、実行中のコマンドなどが長い場合にコンソール画面に納まらずに切れてしまうことがあります。
今回は画面から見切れてしまっているプロセスの情報を折り返して確認する方法を紹介します。
プロセスの確認
プロセスの確認は ps コマンドですが、私は ef オプションを使うことが多いです。
1 | $ ps -ef |
例えば、nginx や Jenkins のサービスを起動しているサーバのプロセスを見てみるとこんな感じです。
Jenkins のプロセスが切れてしまってますね。
1 2 3 4 5 6 7 8 | 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 で実現できました。
1 | $ ps -efww |
これで Jenkins の長いプロセスの情報も複数行に折り返されて表示されます。
1 | 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.