Cronjob mit der Mailfunktion

0

Wenn ich diesen Mail-Befehl über das Terminal ausführe, gibt es keine Probleme:

mail -s "Test Mail" [email protected] < home/user/example.txt

Wenn ich es einem Bash-Skript hinzufüge, das dies hauptsächlich tut, gibt es keine Probleme:

tmpString=$(ssh user@server `perl -s` < /home/user/perlscript.pl 2> errorfile.txt)
mail -s "Test Mail" [email protected] < home/user/example.txt

Wenn ich jedoch eine Crontab zum Ausführen des Bash-Skripts erstelle, wird die E-Mail nie gesendet:

10 14 * * * /home/user/mybashscript 

Ich erhalte jedoch eine E-Mail von cron job über die Ausgabe. Die E-Mail mit dem Betreff "Test Mail" kommt nie an.

Hat jemand dieses Problem schon einmal gehabt?

Die Spur:

Ok, ich werde nur einige der persönlichen Namen ändern. Die E-Mail sollte vor dem letzten Echo gesendet werden, wird aber nicht in der Ablaufverfolgung angezeigt?

+ . /home/user/.bashrc
++ PS1=`\u@\h \w$`
++ TERM=vt100
++PATH=/usr/sbin:/usr/bin:/bin
++ ssh user@example `perl -s`
+ scriptString=`$VAR` = ``\``Build was OK`\``;`
+echo `$VAR1`= ``\``Build was OK`\``;`
$VAR1 = `Build was OK`;
+ [[ $VAR1 = `Build was OK`; == *\B\u\i\l\d\ \f\a\i\l\e\d* ]]
+ echo

Vielen Dank!


quelle
Was sind die Berechtigungen einer Datei? Konnten Sie einen weiteren Cron-Job mit einer anderen Bash-Datei hinzufügen, d. H. Einfach echo es in einer Datei, um sicherzustellen, dass Ihr Cron-Job ausgeführt werden kann?
pankar
Wenn der Cron-Jub ausgeführt wird, erhalte ich eine E-Mail mit dem Echo, sodass ich der Meinung bin, dass er ordnungsgemäß ausgeführt wird.

Antworten:

0

crontab habe nicht die gleiche Umgebung wie du, also im oberen Teil deines Skripts nach dem shebang , stellen :

. ~/.bashrc || . /etc/profile

Dadurch wird PATH für den untergeordneten Prozess festgelegt.

Ändern Sie außerdem die shebang zu #!/bin/bash -x drehen Debug ON und in deinem crontab mach das :

* * * * * /path/to/script >/tmp/trace 2>&1

und komm wieder mit dem Debug-Trace.

Gilles Quenot
quelle
Danke für deine Antwort. Ich habe versucht, die Leitung hinzuzufügen, aber die E-Mail wird immer noch nicht gesendet.
Siehe meinen bearbeiteten Beitrag danach Außerdem
Gilles Quenot
Ok, ich werde nur einige der persönlichen Namen ändern. Die E-Mail sollte vor dem letzten Echo gesendet werden, wird aber nicht in der Ablaufverfolgung angezeigt? +. /home/user/.bashrc ++ PS1 = \u@\h \w$ ++ TERM = vt100 ++ PATH = / usr / sbin: / usr / bin: / bin ++ ssh user @ example perl -s + scriptString = $VAR = \ Build war in Ordnung `; `+ Echo $VAR1 = \ Build war in Ordnung `; `$ VAR1 = Build was OK; + [[$ VAR1 = Build was OK; == \ B \ u \ i \ l \ d \ f \ a \ i \ l \ e \ d ]] + Echo
Bitte fügen Sie es in Ihren Beitrag oder auf pastebin.com
Gilles Quenot
Ok, ich habe meinen ersten Beitrag bearbeitet