Де знаходиться журнал cron / crontab?


755

Я хочу переконатися, що виконується моя робота з крон і в який час. Я вважаю, що для моєї sudo crontab -eроботи є журнал , але де?

Я шукав google і знайшов рекомендації заглянути /var/log(в якому я нічого не бачу з «cron» в імені) та відредагувати файл, /etc/syslog.confякого у мене також немає.

Відповіді:


903

При встановленні за замовчуванням завдання cron входять у систему

/var/log/syslog

Ви можете побачити лише завдання Cron у цьому лог-файлі, запустивши

 grep CRON /var/log/syslog

Якщо ви нічого не налаштували, записи будуть там.


46
Якщо MTA не встановлено, cron просто викидає вихідну роботу.
Баррі Келлі

11
Журнал хронів може бути в іншому файлі /var/log/каталогу. Перевірте наявність cron.log або еквівалент.
Navigatron

4
це не дає мені результату з роботи. це просто дає загальне повідомлення про те, що крон був оброблений.
чові

2
на AWS це було / var / log / cron
tsukimi

5
@shadi ви також grep -i CRONможете шукати нечутливі до регістру
nafg

237

Ви можете створити файл cron.log, який містить лише записи CRON, які відображаються в syslog. Зауважте, що завдання CRON все одно відображатимуться в syslog, якщо дотримуватися наступних вказівок.

Відкрийте файл

/etc/rsyslog.d/50-default.conf

Знайдіть рядок, що починається з:

#cron.*

відменте цей рядок, збережіть файл та перезапустіть rsyslog:

sudo service rsyslog restart

Тепер ви повинні побачити файл журналу cron тут:

/var/log/cron.log

Активність Cron тепер буде записана в цей файл (крім syslog).

Зауважте, що в cron.log ви побачите записи про те, коли cron запускав скрипти в /etc/cron.hourly, cron.daily тощо, - наприклад, щось на зразок:

Apr 12 14:17:01 cd CRON[14368]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)

Однак ви не побачите більше інформації про те, які сценарії насправді виконувались у /etc/cron.daily або /etc/cron.hourly, якщо тільки ці сценарії не направляють на cron.log (або, можливо, в інший файл журналу).

Якщо ви хочете перевірити, чи працює crontab, і не потрібно шукати його в cron.log або syslog, створіть crontab, який перенаправляє вихід у файл журналу на ваш вибір - щось на зразок:

01 14 * * * /home/joe/myscript >> /home/log/myscript.log 2>&1

Це дозволить перенаправити всі стандартні результати та помилки, які можуть бути створені сценарієм, який запускається у вказаний файл журналу.


1
На мою думку, ця відповідь буде кращою в майбутньому. Таким чином, ваш файл syslog є більш зрозумілим.
shgnInc

9
Щоб також виключити журнал cron з syslog, ви можете змінити рядок *.*;auth,authpriv.none -/var/log/syslogна *.*;auth,authpriv.none,cron.none -/var/log/syslog.
Коен.

У нашому CentOS 6, cron. * Визначено у /etc/rsyslog.conf, тоді як я порожній у папці rsyslog.d.
Скотт Чу

що таке 2>&1позиція?
Джон Джо

2
@JohnJoe 2> & 1 використовується для пересилання stderr до stdout, таким чином, ви також отримаєте stderr для журналу файлів.
Сампо Саррала

80

Іноді це може бути корисним для постійного моніторингу, у такому випадку:

tail -f /var/log/syslog | grep CRON

10
Ну, напевно, ви хочете скористатися -Fфайлом, який буде слідувати за файлом через зміни імені, так що, коли він стає усіченим / переміщеним, наприклад /var/log/syslog.1.gz, ви все ще слідкуєте за поточним /var/log/syslogфайлом Для чоловіків документів це те саме, що бігатиtail xxxx -f --retry
Момер

37

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

 0 15 * * *    /home/andrew/daily-backup.sh >> /var/log/daily-backup.log 2>&1

4
true, але якщо цей рядок не запуститься через синтаксичну помилку, у вказаному журналі виводу нічого не буде записано.
Раптор

11
Ви можете вирішити це, додавши 2> & 1 після того, як буде вказано файл журналу. Крім того, найкраще перевірити свої роботи, перш ніж додати їх до crontab, а потім бути присутнім для першого запланованого виконання, щоб переконатися, що він правильно відформатований.
Ендрю Мейєр

10

Якщо ви systemdвстановили у вашій системі, ви можете відобразити журнал завдання cron за допомогою journalctlкоманди.

Наприклад, на моєму Ubuntu 17.10:

journalctl -u cron.service

9

Це дуже давнє запитання, але жоден із цих відповідей не здається задовільним.

Спершу змусьте роботу з cron виконувати щохвилини, а потім запустіть cron як недемон (тимчасово, просто вбийте будь-яку крону, яка, можливо, вже почалася) за допомогою тестового журналу:

crond -nx test

І дивіться журнал виконання вашої програми, що проходить через ваш термінал.


7
Не працює 14.04 -No command 'crond' found, did you mean: Command 'cron' from package 'cron' (main)
G-.

8

Це /var/log/syslogза замовчуванням.

Але його можна налаштувати для створення окремого cron.log, що корисніше.

Це запитання описує процес:

16.04: Як змусити cron створити cron.log і відстежувати його в режимі реального часу?

Також у цій відповіді є вказівки щодо створення wcronкоманди, яка відображає її майже в реальному часі. Плюс це посилання на іншу відповідь,

Як змінити рівень журналу cron?

що показує, як змінити рівень журналу, щоб включити більше, ніж просто початок завдань - рівень 15 також покаже помилки та час закінчення.


5

Федоар 29 і RHEL 7

journalctl -t CROND

З journalctlпосібника:

   -t, --identifier=SYSLOG_IDENTIFIER|PATTERN
       Show messages for the specified syslog identifier SYSLOG_IDENTIFIER, or for any of the messages with a "SYSLOG_IDENTIFIER" matched by PATTERN.

       This parameter can be specified multiple times.

3

Ви можете перенаправити вихід cron на файл tmp

Такі як: 00 11 07 * * / bin / bash /home/ubuntu/command.sh> / tmp / output 2> & 1

Помилка та нормальний вихід, обидва будуть переспрямовані до одного файлу


2

Як уже згадувалося раніше, до роботи з Cron потрапляють в систему /var/log/syslog

Ви можете передавати системний журнал, щоб зібрати та відфільтрувати журнали CRON, як це

less /var/log/syslog | grep CRON 

Ви можете шукати через свої журнали crontab, як це

less /var/log/syslog | grep CRON | grep <search-keyword-comes-here>

Ви можете здійснювати пошук у своїх журналах історії crontab, збережених у файлах gz, як це

less /var/log/syslog.2.gz | grep CRON | grep <search-keyword-comes-here>

Завжди добре вважати механізм реєстрації даних, ви можете швидко налаштувати ELK для своїх серверів, а також можете експериментувати з logz .

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