「ps」の出力アライメント

「ps」の出力アライメント

ps期待どおりに機能しない理由を理解しようとしています。マニュアルページに次のコマンドが表示され、ppid項目lstartlstart順番に並べられている必要があります。ただし、3つの異なる端末で同じコマンドを実行すると、次のようになります。

最初の学期:

gauthier@sobel:~/ $ ps -o ppid -o lstart --sort=lstart
 PPID                  STARTED
21142 Tue Dec 16 13:45:18 2014
 3383 Mon Dec 15 15:40:35 2014

2番目の用語:

gauthier@sobel:~/bin $ ps -o ppid -o lstart --sort=lstart
 PPID                  STARTED
19595 Tue Dec 16 13:45:03 2014
 3383 Mon Dec 15 14:49:14 2014

第三学期:

gauthier@sobel:~ $ ps -o ppid -o lstart --sort=lstart
 PPID                  STARTED
 3383 Tue Dec 16 13:39:05 2014
16357 Tue Dec 16 13:45:12 2014

ここで理解されていないいくつかのことがあります。

  • 項目 1 と 2 の項目は、最新の項目から先にソートされます。項目3の項目は、古い項目からソートされる。アルファベット順を考慮しても順番が異なります。

  • PPID 3383 は、3 つの用語すべてが同じですが、開始時間が異なります。プロセスは異なりますが、複数のPPIDが同じである可能性がありますか?


システムメッセージ:

$ ps -V
procps-ng version 3.3.9
$ uname -a
Linux sobel 3.13.0-37-generic #64-Ubuntu SMP Mon Sep 22 21:28:38 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

ベストアンサー1

ps --sort=lstartlstartによると、実際にはソートされていません。このサーバーエラーに関するご意見:

lstart完全なタイムスタンプを提供しますが、ソートキーとして使用することはできません。 start_time gives一般的な「過去24時間以内の時間、そうでない場合は日付」列で、ソートキーとして使用できます。

psこれはのマニュアルページに暗黙的に文書化されており、セクションの下にはリストされていませんが、リストされていますlstartOBSOLETE SORT KEYSstart_time

これソースコードこれもサポートされます。行1506で始まる定義を参照してください。

/* Many of these are placeholders for unsupported options. */
static const format_struct format_array[] = {
/* code       header     print()      sort()    width need vendor flags  */
[...]
{"lstart",    "STARTED", pr_lstart,   sr_nop,    24,   0,    XXX, ET|RIGHT},
[...]
{"start_time", "START",  pr_stime,    sr_start_time, 5, 0,   LNx, ET|RIGHT},
[...]
};

編集する:正解の説明を拡大し、原文から誤解の余地がある部分を削除しました。

おすすめ記事