PSコマンドで起動した時間順にソートする

2017-08-04

PSコマンドでプロセスが起動した起動時刻順に並び替える

以前にPSコマンドの記事で「PSコマンドでプロセスの起動時刻を調べる」を書きましたが、サーバを運用していると起動時刻の古い順番でソートしたいケースがあったのでその方法を調べました。

PSコマンドのソートオプション

PSコマンドでは、「–sort spec」、「k spec」のようにすればできます。「spec」で指定した順番にソートされます。

ソートキーは色々あります。pcpuはCPUの使用率、rssはタスクが実行している物理メモリだったりします。詳しくはPSコマンドのManページ内の「標準フォーマット指定子」が参考になると思います。

Man page of PS

PSコマンドの起動時間順にソートする場合のオプション

時間別のソートキーは「start_time」です。
オプションを含めると、「–sort start_time」、「kstart_time」とすれば、プロセスが起動した時刻順番でソートできます。
また「–sort -start_time」、「k-start_time」のように、ソートキーの前に「」をつければば降順にソートされます。起動時間順ですので、この場合は最近のプロセス順となります

以下では、httpd プロセスでソートキーを起動時間として表示しています。起動時間での昇順ですので起動時間が古い順となります

# httpdプロセスの起動時間の古い順で上位5個表示しています(オプションは、--sort start_time)
$ ps aux --sort start_time | grep httpd | grep -v grep | head -5
root     10330  0.0  0.0 578736  1364 ?        Ss    6月29   1:56 /usr/sbin/httpd -DFOREGROUND
apache   21009  0.0  0.0 267880   196 ?        S     7月23   0:05 /usr/sbin/httpd -DFOREGROUND
apache   30288  0.9  3.8 784528 80468 ?        S    10:49   0:36 /usr/sbin/httpd -DFOREGROUND
apache   30748  0.6  4.5 784828 95044 ?        S    10:53   0:23 /usr/sbin/httpd -DFOREGROUND
apache   32115  0.4  3.2 691472 67900 ?        S    11:06   0:13 /usr/sbin/httpd -DFOREGROUND

# httpdプロセスの起動時間の古い順で上位5個表示しています(オプションは、kstart_time)
$ ps -ef kstart_time | grep httpd | grep -v grep | head -5
root     10330     1  0  6月29 ?      Ss     1:56 /usr/sbin/httpd -DFOREGROUND
apache   21009 10330  0  7月23 ?      S      0:05 /usr/sbin/httpd -DFOREGROUND
apache   30288 10330  0 10:49 ?        S      0:36 /usr/sbin/httpd -DFOREGROUND
apache   30748 10330  0 10:53 ?        S      0:23 /usr/sbin/httpd -DFOREGROUND
apache   32115 10330  0 11:06 ?        S      0:13 /usr/sbin/httpd -DFOREGROUND


以下では、httpd プロセスでソートキーを起動時間として表示しています。起動時間での降順ですので起動時間が新しい順となります
# httpdプロセスの起動時間の新しい順で上位5個表示しています(オプションは、--sort -start_time)
$ ps aux --sort -start_time | grep httpd | grep -v grep | head -5
apache    3995  0.0  0.3 579700  7328 ?        S    11:50   0:00 /usr/sbin/httpd -DFOREGROUND
apache    3546  0.4  2.8 593232 60804 ?        S    11:48   0:01 /usr/sbin/httpd -DFOREGROUND
apache    3543  0.6  2.1 585640 45996 ?        S    11:47   0:01 /usr/sbin/httpd -DFOREGROUND
apache    3544  0.2  2.1 585500 45748 ?        S    11:47   0:00 /usr/sbin/httpd -DFOREGROUND
apache    3528  0.7  2.7 692320 57296 ?        S    11:47   0:02 /usr/sbin/httpd -DFOREGROUND

# httpdプロセスの起動時間の新しい順で上位5個表示しています(オプションは、k-start_time)
$ ps -ef k-start_time | grep httpd | grep -v grep | head -5
apache    3995 10330  0 11:50 ?        S      0:00 /usr/sbin/httpd -DFOREGROUND
apache    3546 10330  0 11:48 ?        S      0:01 /usr/sbin/httpd -DFOREGROUND
apache    3543 10330  0 11:47 ?        S      0:01 /usr/sbin/httpd -DFOREGROUND
apache    3544 10330  0 11:47 ?        S      0:00 /usr/sbin/httpd -DFOREGROUND
apache    3528 10330  0 11:47 ?        S      0:02 /usr/sbin/httpd -DFOREGROUND

スポンサーリンク