Назад | Перейти на главную страницу

Где cron хранит журналы stderr в реальном времени?

У меня есть задание cron, настроенное для запуска такой команды, как

some-command 2>&1 >/dev/null | tee -a /tmp/some-command.STDERR.$(date +\%Y-\%m-\%d.\%H.\%M)

У меня также есть задача tmpreaper cron, которая убирает старые журналы. Время от времени какой-то процесс выходит из строя и слишком быстро съедает все дисковое пространство (я отлаживаю это, но вопрос не в этом). Когда это происходит, кажется, что «тройник» постоянно заклинивает с ошибкой «На устройстве не осталось места»; неважно, что tmpreaper в конце концов вмешается, чтобы освободить место, процесс никогда не восстановится.

Единственное, что нужно для stderr, - это возможность отслеживать, что происходит в процессе в режиме реального времени. Однако этот вывод также в конечном итоге появляется в электронном письме, которое cron отправляет после того, как я (неизбежно) убиваю процесс. Само собой разумеется, что cron имеет свой собственный файл в каком-то другом разделе, который собирает журналы stderr от моего имени. Но я не могу понять, где находится этот файл. Какие-нибудь советы?

Cron не отправляет вывод заданий во временный файл. Вместо этого он вызывает команду mail, как только видит какой-либо вывод задания, и копирует вывод непосредственно во входной почтовый ящик. Подтвердите это, проверив источник для Vixie cron, но другие, вероятно, сделают то же самое.