如何清除error.log文件的内容但保持文件完整


25

我想删除文件error.log(nginx错误日志文件)的内容,但是我实际上不想删除该文件。

这可能吗?

运行ubuntu

Answers:


67

您可以使用此:

>error.log

(就是这样键入的-空的输出重定向)

要么

truncate -s0 error.log

@Ignacio:如果文件已经存在,则将其截断。如果文件不存在,则两者都会创建它。
暂停,直到另行通知。

你是对的,我的坏。
伊格纳西奥·巴斯克斯

最后一个选项对我
有用

5
@davidkonrad:您必须已经是root用户才能进行重定向,因为重定向在sudo生效之前就已执行。或者,您也可以sudo bash -c '>error.log'
暂停,直到另行通知。

1
@ divHelper11:在我的回答中,我说这是“空输出重定向”。这意味着“无”将被发送到命名文件,并且将覆盖任何现有内容。它类似于echo "some words" > output.txt但没有什么是要去。
暂停,直至另行通知。

1

您会混淆守护程序。删除文件,然后发送SIGHUP到nginx。


SIGHUP?我不能关闭Nginx,清除文件,然后启动吗?我也想知道如何删除文件。
user27449 '12

如果您愿意,可以。但这会中断服务。
伊格纳西奥·巴斯克斯

我认为null重定向和a truncate都是原子的,因此只要不进行任何查找(尤其是正在发生的唯一操作是追加操作),就不会造成破坏。
暂停,直到另行通知。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.