Cron посмотреть ошибки

As others have pointed out, cron will email you the output of any program it runs (if there is any output). So, if you don’t get any output, there are basically three possibilities:

  1. crond could not even start a shell for running the program or sending email
  2. crond had troubles mailing the output, or the mail was lost.
  3. the program did not produce any output (including error messages)

Case 1. is very unlikely, but something should have been written in the cron logs. Cron has an own reserved syslog facility, so you should have a look into /etc/syslog.conf (or the equivalent file in your distro) to see where messages of facility cron are sent. Popular destinations include /var/log/cron, /var/log/messages and /var/log/syslog.

In case 2., you should inspect the mailer daemon logs: messages from the Cron daemon usually appear as from root@yourhost. You can use a MAILTO=... line in the crontab file to have cron send email to a specific address, which should make it easier to grep the mailer daemon logs. For instance:

MAILTO=my.offsite.email@example.org
00 15 * * *  echo "Just testing if crond sends email"

In case 3., you can test if the program was actually run by appending another command whose effect you can easily check: for instance,

00 15 * * * /a/command; touch /tmp/a_command_has_run

so you can check if crond has actually run something by looking at
the mtime of /tmp/a_command_has_run.

Где хранится информация о запуске заданий по расписанию? Для проверки используем Ubuntu Linux 12.04/14.04 LTS сервер. Как проверит, запущен ли cron и правильно ли он работает?

Как проверить запущен ли cron (планировщик заданий)? Используйте команду pgrep  или ps

pgrep cron

ps aux | grep cron

sudo service cron status

sudo status cron

Результат

is-cron-service-running

Так же вы можете проверить файл /var/log/syslog используя команду grep что бы получить информации о работе планировщика cron

$ sudo grep color i cron /var/log/syslog

Результат:

Jan 17 17:43:21 planetvenus cron[229]: (CRON) INFO (pidfile fd = 3)

Jan 17 17:43:21 planetvenus cron[240]: (CRON) STARTUP (fork ok)

Jan 17 17:43:21 planetvenus cron[240]: (CRON) INFO (Running @reboot jobs)

Jan 17 18:01:01 planetvenus cron[240]: (*system*cache) NOT A REGULAR FILE (/etc/cron.d/cache)

Jan 17 18:01:01 planetvenus cron[240]: (*system*output) NOT A REGULAR FILE (/etc/cron.d/output)

Где хранятся журналы работы cron на Ubuntu Linux?

Журналы хранятся в файле /var/log/cron.log. Вы можете настроить его следующим образом. Редактировать /etc/rsyslog.d/50-default.conf файл с помощью текстового редактора, например, vi или nano:

$ sudo vi /etc/rsyslog.d/50default.conf

или

$ sudo nano /etc/rsyslog.d/50default.conf

Найдите строку

#cron.*                          /var/log/cron.log

Необходимо её раскомментировать, и перезапустить оба сервиса:

$ sudo service rsyslog restart

$ sudo service cron restart

Теперь все сообщения об ошибках в работе планировщика можно будет просматривать в файле

Воспользуйтесь различными командами для поиска нужной информации в логе

$ sudo grep что_нибудь/var/log/cron.log

$ sudo more /var/log/cron.log

$ sudo tail f /var/log/cron.log

$ sudo egrep i ‘error|log’ /var/log/cron.log

$ sudo tail F /var/log/cron.log

 Предоставляем уcлуги администрирования серверов Linux Ububtu

Нет похожих статей.


Если я cronнеправильно настраиваю задания, они, по-видимому, перестают работать. Где мне искать журнал ошибок, чтобы понять, что пошло не так?

Ответы:


Как уже отмечали другие, cronотправит вам по электронной почте вывод любой программы, которую он запускает (если она есть). Итак, если вы не получите никакого вывода, в основном есть три возможности:

  1. crond не мог даже запустить оболочку для запуска программы или отправки электронной почты
  2. crond были проблемы с отправкой по почте, или почта была потеряна.
  3. программа не выдает никаких выходных данных (включая сообщения об ошибках)

Случай 1. маловероятен, но что-то должно было быть записано в журналах cron. Cron имеет собственную зарезервированную функцию системного журнала, поэтому вам нужно посмотреть /etc/syslog.conf(или эквивалентный файл в вашем дистрибутиве), чтобы увидеть, куда cronотправляются сообщения этой службы . Популярные направления включают в себя /var/log/cron, /var/log/messagesи /var/log/syslog.

В случае 2. вы должны проверить журналы демона почтовой программы: сообщения от демона Cron обычно появляются как root@yourhost. Вы можете использовать MAILTO=...строку в файле crontab, чтобы cron отправлял электронную почту на определенный адрес, что должно облегчить поиск журналов демона почтовой программы. Например:

MAILTO=my.offsite.email@example.org
00 15 * * *  echo "Just testing if crond sends email"

В случае 3. вы можете проверить, действительно ли программа была запущена, добавив другую команду, эффект которой вы можете легко проверить: например,

00 15 * * * /a/command; touch /tmp/a_command_has_run

