Cronjob mit der Mailfunktion


0

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

mail -s "Test Mail" user@example.com < 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" user@example.com < 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!

linux  bash  cron 

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.


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.