我试图写一个Unix脚本,它将截断/清空一个文件,这是不断被写入/打开的应用程序,当它达到说3GB的空间。我知道下面的命令可以做到这一点:
cp /dev/null [filename]
但是我打算在生产环境中自动运行这个作为一个cron作业-只是在这里发布,看看你们在做类似的事情时是否遇到任何问题。
vjhs03f71#
再补充一个答案
: > filename
:在bash中是一个nop-op(符合POSIX),所以这实际上只是打开文件进行写入(这当然会截断文件),然后立即关闭它。编辑:正如shellter评论的那样,你实际上不需要命令来沿着重定向:
:
$ echo foo > foo.txt $ cat foo.txt foo $ > foo.txt $ cat foo.txt $
一个简单的重定向本身就会清除文件。
h43kikqp2#
我在debian上使用过以下命令
truncate -s 0 filename
i34xakig3#
这对我来说似乎是合理的。当然,Unix可以让你用50种不同的方式来做这件事。下面是两个例子:
echo -n "" >filename cat /dev/null >filename
aelbi1ox4#
trunc filename适用于UNIX的AIX风格
trunc filename
fnatzsnv5#
还有另一种选择:dd count=0 of=filename优点(主要用于嵌入式系统):
dd count=0 of=filename
5条答案
按热度按时间vjhs03f71#
再补充一个答案
:
在bash中是一个nop-op(符合POSIX),所以这实际上只是打开文件进行写入(这当然会截断文件),然后立即关闭它。编辑:正如shellter评论的那样,你实际上不需要命令来沿着重定向:
一个简单的重定向本身就会清除文件。
h43kikqp2#
我在debian上使用过以下命令
i34xakig3#
这对我来说似乎是合理的。当然,Unix可以让你用50种不同的方式来做这件事。下面是两个例子:
aelbi1ox4#
trunc filename
适用于UNIX的AIX风格
fnatzsnv5#
还有另一种选择:
dd count=0 of=filename
优点(主要用于嵌入式系统):