logrotate не усечет исходный файл

Никакая Корзина обычно ничего не обрабатывает. Проблема вероятна больше, от которого Ваш идентификатор пользователя не имеет полномочий переместить эти конкретные файлы и/или каталоги /var/tmp.

Подтвердить спад до оболочки и cd /var/tmp и проверьте, кто владелец имеет эти файлы, а также полномочия на этих файлах.

$ ls -la /var/tmp

Пример

$ ls -la 
total 216
drwxrwxrwt.  8 root root  4096 Feb  6 09:38 .
drwxr-xr-x. 24 root root  4096 Jan  7 02:20 ..
drwxr-xr-x.  2 abrt abrt  4096 Feb  5 12:27 abrt
-rw-r--r--.  1 root root     0 Jan 13 13:49 ipp_class.log
-rw-r--r--.  1 root root     0 Jan 13 13:49 ipp_driver.log
-rw-r--r--.  1 root root     0 Jan 13 13:49 ipp_job.log
-rw-r--r--.  1 root root     0 Jan 13 13:49 ipp_printer.log
-rw-r--r--.  1 root root    53 Jan 13 13:49 ipp_request.log
drwx------.  2 saml saml  4096 Dec 31  1969 orbit-saml
-rw-------.  1 saml saml 20480 Jan 30 00:47 .swo
-rw-------.  1 saml saml 20480 Jan 30 00:46 .swp
drwx------.  3 root root  4096 Feb  5 12:09 systemd-private-dxtLOx
drwx------.  3 root root  4096 Feb  5 12:09 systemd-private-HGWviW
drwx------.  3 root root  4096 Feb  5 12:09 systemd-private-Sga875
-rw-------.  1 root root 65816 Jan 15 17:49 wireshark_pcapng_wlp3s0_20140115174932_AX9520
-rw-------.  1 root root  4056 Jan 15 17:49 wireshark_pcapng_wlp3s0_20140115174942_BrNwdN
-rw-------.  1 root root 30732 Jan 15 17:50 wireshark_pcapng_wlp3s0_20140115174958_Un8VJu
-rw-------.  1 root root 13392 Jan 15 17:56 wireshark_pcapng_wlp3s0_20140115175604_Oyz8JT

Таким образом, если я был пользователем saml когда я выполнил Thunar или Nautilus и делал попытку касания любой из файлов, принадлежавших root Мне не разрешили бы сделать так в вышеупомянутом примере.

Но какой пользователь - я?

Если Вы находитесь в оболочке и не знаете, какое имя пользователя Вы (не смейтесь, это происходит), можно использовать команду:

$ who am i
saml     pts/11       2014-02-06 09:04 (:0)
2
03.03.2014, 04:31
1 ответ

Повернуть файл журнала недостаточно, нужно еще сказать процессу, который в него пишет, чтобы он остановился. Обычно это можно сделать, послав процессу сигнал, например, HUP.

Пример

/var/log/snmpd.log {
    notifempty
    missingok
    postrotate
        /bin/kill -HUP `cat /var/run/snmpd.pid 2> /dev/null` 2> /dev/null || true
    endscript
}

Здесь используется команда kill для отправки сигнала -HUP (он же Hang Up) демону SNMP, идентификатор процесса которого содержится в файле snmpd.pid.

ПРИМЕЧАНИЕ1: Перемещение файла просто перемещает файл на диск, но любые дескрипторы файлов, уже назначенные запущенным процессам, остаются активными и будут продолжать записывать вывод на новое имя файла независимо от этого.

NOTE2: Также вы можете использовать команду kill и ее переключатель -l для получения полного списка сигналов, которые вы можете посылать запущенным процессам.

Что происходит при использовании HUP?

Посылка запущенному процессу, например демону SNMP, сигнала HUP (он же SIGHUP) инструктирует процесс перезагрузить свои конфигурационные файлы, как правило. Когда это произойдет, процесс откроет файл для записи, скажем, какой-нибудь файл журнала.

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

Если сделать это после того, как оригинальный файл журнала был перемещен в другое имя, это приведет к тому, что демон будет жестко привязан к нему (через оригинальный дескриптор файла). Когда демон перечитает свой конфигурационный файл, он создаст и затем начнет записывать все новые сообщения журнала в новый файл журнала, оставляя предыдущий файл журнала на месте (под измененным именем).

Именно это поведение эксплуатирует ротация журнала.

4
27.01.2020, 22:00

Теги

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