題 如何使用“日期”打印明天的一周


在CentOS 6 Linux上我使用 date +%a 在幾個cronjobs和腳本中生成日誌文件名稱 myprog-Tue.txt 多年來,這對我很有用。

但是現在對於一個程序我需要刪除以前的日誌文件,即在我啟動程序之前在我的cronjob中將其輸出重定向到 myprog-Tue.txt,我想刪除 myprog-Wed.txt

通過這種方式,我希望將舊的日誌文件排除在外,但仍然有5-6天的日誌文件。

所以我試過了:

# date -v+1d +%a
date: invalid option -- 'v'
Try `date --help' for more information.

有人知道這裡有什麼問題嗎?


4
2017-08-01 15:55


起源


您可能希望在此處發布您的Linux問題: unix.stackexchange.com - Jason Enochs
@JasonEnochs在SuperUser上發布Linux問題沒有任何反對意見,即使存在更專業的網站。 (同樣的 Unix和Linux 並問問Ubuntu。) 亞歷山大無論你做什麼,做 不 只需在網絡中的多個站點上發布相同的問題。如果您希望將問題遷移到其他站點,請使用自定義原因選項“標記”以供主持人注意,請求遷移,主持人將查看並採取適當的操作。 - a CVn
恕我直言,這是一個壞主意,有一個星期的名字。如果你有兩週的日誌怎麼辦?如果你在白天重新開始怎麼辦?最好這兩種情況都會令人困惑,最壞的情況是你可能會覆蓋現有的文件。 - Rich Homolka


答案:


你會這樣做:

date -d "+1 days" +%a

這呈現:

星期六


6
2017-08-01 16:07





問題不在於你如何使用 date 輸出你想要的......你的問題是:

這條路 我想把舊的日誌文件拿走,但仍然有5-6天的日誌文件

所以,為什麼不使用 find 刪除所有文件,但本週?

find /path/to/files/ -mtime +7 -exec rm {} \;

此外, date 有許多不同的實現 - 我記得我最後一次使用它時很難找到正確的 flags 做我想做的事情......在Linux和AIX機器之間以同樣的方式工作並不容易...所以,以防這個評論可以幫助你做出決定 date :)


11
2017-08-01 16:11



+1解決問題而不只是回答問題:) - a CVn
是的,謝謝 - 我也使用類似的“find / xargs”命令。但在這種情況下,我不想依賴“mtime”,因為我有時用“vi”編輯/查看日誌文件。 - Alexander Farber
@AlexanderFarber這不應該改變mtime,除非你保存文件。你是否想過一段時間?也許,你應該使用 view代替 vi, view 默認情況下打開只讀。 - Rich Homolka
這可能有助於理解 atime, mtime,和 ctime: unix.stackexchange.com/a/91200/74190。此外,Ext4和其他文件系統似乎存儲文件的創建日期 - 也許這是你可以利用的東西(如果使用任何這些文件系統)。 - jimm-cl
@jim BTW:AIX的+1 ...我多年前就被卡住了。此外,由於這是Linux,你可以依賴 -delete 運算符(GNU)查找。你可以替換 | xargs rm {} \; 同 -delete 並且不會被引用規則或-no-run-if-empty困住。 - Rich Homolka


使用 -d 指定短語的選項:

date -d '+ 1 day' +%a

1
2017-08-01 16:04





“如何理智地管理日誌文件”的另一個條目......

你可以看看 日誌輪播 這應該是大多數Linux發行版的一部分。它可以管理刪除和壓縮。許多Linux守護進程使用它,因此您可以查看一些示例配置文件。

更簡單一點 rotatelogs 它處理旋轉部分,但不做任何刪除(你的 find ... -delete 會這樣做的。


1
2017-08-01 17:31