Может кто-нибудь объяснить мне, почему этот сценарий не удаляет файлы / var / logmessages и / var / log / wtmp? Я нашел его в туториале tldp.org
#!/bin/bash
LOG_DIR=/var/log
cd $LOG_DIR
cat /dev/null > messages
cat /dev/null > wtmp
echo "Logs cleaned up"
exit
. После его запуска я проверил каталог / var / log, и сообщения и wtmp все еще находятся там со "старыми" журналами.
Почему это происходит?
Если вам абсолютно необходимо очистить файл журнала, вы должны сделать это как sudo / root и перезапустить демон syslog. Группа adm позволяет только читать, но не записывать (некоторые) файлы журнала.
Имейте в виду, что в системе Unix файл только освобождает используемое пространство / перестает существовать, когда он больше не используется, отсюда и необходимость перезапуска системного журнала, потому что если вы удаляете файл, используя весь раздел журнала вы не увидите освободившееся пространство , пока не перезапустите демон syslog. Точно так же системный журнал будет по-прежнему отправлять журналы в уже "удаленные" файлы, а не в новые, созданные с помощью перенаправления stdout (">"), пока вы не перезапустите его.
Что касается wtmp и сообщений, давайте посмотрим их разрешения по умолчанию:
$ls -la /var/log/messages /var/log/wtmp
-rw-r----- 1 root adm 818148 Apr 14 07:15 /var/log/messages
-rw-rw-r-- 1 root utmp 284928 Apr 14 07:37 wtmp
Итак, сценарий должен быть:
#!/bin/bash
LOG_DIR=/var/log
cd $LOG_DIR
sudo cat /dev/null > messages
sudo cat /dev/null > wtmp
sudo service rsyslogd restart
echo "Logs cleaned up"
exit 0
В конце дня демон syslog также (повторно) создает / var / log / messages с нужными разрешениями, поэтому на самом деле я бы предпочел сделать это следующим образом:
#!/bin/bash
LOG_DIR=/var/log
cd $LOG_DIR
sudo rm messages
sudo sh -c 'cat /dev/null > wtmp'
sudo service rsyslogd restart
echo "Logs cleaned up"
exit 0
Предупреждение: будьте осторожны со скриптами, которые вы запускаете. Вы не должны перезаписывать / var / log / wtmp в производственной системе. Вы хотите иметь историю пользователей, которые вошли в систему.