Рейтинг:1

Cronjob is not running properly but work while run command (./)

флаг in

I have this script for file testfile.sh:

SEND_EMAIL(){

TO="[email protected]"
CC_MAIL="[email protected]"

sendmail $TO,$CC_MAIL <<EOF
From: [email protected]
To: $TO
Cc: $CC_MAIL
Subject:Report
Content-Type: text/html;
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
<!--
body,td,th,table {
        font-family: Verdana, Arial, Helvetica, sans-serif;
        font-size: 12px;
        empty-cells: show;
}
-->
</style>
</head>
<body>
Hi Team,<br><br>

Fyi, IT Operation repot<br>
<br>

<table cellpadding="0" cellspacing="0" border="1" bordercolor="black"  style="wi
dth: 500px">
        <tr bgcolor="silver"  align="center" style="font-weight:bold">
                <td>REPORTED_BY</td>
                <td>TICKET_ID</td>
                <td>HELP_TOPIC</td>
                <td>SUBJECT</td>
                <td>CREATION_DATE</td>
                <td>REOPENED</td>
                <td>EST_DUEDATE</td>
                <td>UPDATED</td>
                <td>PRIORITY</td>
                <td>USERNAME</td>
        </tr>
</table>
<br>
<br>

Regards,<br>

IT Team

</body>
</html>
EOF

}

In crontab, I have this line:

* * * * * /bin/sh /opt/testfile.sh

I have restarted crontab, but nothing is happening.

If I run with the command manually, like ./test8.sh, then I receive an email.

Why is this not working from crontab?

флаг ar
Попробуйте добавить `/full/path/to/sendmail` в свой скрипт.
флаг hr
@ user68186 согласился - iirc sendmail обычно находится в `/usr/sbin`, который не является частью `PATH` cron по умолчанию - см., например, этот связанный ответ [Не удается смонтировать другой сервер в crontab с 16.04] (https:// askubuntu.com/a/919512/178692). Кроме того, ваш скрипт определяет функцию SEND_EMAIL, но не вызывает ее.
muru avatar
флаг us
Насколько я вижу, на самом деле вы не вызываете функцию `SEND_EMAIL`.
Рейтинг:1
флаг in

I solved it by adding the path /sbin/sendmail on the script

#!/bin/bash

SEND_EMAIL(){

TO="[email protected]"
CC_MAIL="[email protected]"

/sbin/sendmail $TO,$CC_MAIL <<EOF
From: [email protected]
To: $TO
Cc: $CC_MAIL
Subject:Report
Content-Type: text/html;
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
<!--
body,td,th,table {
        font-family: Verdana, Arial, Helvetica, sans-serif;
        font-size: 12px;
        empty-cells: show;
}
-->
</style>
</head>
<body>
Hi Team,<br><br>

Fyi, IT Operation repot<br>
<br>

<table cellpadding="0" cellspacing="0" border="1" bordercolor="black"  style="wi
dth: 500px">
        <tr bgcolor="silver"  align="center" style="font-weight:bold">
                <td>REPORTED_BY</td>
                <td>TICKET_ID</td>
                <td>HELP_TOPIC</td>
                <td>SUBJECT</td>
                <td>CREATION_DATE</td>
                <td>REOPENED</td>
                <td>EST_DUEDATE</td>
                <td>UPDATED</td>
                <td>PRIORITY</td>
                <td>USERNAME</td>
        </tr>
</table>
<br>
<br>

Regards,<br>

IT Team

</body>
</html>
EOF


}
SEND_EMAIL
Рейтинг:0
флаг ve

Пожалуйста, проверьте, указав время задержки, как показано ниже, если это может быть основной причиной. если все же это не сработает, вам нужно проверить скрипт.

Для редактирования crontab

$ кронтаб -е
1 * * * * /root/clearcache.sh

Пример определения работы:

.---------------- минута (0 - 59)

| .------------- час (0 - 23)

| | .---------- день месяца (1 - 31)

| | | .------- месяц (1 - 12) ИЛИ январь, февраль, март, апрель ...

| | | | .---- день недели (0 - 6) (воскресенье=0 или 7) ИЛИ 

вс,пн,вт,ср,чт,пт,сб

| | | | |

* * * * * команда user-name для выполнения

$ sudo systemctl перезапустить cron.service

И попробуйте. Обычно это должно сработать.

Terrance avatar
флаг id
Вы понимаете, что это означает запускать задание в 1 минуту каждого часа? Таким образом, задание будет выполняться только один раз в час. Каждая минута — это либо `*/1`, либо просто `*`.
Brijesh Sondarva avatar
флаг ve
Однажды я столкнулся с той же проблемой, и она была решена путем добавления временной задержки...
Terrance avatar
флаг id
Нет ничего плохого в том, чтобы добавить задержку. Проблема с вашим утверждением заключается в том, что им пришлось бы ждать 1 час, прежде чем задание cron снова запустится, если бы они тестировали его. При тестировании задания cron вы хотели бы, чтобы оно запускалось как можно чаще, чтобы вы могли его протестировать. Ваше время здесь означало бы, что я могу проверять это только 24 раза в день. Может быть, сделать задержку на 3 минуты, сделав `*/3` или каждые 2 минуты `*/2`.

Ответить или комментировать

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