web-dev-qa-db-ja.com

syslogをクリアできませんが、削除できますか?

なぜSudo /dev/null > /var/log/syslogSudo > /var/log/syslogは機能しないのに、Sudo rm /var/log/syslogは機能しないのですか?!

6
user259632

主に2つの問題があります。

問題の1つは、/dev/nullがコマンドではないため、Sudo /dev/nullを実行できないことです。 Sudo [a command]が必要です。この場合、おそらくSudo cat /dev/nullが必要です。

もう1つの問題は、>が左側の完全なコマンドと右側のファイルに分けているため、左側のfull commandSudo cat /dev/nullであり、Sudoのジョブは、cat /dev/nullを実行すると完了します。

つまり、Sudoの下ではなく、>がユーザーとして実行されています。ユーザーには/var/log/syslogへの書き込み権限がないため、これは失敗します。

Sudoの下でcat /dev/null > /var/log/syslog行全体を実行する何らかの方法が必要です。さて、>はコマンドなどではありません。これはシェルが処理するものなので、そのリダイレクトシンボルを適切に処理するシェルが必要です。 sh-cオプションでそれを行うことができます:sh -c 'cat /dev/null > /var/log/syslog'

すべてを1つのコマンドとしてまとめたので、Sudoで全体を実行できます。

Sudo sh -c 'cat /dev/null > /var/log/syslog'
14
Elliott Frisch

truncate -s 0 /var/log/syslog

18.04に私のために働いています。ここからそれを得ました:

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

11
emvidi

あなたが考えているコマンドはおそらく

> /var/log/syslog

他に何も必要ありません。 bashやその他のシェルでは、>はすぐにファイルを切り捨てて空にします。ただし、これを実行すると:

Sudo /dev/null > /var/log/syslog

システムは/dev/nullをコマンドとして実行しようとしていますが、次のエラーが表示されます。

Sudo: /dev/null: command not found

ただし、これにも関わらず、/var/log/syslog実際には空になっているであることに注意してください。前述したように、>で十分なので、コマンドは不要です。

9
terdon