Удалить все/var/log?

Дайте пользователю (пользователям) "сетевого оператора" privs, это позволит продвинутому маршруту работать, но не предоставляет слишком много дополнительной "власти" :)

Насколько я знаю, существует работа, сделанная, чтобы позволить openvpn работать как priviledged сервис, который должен решить эти проблемы. Не уверенный, где это получено к. См. эту ссылку также

26
задан 14 August 2014 в 17:29
10 ответов

Вместо того, чтобы удалить файлы необходимо повернуть их, например, использование logrotate.

Вы никогда не знаете при фактической необходимости в журналах от некоторое время назад таким образом, будет лучше заархивировать их (до разумного возраста, например, 3 месяца).

logrotate может сжать Ваши старые файлы журнала, таким образом, они не занимают большое дисковое пространство.

22
ответ дан 28 November 2019 в 20:07

При удалении всего в/var/log Вы, скорее всего, закончите с тоннами сообщений об ошибках в очень небольшое количество времени, так как существуют папки там, которые, как ожидают, будут существовать (например, exim4, apache2, склонный, чашки, mysql, самба и больше). Плюс: существуют некоторые сервисы или приложения, которые не создадут их файлы журнала, если они не будут существовать. Они ожидают, что, по крайней мере, пустой файл будет присутствовать. Таким образом, прямой ответ на Ваш вопрос на самом деле, "Не делают этого!!!".

Как joschi указал, нет никакой причины сделать это. У меня есть debian серверы, работающие, которым не удалили единственный файл журнала в течение многих лет.

17
ответ дан 28 November 2019 в 20:07
  • 1
    я не понял это. хороший для знания. +1 + изменил мой принимать. –   29 September 2010 в 00:31

Удалите все файлы:

find /var/log -type f -delete

Удалите весь .gz и повернутый файл

find /var/log -type f -regex ".*\.gz$"
find /var/log -type f -regex ".*\.[0-9]$"

Попробуйте команду выполнения без "-удаляют", для тестирования его.

15
ответ дан 28 November 2019 в 20:07

Можно использовать опцию ctime для нахождения старых файлов..., например:

find -ctime +30

Как bindbn объясняют, сначала пробуют файлы выборки находки и после использования, которое удаляет опция :D

2
ответ дан 28 November 2019 в 20:07

Я клонирую виртуальные машины с мастера. Имеет смысл очистить журнал на главном сервере, чтобы при загрузке клонов вы не получили журнал мастера. Я сделал это в tcsh:

cd /var/log
foreach ii ( `find . -type f` )
foreach? cp /dev/null $ii
foreach? end

, который очищает журналы, но сохраняет файлы.

10
ответ дан 28 November 2019 в 20:07

Очистка всех журналов в системе Linux без удаления файлов:

for CLEAN in $(find /var/log/ -type f)
do
    cp /dev/null  $CLEAN
done

Samba ( / var / www / samba ) создает имена файлов журнала с IP-адресами, вы можете удалить их:

for CLEAN in $(find /var/log/samba -type f)
do
    rm -rf $CLEAN
done
6
ответ дан 28 November 2019 в 20:07
function goodbyelogs {
find /var/log -type f
}

for i in return $(goodbyelogs);
do sudo cat /dev/null > $i;
echo "Log $i has been cleared";
done

создайте исполняемый сценарий и попробуйте запустить его от имени пользователя root, если sudo у вас не работает

-2
ответ дан 28 November 2019 в 20:07

Я реализовал здесь простой очиститель:

https://github.com/Lin-Buo-Ren/Coward-Unix-Log- Cleaner

Это просто:

  • Удаляет имена файлов со следующими шаблонами лог-ротации имен файлов в / var / log
    • ^. * /. + \. [[: Digit:]] + (\. [ [: alpha:]] +)? $
    • ^. * /. + \. old $ (без учета регистра)
  • Обрезать / очистить файлы с именами файлов со следующими шаблонами файлов журнала в /var/log
    • ^.*/.+\.log$ (без учета регистра)
1
ответ дан 28 November 2019 в 20:07

/var/log часто имеет разрешения drwxrwxr-x, поэтому он не может быть записан пользователем, если только он не является корневым пользователем или не принадлежит к привилегированной группе. Это означает, что новые лог-файлы не могут быть созданы непривилегированными пользователями.

Приложения, которые ожидают входа в систему до точки внутри /var/log, часто будут касаться файла, существующего где-то в иерархии /var/log во время установки (что часто происходит с повышенными привилегиями), и будут chmod и, возможно, chown в то время получать разрешения, подходящие для непривилегированных пользователей, которые будут использовать это приложение.

Журналы Apache, например, обычно пишутся никому , который является пользователем с как можно меньшим количеством привилегий, чтобы Apache мог выполнять свою работу, не подвергая систему неоправданному риску. Но даже более запущенное приложение часто ожидает, что сможет записать лог в /var/log.

Так что же произойдёт, если лог-файл и путь к нему не существуют? Это полностью зависит от приложения. Некоторые приложения будут тихо пропускать лог-файлы. Другие создадут много предупреждений. А другие просто откажутся. Нет никакого жесткого правила, это зависит от бдительности разработчика приложения, а также от того, насколько критично разработчик относится к своей способности вести лог. В лучшем случае приложение попытается либо записать, либо, возможно, создать, а затем записать в лог-файл по назначению в /var/log, и окажется неспособным сделать это, потому что его запускает пользователь, у которого нет привилегий на запись в эту часть файловой системы.

Так что короткий ответ - нет, не удаляйте все в /var/log -- она нарушает контракт пользователей, имеющих достаточные привилегии для выполнения таких действий с приложениями, запущенными в их системе, и приводит к некоторому шуму, некоторому молчаливому сбою в журнале, и некоторому полному разрыву.

Соответствующее действие заключается в настройке logrotate с соответствующими конфигурационными файлами. Обычно вращение будет связано с заданием cron. Вращение может быть основано на интервале, или на размере, или на обоих. Можно даже установить правила, которые позволяют избежать вращения на основе интервала, если по истечении этого срока лог-файл остается пустым. Ротация может включать рассылку лог-файлов, сжатие, удаление, измельчение и т.д.

Среднему пользователю не нужно будет слишком беспокоиться о ротации логов. Разработчики, вероятно, захотят удостовериться, что в используемых ими журналах установлены правила ротации. На самом деле, разработчики, скорее всего, будут хорошими манерами настроить ротацию логов во время установки для любых программных логов, которые будут создаваться и записываться программным обеспечением

.
2
ответ дан 28 November 2019 в 20:07

Да, можете.

Чтобы удалить все журналы автоматически, отредактируйте файл .bashrc. В терминале введите любое из следующего

nano ~/.bashrc - 
leafpad ~/.bashrc - Then save
gedit ~/.bashrc - Then save

Для nano нажмите ctl + O, чтобы сохранить и ctrl + x, чтобы выйти из режима редактирования


Добавьте следующее в конец содержимого файла
rm -r /var/log # Deletes logs directory
clear # Clear the terminal

Этот файл выполняется каждый раз, когда вы входите в систему или запускаете экземпляр терминала, поэтому ваши журналы всегда будут удаляться.

Вы также можете удалять их по времени. Например, 3 дня назад

find /yourlog/path -mindepth 1 -mtime +3 -delete
  • -mindepth 1 означает обработку всех файлов, кроме аргументов командной строки.
  • -mtime +3 проверит файлы, которые были изменены 3 дня назад.
  • -delete удалит их
-1
ответ дан 27 April 2021 в 09:59

Теги

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