我有一個提醒腳本,我試圖阻止垃圾郵件發送給我,所以我想提出一個條件,如果警報已發送,比如說最後一個小時,不發送另一個警報。現在我有一項cron工作,每分鐘檢查一次情況,因爲我需要在滿足條件時迅速收到警報,但是我不需要每隔一段時間都收到電子郵件,直到問題得到控制。在bash中比較時間的最佳方法是什麼?什麼是在Bash中執行時間戳比較的最佳方式
34
A
回答
60
目前最簡單的是存儲時間戳作爲虛擬的修改時間文件。 GNU touch
和date
命令可以設置/獲取這些時間並執行日期計算。 Bash有測試來檢查一個文件是否比(-nt
)更新或者比(-ot
)更新。
例如,只發送一個通知,如果最後的通知是一個多小時前更多:
touch -d '-1 hour' limit
if [ limit -nt last_notification ]; then
#send notification...
touch last_notification
fi
19
使用「測試」:
if test file1 -nt file2; then
# file1 is newer than file2
fi
編輯:如果你想知道當一個事件發生時,您可以使用「觸摸」創建一個文件,你可以在以後比較使用「測試」。
13
使用date命令將兩次轉換爲標準格式,並將它們相減。你可能會想以前的執行時間儲存在dotfile那麼這樣做:(謝謝你,史蒂夫)
last = cat /tmp/.lastrun
curr = date '+%s'
diff = $(($curr - $last))
if [ $diff -gt 3600 ]; then
# ...
fi
echo "$curr" >/tmp/.lastrun
+0
爲什麼不使用自紀元(%s)以來的秒數?一小時3600秒。 – 2008-10-15 17:53:04
相關問題
- 1. 在Perl中比較日期的最佳方式是什麼?
- 2. 在android中執行多個listviews的最佳方式是什麼?
- 3. 在laravel中執行此查詢的最佳方式是什麼?
- 4. 在C中執行查找表的最佳方式是什麼?
- 5. 使用兩個比較器的最佳方式是什麼?
- 6. 在PHP中規範「時間」的最佳方式是什麼?
- 7. 在c#中比較兩個pdf文件的最佳方式是什麼?
- 8. 時間戳比較
- 9. 比較時間戳
- 10. 什麼是根據資源時間戳生成ETag的最佳方式
- 11. Python:用PySerial發送狀態位和時間戳的最佳方式是什麼
- 12. 時間戳在時間戳範圍內進行比較?
- 13. 在SQL中比較2行的最快方法是什麼?
- 14. 什麼是比較CString的兩個向量的最佳方法
- 15. 使用Intel SSE執行分支的最佳方式是什麼?
- 16. 什麼是自動執行REST api的最佳方式
- 17. 執行AppEngine模型Memcaching的最佳方式是什麼?
- 18. 對java.sql.Time類型執行Time Arithimetic的最佳方式是什麼?
- 19. 延遲代碼執行的最佳方式是什麼?
- 20. 執行數學表達式的最佳方法是什麼?
- 21. 比較哈希散列的最佳方法是什麼?
- 22. 什麼是使用硒比較圖像的最佳方法
- 23. 比較「undefined」值的最佳方法是什麼?
- 24. 什麼是比較同類變量的最佳方法?
- 25. 在Ksh和Perl中並行執行任務的最佳方式是什麼?
- 26. 在運行時替換控件的最佳方式是什麼?
- 27. 設置jQuery超時間隔的最佳方式是什麼?
- 28. 什麼是驗證日期和時間的最佳方式
- 29. 處理線程最大執行時間的最佳方式(Java)
- 30. 在postgresql中用nanosec存儲時間戳的最優雅方式是什麼?
謝謝,我不知道該-nt位。當警報第一次觸發時,我可以創建一個文件,並在條件恢復時刪除它(在這種情況下,我可以檢查是否存在)。任何想法我怎麼能實現'如果它已經至少一個小時再次拋出警報'位? – Ichorus 2008-10-15 17:46:58
我相信@布魯諾回答說。 – JesperE 2008-10-16 08:36:58