我需要定期清空文本文件而不删除它(我知道它有多少行)。
我尝试过这个:
创建了一个执行以下脚本的 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
我先移动文件,以防系统碰巧打开了它。