我想每天在特定時間清空(而不是洗掉)日志檔案。就像是
echo "" > /home/user/dir/log/*.log
但它回傳
-bash: /home/user/dir/log/*.log: ambiguous redirect
有沒有辦法實作這一目標?
uj5u.com熱心網友回復:
您不能重定向到多個檔案,但可以重定向tee到多個檔案。
tee /home/user/dir/log/*.log </dev/null
重定向 from/dev/null還避免在每個檔案的開頭寫一個空行,這是您嘗試中的另一個錯誤。(不過nullglob,*.log如果通配符與任何現有檔案不匹配,則可能指定避免創建具有該名稱的檔案。)
但是,更好的解決方案可能是使用logrotate在每個 Debian(以及 Ubuntu、Mint 等)安裝中開箱即用的實用程式。它默認每晚運行,并且可以通過在其配置目錄中放置一個檔案來配置。它可以讓您壓縮日志檔案的先前版本,而不僅僅是覆寫,并注意保留所有權和權限等。
uj5u.com熱心網友回復:
你可以試試這個。
使用 For 回圈洗掉并重新創建這些檔案。
創建 .sh 檔案( something.sh )并在其中添加以下代碼。
#!/bin/bash
for f in /home/user/dir/log/*.log
do
[ -f "$f" ] && rm "$f"
touch "$f"
done
#change permision
chown -R root:root /home/user/dir/log/
每晚在 cron 中運行
* 22 * * * /file path/something.sh
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/394839.html
上一篇:WSLUbuntu20.04.3錯誤:XDG_RUNTIME_DIR未在環境中設定
下一篇:在Linux上使用C 庫
