Ваши первоначальные сообщения об ошибках не имеют смысла в том, что вы показываете для вашего cron, который запускает ваш logrotate
.
rotating pattern: /home/mail3/log/popMailProcessing.log forced from command line (60 rotations)
empty log files are rotated, old logs are removed
considering log /home//log/popMailProcessing.log
error: stat of /home/mail3/log/popMailProcessing.log failed: Permission denied
Что делают эти пути, идущие к /home/mail3/log/*
? Также что отсутствует в строке /home//log/popMailProcessing.log
? Похоже, что в своем вопросе вы показываете только часть реальной ситуации.
Поместите эту строку в сценарий оболочки, logrotate.sh
:
#!/bin/bash
/usr/sbin/logrotate -f -v /etc/logrotate.d/mail3-logs &>> /var/log/logrotate/rotate.log
Сделайте его исполняемым и запустите из cron:
03 00 * * * root strace -s 2000 -o /tmp/strace.log /path/to/logrotate.bash
Просматривая вывод, вы должны увидеть, что сбивается из-за проблем с разрешениями.
После разговора с ОП он упомянул, что вышеупомянутая техника отладки показала, что SELinux был включен. Он был в недоумении, почему это так, ведь ранее он отключил его командой setenforce 0
.
Отключение SELinux таким образом будет оставаться в этом состоянии только до следующей перезагрузки. Режим по умолчанию для SELinux диктуется этим файлом в Fedora/CentOS:
$ cat /etc/sysconfig/selinux
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - SELinux is fully disabled.
SELINUX=disabled
# SELINUXTYPE= type of policy in use. Possible values are:
# targeted - Only targeted network daemons are protected.
# strict - Full SELinux protection.
SELINUXTYPE=targeted
Чтобы навсегда отключить SELinux, вам нужно изменить строку SELINUX=....
в одно из трех состояний, enforcing
, permissive
, disabled
.
Однако я бы посоветовал вам потратить время на то, чтобы понять, почему SELinux запрещает доступ к директории, в которой находятся эти файлы журналов, и добавить соответствующий контекст, чтобы SELinux разрешил этот доступ. SELinux является важной частью многоуровневой модели безопасности, которая поддерживается в дистрибутивах Linux, использующих эту систему, и слепое отключение этой системы лишает ее одного из критически важных уровней.
Can you tell me how to do a loopback test in Linux
ping -c 1 127.0.0.1
, and contrast it with a non-loopback test which tests the same thing (any thing)?
ping -c 1 1.1.1.1
Просто настройте любую службу, которую вы хотите протестировать, на действительный IP-адрес в блоке 127.0.0.0/8
CIDR. Затем попытайтесь подключиться к нему с того же хоста по выбранному вами IP-адресу. Если это работает, то ваш тест обратной связи прошел успешно.
Интерфейс кольцевой проверки и адресное пространство важны только для сетевой инфраструктуры; для приложения или службы IP-адрес в блоке 127.0.0.0/8 аналогичен любому другому IP-адресу.
Разница между запуском сервиса на петлевом интерфейсе и на «фактическом» сетевом интерфейсе заключается в том, что, как говорится в цитате из вашего вопроса, петлевой трафик никогда не передается «по проводу», то есть никакие данные не передаются. когда-либо передаваемые за пределы самого хоста.
Это означает, что если вы настраиваете службу в диапазоне замыкания на себя для тестирования, вы должны тестировать с того же хоста. Если вы хотите протестировать соединения с другого хоста (, чтобы проверить сетевое подключение ), вы должны вместо этого привязать свою службу к "проводному" -обращенному к интерфейсу и адресу прямо или косвенно..
tell me how to do a loopback test in Linux
Подключитесь к службе, работающей на локальном хосте, через петлю (, в данном случае это HTTP-сервер ). Если сервер настроен на прослушивание на всех интерфейсах, вам даже не нужно его перенастраивать.
$ telnet 127.0.0.1 80
, and contrast it with a non-loopback test which tests the same thing (any thing)?
Подключаться к тому же серверу с другого хоста через настоящий сетевой интерфейс (, очевидно, поскольку это единственный способ заставить пакеты передаваться на другую машину ).
$ telnet 192.168.0.100 80
(замените 192... реальным IP-адресом или сетевым именем хоста)
Да, но использование 1.1.1.1
вводит зависимость от существующего IP-адреса в Австралии. Может ping -c 1 google.com
?