89

我正在尝试编写一个 Unix 脚本,该脚本将截断/清空应用程序在达到 3GB 空间时不断写入/打开的文件。我知道下面的命令会做到这一点:

cp /dev/null [filename]

但我将在生产环境中自动运行它作为一项 cron 作业 - 只是在这里发布,看看你们在做类似的事情时是否遇到任何问题。

4

4 回答 4

119

只是为了添加另一个答案,

: > filename

:是 bash 中的无操作(符合 POSIX),所以这实际上只是打开文件进行写入(这当然会截断文件)然后立即关闭它。

编辑:正如 shellter 评论的那样,您实际上不需要命令来进行重定向:

$ echo foo > foo.txt
$ cat foo.txt
foo
$ > foo.txt
$ cat foo.txt
$

一个简单的重定向本身将清除文件。

于 2012-11-27T02:12:19.473 回答
67

我在 debian 上使用了以下命令

truncate -s 0 filename
于 2012-11-27T02:16:47.070 回答
11

这对我来说似乎很合理。当然,Unix 可以让你用大约 50 种不同的方式来做这件事。例如,

echo -n "" >filename
cat /dev/null >filename
于 2012-11-27T00:37:48.557 回答
3

trunc filename

适用于 AIX 风格的 UNIX

于 2013-09-19T13:04:39.610 回答