Linux
來自 CRONTAB 作業的管道命令輸出刪除超過 5 天的文件
我想執行 CRONTAB 作業以刪除文件夾中超過 5 天的文件**,並將命令輸出通過管道傳輸到文件以防出錯**。
此命令在從命令行執行時刪除文件:
/usr/bin/find /mnt/SQL_Backups/* -mtime +5 -exec rm {} \;
但是,當我將它添加到它以獲取 stdout 和 stderr 管道時,它失敗了。
/usr/bin/find /mnt/SQL_Backups/* -mtime +5 -exec rm {} \; > /mnt/output/CRONDeleteFiles.txt 2>$1
從命令行,錯誤是
-bash: $1: 不明確的重定向
從 CRONTAB 電子郵件錯誤消息中,我收到此錯誤
/bin/sh: 1: 無法創建:目錄不存在
我懷疑這與我的管道程式碼有關?
這樣做的正確方法是什麼?
stderr 到 stdout 被重定向
2>&1
,而不是2>$1
像您的範例中那樣。
你可以寫信給記錄器,
find /mnt/SQL_Backups/* -mtime +5 -print -delete 2>&1 | logger -t rmsqlbackups
因為我沒有
-p user.info
在我的系統上提供優先級或設施(例如),所以這會被寫入/var/log/messages
其中。2>&1
擷取stderr以及stdout。_或者使用您自己的方法並寫入文件,儘管我懷疑您可能想要追加(
>>
)而不是輸出(>
),在這裡我已經在所有輸出前面加上目前日期/時間,以便您可以看到在以下情況下被刪除的內容:( date; find /mnt/SQL_Backups/* -mtime +5 -print -delete; echo ) >> /mnt/output/CRONDeleteFiles.txt 2>&1