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

use*_*632 29 syslog

为什么犯规sudo /dev/null > /var/log/syslogsudo > /var/log/syslog工作,而sudo rm /var/log/syslog工作?

emv*_*idi 52

truncate -s 0 /var/log/syslog

18.04 为我工作。从这里得到它:

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

  • 与树莓派一起使用 (2认同)

Ell*_*sch 19

有两个主要问题。

一个问题是它/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/syslogsudo. 好吧,>不是命令或任何东西。这是 shell 处理的东西,所以你需要有一个 shell 句柄来正确处理重定向符号。您可以使用sh's -coption:来做到这一点sh -c 'cat /dev/null > /var/log/syslog'

现在你把所有东西都作为一个命令,你可以sudo运行整个事情:

sudo sh -c 'cat /dev/null > /var/log/syslog'
Run Code Online (Sandbox Code Playgroud)


ter*_*don 12

您正在考虑的命令可能是

> /var/log/syslog
Run Code Online (Sandbox Code Playgroud)

不需要其他任何东西。在 bash 和其他 shell 中,>将立即截断文件,清空它。但是,当您运行此命令时:

sudo /dev/null > /var/log/syslog
Run Code Online (Sandbox Code Playgroud)

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

sudo: /dev/null: command not found
Run Code Online (Sandbox Code Playgroud)

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