who -b 日付形式が奇妙に変更されます。

who -b 日付形式が奇妙に変更されます。

who -b最後の再起動日を取得するために走りました。 2013年10月29日14時55分に復帰しました。これでデーモンによって実行されます(この日付をサーバーに送信します)。 10月29日14時55分を返します。ただし、他の場合(10月29日の最後の再起動前)には、常に2013-10-24 13:17と同じ内容が返されます。

最初の質問セット:環境のどの要因がこれを制御しますか? sudo ユーザーとデーモンとは異なる理由は何ですか?再起動の間に変更されたのはなぜですか?

別の質問:この日付を2013-10-29 14:55形式で指定する方法はありますか?フォーマットできますが、年がありません。 (つまり、who -bにどのフラグを渡すかを知っていますか?)

ベストアンサー1

これは、ロケールの変更によるものかもしれません。

$ locale | grep LC_TIME
LC_TIME="en_GB.UTF-8"
$ who -b
         system boot  2013-11-04 10:04
$ LC_TIME=C who -b
         system boot  Nov  4 10:04

ロケールが変更され、再起動するまで適用されなかった可能性があります(変更後に環境を更新していない可能性があります)。デーモンで異なって見えるのは、LC_TIMEの値が異なっているか、値がまったくない可能性があるためです。

次の方法を使用して日付を取得できます(オプションで、en_GB.UTF-8システムに対応するロケールがない可能性があるため、この形式を生成するロケールに置き換えます)。

$ LC_TIME=en_GB.UTF-8 who -b | awk '{ print $3 " " $4 }'
2013-11-04 10:04

おすすめ記事