Вы запускаете logrotate -d /etc/logrotate.conf
с аргументом -d
.
Аргумент -d
- это режим отладки, можно сказать «пробный запуск». Он предоставит вам информацию только в том случае, если logrotate будет работать, но не будет вращать журналы.
logrotate -f
работал, поскольку аргумент -f
указывает logrotate для принудительного выполнения logrotate.
Цитата из руководства logrotate :
-d, --debug
Включает режим отладки и подразумевает -v. В режиме отладки никакие изменения не будут внесены в журналы или файл состояния logrotate.
-f, --force Указывает logrotate принудительно выполнить поворот, даже если он не считает это необходимым. Иногда это полезно после добавления новых записей
в файл конфигурации logrotate или если старые файлы журнала были
удалены вручную, поскольку новые файлы будут созданы, и регистрация
будет продолжена правильно.
Если logrotate -d / etc / logrotate.conf
дал вам вывод, что журнал будет вращаться и сжиматься, тогда он обязательно будет вращать его, когда logrotate будет просматривать ваш файл конфигурации.
Он создает один для стандартного ввода и один для стандартного вывода , точно так же конвейеры к подпроцессам всегда работают. Вот почему вы получаете два fd в массиве . Один конец каждого канала находится в родительском (как FD в массиве ), а один конец каждого канала находится в дочернем (как fd 0 и fd 1, stdin и stdout ). Запись в fd 1 дочернего элемента дает вам что-то для чтения из COPROC[0]
и наоборот -для стандартного ввода.
Эта настройка также описана на странице руководства в абзаце после процитированного вами. Ничего особенного не происходит, и он делает то же самое , используя стандартную pipe
функцию во всех системах, независимо от того, как работают локальные каналы помимо того, что обеспечивает POSIX.