便利な日付/時刻スタンプのコンソール操作 (例: シェル エイリアスの使用)

便利な日付/時刻スタンプのコンソール操作 (例: シェル エイリアスの使用)

そのため、プロセス (またはスクリプト) に非常に長い時間がかかることがわかった後、いつプロセス (またはスクリプト) を開始したのかを本当に知りたいと思うことがよくあります。つまり、コマンド ラインでその前後に日付を付加することができませんでした (非常に長い時間がかかることがわかった処理を中断せずに)。そして、ターミナルから離れている間にプロセスが終了する可能性があります。

そこで私は考えました。シェルのエイリアシングを変更して、デフォルトですべてのコマンドライン入力の前後に「日付」が呼び出されるようにすることは可能でしょうか? 時々ターミナルでスクロールバックして、処理にどのくらいの時間がかかったかを把握できれば非常に便利です。

他の人はこれに対処する賢い方法を持っていますか? これはよくあるシナリオだと確信しています。

このアプローチによる解決策に関しては、この Q に少し関連しているのではないかと思います。 すぐに(「スーパー」)シェルに戻らずに、初期コマンドで対話型 bash サブシェルを実行します。

コマンドを先頭に追加できることは明らかですが、それは解決策の一部にすぎません。先頭に追加してからシェル プロンプトに現在の時刻を表示させるのが、かなり優れた解決策になるのではないでしょうか。

ご意見は?

答え1

シェル プロンプトPS1変数を変更するだけで、現在のタイムスタンプを表示できます。次のいずれかを使用できます。

\t     the current time in 24-hour HH:MM:SS format
\T     the current time in 12-hour HH:MM:SS format
\@     the current time in 12-hour am/pm format
\A     the current time in 24-hour HH:MM format

これらは、 の他のオプションとともに見つかりますman bash。必要に応じ.bashrcてファイルを編集して変更します。PS1

その後、コマンドがいつ実行されるかを確認できます。もちろん、Enter キーを押す前に長時間アイドル状態のままだと、正確な時刻は取得されません。

編集:もう 1 つの可能性は、tsユーティリティを使用してスクリプトの進行状況を表示することです。次のようにスクリプトを実行します。

$ /path/to/script | ts

各 echo ステートメントはタイムスタンプとともに表示されます。

答え2

注記:これは OP が尋ねていることに対する直接的な答えではありませんが、おそらく問題を解決するのに役立つかもしれません。

すでに開始されているプロセスの場合は、単純な を発行して開始日時を取得できますps ax -F。次のような出力が表示されます。

apache 1733 1678 0 83467 7752 0 10:07 ? S 0:00 /usr/sbin/httpd
apache 1734 1678 0 83467 7752 0 10:07 ? S 0:00 /usr/sbin/httpd
apache 1735 1678 0 83467 7752 0 10:07 ? S 0:00 /usr/sbin/httpd
apache 1736 1678 0 83467 7768 0 10:07 ? S 0:00 /usr/sbin/httpd
apache 1737 1678 0 83467 7752 0 10:07 ? S 0:00 /usr/sbin/httpd
apache 1738 1678 0 83467 7752 0 10:07 ? S 0:00 /usr/sbin/httpd

ご覧のとおり、8 列目には開始日時が表示されます。

関連情報