如何定期移除文件中的所有内容但不删除它

如何定期移除文件中的所有内容但不删除它

我需要定期清空文本文件而不删除它(我知道它有多少行)。

我尝试过这个:

创建了一个执行以下脚本的 cron

other lines from the script here

sed '1,14d' file.txt>file.txt

如果我从终端运行它,它可以正常工作,但是当我运行 cron 时,它会执行第一部分(“此处脚本的其他行”部分),但它不会清空文件。

注意:该文件具有 777 权限,因此我认为它与权限无关。

答案1

当 cron 执行脚本时,当前工作目录可能不是您期望的。尝试指定 file.txt 的完整路径。此外,这也应该清空该文件,以防 sed 命令出现问题:

echo > file.txt

答案2

您可以尝试一个简单的>file.txt

$ cat file.txt
this is a test
$ >file.txt
$cat file.txt
$

答案3

您还可以使用logrotate,它不仅可以让您清空文件,还可以存档(例如,压缩)文件的以前内容,甚至将文件邮寄给您。

答案4

我会这样做: mv file file.bak && touch file && rm file.bak

我先移动文件,以防系统碰巧打开了它。

相关内容