Я не могу очистить системный журнал, но я могу удалить его?

Почему не делает sudo /dev/null > /var/log/syslog и sudo > /var/log/syslog работа, в то время как sudo rm /var/log/syslog работы?!

13
задан 19 March 2014 в 01:22

4 ответа

Существует две основных проблемы.

Одна проблема - это /dev/null не команда, таким образом работая sudo /dev/null не может успешно выполниться. Вам нужно sudo [a command]. В этом случае Вы, вероятно, хотите sudo cat /dev/null.

Другая проблема - это > разделяет вещи на полную команду слева и файл справа, таким образом, полная команда слева sudo cat /dev/null, и sudoзадание теперь сделано, после того как оно работает cat /dev/null.

Это означает что > работает как Ваш пользователь, не под sudo. У Вашего пользователя нет разрешения записать в /var/log/syslog, таким образом, это перестанет работать.

Вам нужен некоторый способ выполнить всю строку cat /dev/null > /var/log/syslog под sudo. Ну, > не команда или что-либо. Это - что-то дескрипторы оболочки, таким образом, у Вас должен быть дескриптор оболочки тот символ перенаправления правильно. Можно сделать это с sh -c опция: sh -c 'cat /dev/null > /var/log/syslog'.

Теперь, когда у Вас есть все вместе как одна команда, Вы можете иметь sudo выполните всю вещь:

sudo sh -c 'cat /dev/null > /var/log/syslog'
15
ответ дан 16 November 2019 в 14:47

Команда, о которой Вы думаете, вероятно

> /var/log/syslog

, Ничто иное не необходимо. В ударе и других оболочках, эти > сразу усечет файл, освобождая его. Однако, когда Вы выполняете это:

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

система пытается работать /dev/null как команда, и Вы получите эту ошибку:

sudo: /dev/null: command not found

Примечание, однако, который несмотря на это, /var/log/syslog был на самом деле освобожден , потому что, как я сказал выше, эти >, достаточно, никакая команда не необходима.

10
ответ дан 16 November 2019 в 14:47

truncate -s 0 /var/log/syslog

работа для меня на 18,04. Получил его отсюда:

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

18
ответ дан 16 November 2019 в 14:47

truncate: процесс усечения в основном удаляет все содержимое файла. Он не удаляет сам файл, а оставляет его на диске как файл с нулевым байтом.

Очистите ВСЕ содержимое системного журнала с помощью:

sudo truncate -s 0 / var / log / syslog

1
ответ дан 22 January 2020 в 17:24

Другие вопросы по тегам:

Похожие вопросы: