Puncte:1

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

drapel 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?

drapel ar
Încercați să adăugați `/full/path/to/sendmail` în scriptul dvs.
drapel hr
@user68186 a fost de acord - iirc sendmail este de obicei în `/usr/sbin`, care nu face parte din `PATH` implicit al cron - vezi, de exemplu, acest răspuns înrudit [Nu se poate monta un alt server în crontab cu 16.04](https:// askubuntu.com/a/919512/178692). De asemenea, scriptul dvs. definește o funcție SEND_EMAIL - dar nu pare să o numească efectiv.
muru avatar
drapel us
De fapt, nu apelați funcția `SEND_EMAIL` din ceea ce văd.
Puncte:1
drapel 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
Puncte:0
drapel ve

Vă rugăm să verificați dând întârzierea după cum urmează, dacă ar putea fi cauza principală. dacă tot, acest lucru nu va funcționa, trebuie să verificați scriptul.

Pentru a edita crontab

$ crontab -e
1 * * * * /root/clearcache.sh

Exemplu de definire a postului:

.---------------- minut (0 - 59)

| .------------- oră (0 - 23)

| | .---------- ziua lunii (1 - 31)

| | | .------- luna (1 - 12) SAU ian,feb,mar,apr ...

| | | | .---- ziua săptămânii (0 - 6) (duminică=0 sau 7) SAU 

soare, luni, marți, miercuri, joi, vineri, sat

| | | | |

* * * * * comanda nume de utilizator care urmează să fie executată

$ sudo systemctl reporniți cron.service

Și încearcă. De obicei, ar trebui să funcționeze.

Terrance avatar
drapel id
Înțelegi că asta înseamnă să rulezi jobul la 1 minut după fiecare oră? Deci lucrarea ar rula doar o dată pe oră. Fiecare minut este fie `*/1`, fie doar `*`.
Brijesh Sondarva avatar
drapel ve
Odată ce m-am confruntat cu aceeași problemă și a fost rezolvată adăugând o întârziere...
Terrance avatar
drapel id
Nu este nimic în neregulă cu adăugarea unei întârzieri. Problema cu declarația dvs. este că ar trebui să aștepte 1 oră înainte ca jobul cron să ruleze din nou dacă l-ar testa. Când testați un job cron, ați dori ca acesta să ruleze cât mai des posibil, astfel încât să îl puteți testa. Timpul tău aici ar însemna că l-aș putea testa doar de 24 de ori pe zi. Poate întârzieți-l cu 3 minute făcându-l `*/3` sau la fiecare 2 minute `*/2`.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.