так что вы можете проверить crond, действительно ли что-то запускалось, посмотрев на mtime of /tmp/a_command_has_run.





Вы всегда можете явно отправить выходные данные задания в файл журнала:

0 8 * * * /usr/local/bin/myjob > /var/log/myjob.log 2>&1

Имейте в виду, что это заменит почтовое поведение, которое было упомянуто ранее, потому что crond iself не будет получать никаких результатов от работы. Если вы хотите сохранить такое поведение, вам следует заглянуть в тройник (1).





Если вы не видите почту, вы можете рассылать root @ yourcompany с ошибками, которые могут раздражать людей, которые используют эту учетную запись для мониторинга. Попробуйте вместо этого отправить вывод в Syslog:

*/5 * * * * yourcronjob 2>&1 | /usr/bin/logger -t yourtag

Затем дождитесь запуска cronjob и найдите ошибку в / var / log / messages (или /var/log/user.log в некоторых системах).

Это прекрасно работает для сообщений об ошибках длиной всего 1-2 строки, таких как «yourcronjob: команда не найдена». Он также использует вашу существующую инфраструктуру системного журнала (Logrotation, центральный системный журнал, Splunk и т. Д.). Он также уменьшает спам электронной почты до корня.

Это не может быть хорошим решением, если ваш cronjob генерирует сотни строк вывода.


Конфигурация cron по умолчанию отправит вам письмо с выводом вашей программы. Если это не удастся, вы можете попробовать обернуть вашу неудачную программу в сценарий оболочки, который гарантирует, что программа не выйдет из строя, и вы можете дополнительно записать результат.

Это настраиваемый параметр в некоторых реализациях cron.


Вы должны получать электронную почту, crondкогда задание либо не запускается, либо когда задание возвращает ненулевой код завершения. Попробуйте набрать:

$ mailx

в командной строке.

mailx(1)является основной программой чтения почты в большинстве Unix-подобных систем. Он очень примитивен по современным стандартам, но вы всегда можете рассчитывать на его доступность. Другие, более качественные почтовые агенты могут быть доступны, но их достаточно, чтобы вы никогда не знали, какой из них установлен на какой-то случайной машине, которую вы используете.

Обратите внимание, что если вы не настроили свою систему в качестве сервера электронной почты в Интернете, эта почтовая подсистема используется только внутри компьютера. Вы можете отправлять электронную почту и получать от других пользователей на машине, но вы не сможете отправлять электронную почту по всему миру, и электронная почта из внешнего мира, безусловно, не сможет прийти на вашу машину.


Cron регистрирует основную информацию /var/log/messages, но отправляет любые выходные данные программы вызывающему пользователю.



Я наткнулся на эту ветку несколько лет назад, испытывая те же проблемы, и совсем недавно натолкнулся на решение вышеупомянутых случаев Рикардо. Отсутствие электронной почты трудно обнаружить (как вы упомянули), и вы определенно не хотите спамить вашу электронную почту root @ yourcompany. Если интересно, проверьте deadmanssnitch.com. , Этот инструмент, кажется, решает вышеупомянутые случаи. Кажется довольно простым в использовании — просто добавьте немного кода, который инструмент дает вам в ваш cronjob. Если ваша работа не выполняется по указанному внутреннему, вы будете предупреждены. Если ваша работа начнет работать снова, вы также будете предупреждены.


Я использую vixie-cron, поэтому я не знаю, относится ли это ко всему. Но у меня есть dead.letterфайл, который содержит весь вывод работы.

В моей /root/папке я crons.cronустановил crontab, запустив crontab /root/crons.cron. dead.letterбудет создан в /root/.

Изменить
Я просто Google’d dead.letter, и это недоставленная почта. Это никак не связано с cron. Если у вас не настроена почта (как у меня), у вас будет файл.


Для новичков это может быть болью для отладки. Обязательно не меняйте значения минут и часов. Сначала приходит минута, потом час. Когда вы предоставляете значения меньше 12 для каждого, он примет их, но может работать не так, как ожидалось, или вообще не работать.


cron is a job scheduler for Linux and Unix-like operating systems. It comes pre-installed on all Linux distributions and is most suitable for automating repetitive tasks.

For cron to function properly, you must periodically check that the utility is running fine on your system. You can do that using four different ways, including checking the cron service status, examining cron logs, running a test cron job, and listing down running processes on your system.

What Is cron?

The silent job handler, cron, automates and schedules system tasks. Users who configure and maintain software environments make use of cron to schedule jobs such as commands or shell scripts—also called cron jobs—to run periodically at fixed times or intervals.

cron automates system maintenance or administration tasks that you might need to carry out frequently.

How to Check if cron Is Working on Linux

Here are some of the ways you can check if cron is working properly:

Method 1: Check the cron Service Status on Linux

One way to check whether cron is working is by checking the status of the cron service by running a basic Linux command. Open the Linux terminal by pressing Ctrl + Alt + T and use the systemctl command to check the status of cron:

 sudo systemctl status cron 

