我无法清除系统日志,但我可以删除它吗?

我无法清除系统日志,但我可以删除它吗?

为什么sudo /dev/null > /var/log/syslog和不起作用sudo > /var/log/syslog,而 whilesudo rm /var/log/syslog起作用?!

答案1

truncate -s 0 /var/log/syslog

于 18.04 为我工作。从这里获取:

https://ubuntuforums.org/showthread.php?t=2191156

答案2

主要有两个问题。

一个问题是/dev/null不是命令,因此sudo /dev/null无法成功运行。您需要sudo [a command]。在这种情况下,您可能需要sudo cat /dev/null

另一个问题是将>内容分成左边的完整命令和右边的文件,因此完整命令左边是sudo cat /dev/nullsudo一旦运行,它的工作就完成了cat /dev/null

这意味着>以您的用户身份运行,而不是sudo。您的用户没有权限写入/var/log/syslog,因此这将失败。

cat /dev/null > /var/log/syslog您需要某种方式来运行下的整行sudo。好吧,>不是一个命令或任何东西。这是 shell 处理的东西,因此您需要让 shell 正确处理该重定向符号。您可以使用 的sh选项来做到这一点-csh -c 'cat /dev/null > /var/log/syslog'

现在您已将所有内容整合为一个命令,您可以sudo运行整个命令:

sudo sh -c 'cat /dev/null > /var/log/syslog'

答案3

您正在考虑的命令可能是

> /var/log/syslog

无需其他操作。在 bash 和其他 shell 中,>将立即截断文件,将其清空。但是,当您运行以下命令时:

sudo /dev/null > /var/log/syslog

系统正在尝试/dev/null作为命令运行,您将收到此错误:

sudo: /dev/null: command not found

但请注意,尽管如此,/var/log/syslog 已被清空因为正如我上面所说,这就>足够了,不需要任何命令。

答案4

另一种方法是

sudo tee </dev/null /var/log/syslog 

或者如果你更喜欢无用地使用cat

cat /dev/null | sudo tee /var/log/syslog

相关内容