用于截断大文件的Unix shell脚本

qcbq4gxm  于 2023-06-06  发布在  Shell
关注(0)|答案(5)|浏览(168)

我试图写一个Unix脚本,它将截断/清空一个文件,这是不断被写入/打开的应用程序,当它达到说3GB的空间。我知道下面的命令可以做到这一点:

cp /dev/null [filename]

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

vjhs03f7

vjhs03f71#

再补充一个答案

: > filename

:在bash中是一个nop-op(符合POSIX),所以这实际上只是打开文件进行写入(这当然会截断文件),然后立即关闭它。
编辑:正如shellter评论的那样,你实际上不需要命令来沿着重定向:

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

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

h43kikqp

h43kikqp2#

我在debian上使用过以下命令

truncate -s 0 filename
i34xakig

i34xakig3#

这对我来说似乎是合理的。当然,Unix可以让你用50种不同的方式来做这件事。下面是两个例子:

echo -n "" >filename
cat /dev/null >filename
aelbi1ox

aelbi1ox4#

trunc filename
适用于UNIX的AIX风格

fnatzsnv

fnatzsnv5#

还有另一种选择:
dd count=0 of=filename
优点(主要用于嵌入式系统):

  • 它不需要生成shell(bash,dash等),因为没有重定向
  • 兼容busybox

相关问题