If you see the following output, this means cron is active and running fine on your system.

cron status displayed on ubuntu terminal

But what if cron is in an inactive state as shown below?

cron service stopped on ubuntu

You can start the service like this:

 sudo service cron start 

After starting the cron service, enable it so that it starts every time the system reboots:

 sudo service cron enable 

Method 2: Check cron Logs on Linux

Another way to check if cron is working properly is by examining the log files. cron logs are stored in the /var/log/syslog directory on Linux.

syslog is a protocol that Linux systems use to centralize event data logs. Logs are then accessed to perform audits, monitoring, troubleshooting, reporting, and other necessary IT operational tasks.

You can see the cron job logs in the syslog file by executing the following command:

 grep CRON /var/log/syslog 

You will see a similar output indicating that cron is running fine and its logs are being stored in the log file:

cron logs displayed on ubuntu terminal

As the syslog folder contains other system logs along with the cron logs, it can be a little tricky to examine only the cron-related logs in the file. You can resolve this by creating a separate log file that only stores cron entries that appear in the syslog file.

To do that, open the following file using the nano editor:

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

Locate the line that starts with:

 #cron.* 

Uncomment this line by removing the hash (#) sign. Then, save and exit the file by pressing Ctrl + X, then press Y and hit Enter.

Restart the rsyslog service by issuing this command:

 sudo service rsyslog restart 

You will now receive logs in the cron.log file located in the /var/log directory.

If your terminal fails to fetch any logs, that could mean cron is not running. In that case, confirm if cron is working or not using other methods.

Method 3: Running a cron Job on Linux

You can also check if cron is working by simply creating a test cron job and executing it. If the job succeeds in performing the task, this means it’s functioning fine.

You first need to create a Bash script. Bash scripting allows you to automate everyday tasks on Linux.

Let’s create a Bash script that will print “my cronjob is working!” into a TXT file. To create the file, first, find out your present working directory using this command:

 pwd 

Create a file in the current directory using the touch command:

 touch file.txt 

After this, create a Bash file using nano:

 nano script.sh 

Add the following contents to the file:

 #! /usr/bin/bash
echo "my cronjob is working!" >> /home/username/file.txt

bash.sh script created for cronjob

Make sure to provide the correct location of the text file that you created. Save and exit the file by pressing Ctrl + X, then Y, and hit Enter.

Give execute permissions to the Bash script:

 chmod +x script.sh 

Now create a cron job to execute the script. To do that, open the crontab file with:

 crontab -e 

Enter the following line at the end of the file.

 * * * * * /path/to/script.sh 

The five asterisks match the time of execution, in which the first asterisk represents the minutes, the second one represents hours, the third asterisk means the day, the fourth one indicates the month, and the last asterisk indicates the year.

The name of the executable file and its path is also mentioned in the file.

After saving and closing the file, you will see a “crontab: installing new crontab” message on the terminal.

To check if the cron job worked or not, go to the directory of file.txt and print its contents on the terminal using cat:

 cat file.txt 

ubuntu terminal displaying contents of a text file

This indicates that cron is working fine.

Method 4: Check Running Processes on Linux

Another way you can check if the cron daemon is working is by listing down the running processes on your system. You can achieve this using the ps command. The cron daemon will show up in the output as crond.

 ps -ef | grep crond 

ubuntu terminal showing crond process is running

This confirms that the cron process is running on your Linux system.

Automate and Schedule System Tasks With cron

cron is one of the most vital utilities on Linux that allows the system to perform efficiently. Sometimes you have to check whether cron is working while troubleshooting system issues.

You can achieve this by either checking cron logs or seeing the running processes on your system. You can also check the cron status using the systemctl utility. Besides that, running a test cron job can also tell you if the service is running or not.

The smooth working of cron allows you to automate and schedule everyday system jobs. Most of the cron jobs are automatically created by installed applications. Automating and scheduling tasks improves the overall system performance and keeps it healthy.

Asked
8 years, 2 months ago

Viewed
6k times

I have 2 cron jobs that were running fine but now stopped running. I looked through my crontab and everything looks OK. How can I tell if these jobs are running? is there a place where cron stores errors? Where do I look for cron specific errors, or even a record of the cron jobs that ran prior.

asked Apr 1, 2015 at 15:01

EastsideDev's user avatar

2

Try directing the output to a log file. Just make sure that it exists and is writable by whatever user the cronjob is running as. (In my example, this would be cyphertite)

I also recommend running date somewhere at the beginning of your script so that you get the date in the log file.

 0 15 * * *    /home/andrew/daily-backup.sh >> /var/log/cyphertite.log

Additionally, cron logs are directed to /var/log/syslog if that helps

answered Apr 1, 2015 at 15:23

Andrew Meyer's user avatar

2

Понравилась статья? Поделить с друзьями:
  • Cron ошибка 127
  • Crmp произошла ошибка во время загрузки
  • Crmp ошибка cannot find 1536x864x32 video mode
  • Crlogtransport exe ошибка приложения
  • Crl недействителен ошибка построения пути сертификации криптопро арм