方便的日期/時間戳控制台交互,例如使用 shell 別名?

方便的日期/時間戳控制台交互,例如使用 shell 別名?

因此,我經常發現,在發現一個進程(或腳本)花費了很長時間之後,我真的很想知道何時啟動該進程(或腳本)。之後預先添加日期(不中斷)我現在知道的事情需要很長時間)..然後當我離開終端時該過程可能會完成。

這讓我開始思考 - 是否有可能扭曲 shell 別名,以便在每個命令列條目之前和之後預設情況下調用“日期”?有時能夠在終端機中向後滾動並了解需要多長時間,這將非常有用。

其他人有聰明的方法來解決這個問題嗎?

就這種方法的解決方案而言,我猜它與這個問題有點相關。 使用初始命令運行互動式 bash 子 shell,而不立即返回(“超級”) shell

很明顯您可以在前面添加命令..但這只是解決方案的一部分。也許預先掛起然後讓 shell 提示顯示當前時間將是一個相當巧妙的解決方案?

想法?

答案1

您只需修改 shell 提示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根據需要進行修改。

然後您可以確定何時執行任何命令。當然,如果你在按下回車之前閒置了很長時間,你將無法獲得準確的時間。

編輯:另一種可能性是使用ts實用程式來顯示腳本的進展。執行您的腳本:

$ /path/to/script | ts

每個 echo 語句都會顯示一個時間戳記。

答案2

筆記:這不是對OP所問問題的直接答案,但也許對解決它的問題很有用。

對於已經啟動的進程,您可以檢索開始日期/時間,發出一個簡單的ps ax -F.它將顯示類似於以下內容的輸出:

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

如您所見,第 8 欄顯示開始日期/時間。

相關內容