Чи може cron записувати завдання виводу в журнал * за замовчуванням * (замість пошти)?


23

Ми всі знаємо, що правильним способом обробки результатів із завдань cron є перенаправлення його на файл:

0 * * * * /bin/date >> /var/log/date.log 2>&1

Однак іноді адміністратори ледачі, забудькуваті чи неосвічені і не вкладають у ці перенаправлення; в цьому випадку результат роботи надсилається поштою до $ MAILTO або користувачеві або root. У деяких ящиках, якими я керую, пошта відключена, тому цей вихід переходить у чорну діру. Мені цікаво, чи є якийсь спосіб сказати cron взяти будь-яку роботу та замість того, щоб надсилати пошту, кидати її десь у лог-файл? Я використовую Ubuntu (8.04, але переходить на 9.04). У цьому випадковому результаті Google є натяк на таке рішення , але я думаю, що ОП може бути переплутана з приводу виходу кронів порівняно з результатами роботи cron.

Я відкритий для рішень, які передбачають трохи сценаріїв або злому, але в ідеалі це би біт конфігурації, який я можу десь встановити. Я не бачу жодних підказок у man cron. Спасибі!

Відповіді:


1

Для croniecron (що рекомендується, наприклад, у Gentoo Handbook) є аргумент "-s" для виклику cron, який надсилає вихідний завдання до системного журналу за допомогою syslog.


3

Коротка відповідь - ні, cron надсилає власнику crontab за конструкцією. У стандартному кроні це неможливо змінити.

Найкраще, що я можу придумати, - це налаштувати MTA на машинах, де ви хочете, щоб ця поведінка скидала пошту у файл журналу замість поштової скриньки користувача.


3

Я не впевнений, що саме ви маєте на увазі, коли ви говорите "пошта вимкнена". Але, можливо, ви могли б встановити псевдонім, /etc/aliasesякий спрямований на трубу? Щось на зразок

root: "|/bin/cat >> /var/log/cron.log"

root: /var/log/cron.logне працює? feep.net/sendmail/tutorial/intro/aliases.html
ендоліти

Нічого для мене нічого не робить.
ендоліт

Вони можуть працювати лише в тому випадку, якщо ви використовуєте sendmail як свій MTA. Це стає все рідше. (Так, я знаю, що відповідаю на коментар 5-річного віку!)
Alex L

2

Я не думаю, що те, що ви просите, насправді можливо з Ubuntu (або будь-яким іншим) cron.

Окрім ідеї geekmonkeys, ви також можете встановити $ MAILTO на локальний рахунок і прокласти маршрут через procmail.


1

Ніколи не чув про таке налаштування для cron, тому я б пішов на сценарій.

Створіть завдання cron для патрулювання / var / spool / cron / * та додайте переспрямування до будь-якого завдання, у якого його немає.


1

Іншим варіантом буде створити скрипт оболонки під назвою cron_wrapper або щось подібне, і зробити це так, як це:

#! / бін / ш

eval "$ * >> /var/log/cronlog.log"
вихід $?

Тоді всі ваші копійки просто потребують приблизно такого:

* * * * * / usr / local / bin / cron_wrapper echo hello

Примітка. Я не перевіряв цей код, це лише ідея.


1
Це не вирішує проблему. Якщо люди не можуть пам'ятати, щоб встановити MAILTO або перенаправити stdout у файл, вони не пам’ятатимуть запускати речі через обгортку.
Каміль Кісієль

1

Я не знаю, що таке "стандартний крон". Є багато демонів крон, різні дистрибуції використовують різні. Vixie cron є найбільш широко розгорнутим, тому, мабуть, це ви мали на увазі. Але в деяких дистрибутивах це не було б за замовчуванням.

Я взяв на себе розробку Dronlon cron (dcron), який є типовим для Arch Linux. Інші дистрибутиви також його використовують, але я не знаю, чи деінде це ще дещо. dcron має опцію виклику, -Mщоб вказати, що ви хочете використовувати спеціальний сценарій замість sendmail. Сценарій викликається без аргументів і з кількома заголовками електронної пошти та &>виведенням будь-яких кронівок як stdin. (Якщо &>виходу немає , скрипт не викликається.)


1

чому ми не встановимо MAILTO = "" конкретно crontab користувача. Це відключить реєстрацію поштових повідомлень у / var / spool / mail /

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.