![方便的日期/時間戳控制台交互,例如使用 shell 別名?](https://rvso.com/image/696999/%E6%96%B9%E4%BE%BF%E7%9A%84%E6%97%A5%E6%9C%9F%2F%E6%99%82%E9%96%93%E6%88%B3%E6%8E%A7%E5%88%B6%E5%8F%B0%E4%BA%A4%E4%BA%92%EF%BC%8C%E4%BE%8B%E5%A6%82%E4%BD%BF%E7%94%A8%20shell%20%E5%88%A5%E5%90%8D%EF%BC%9F.png)
因此,我經常發現,在發現一個進程(或腳本)花費了很長時間之後,我真的很想知道何時啟動該進程(或腳本)。之後預先添加日期(不中斷)我現在知道的事情需要很長時間)..然後當我離開終端時該過程可能會完成。
這讓我開始思考 - 是否有可能扭曲 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 欄顯示開始日期/時間。