Cronjob: Nicht bei allen Tasks eine Mail - geht das?

Bash, Shell, PHP, Python, Perl, CGI
sbrinkmann
Posts: 34
Joined: 2002-11-21 23:23
Location: Solingen

Cronjob: Nicht bei allen Tasks eine Mail - geht das?

Post by sbrinkmann »

Hallo!

Mein Server "versorgt" mich dank Cron jeden Tag mit vielen vielen E-Mails. Nun will ich natürlich wissen, ob das alles auch gut gelaufen ist. ABER: Ein Task wird einmal pro Stunde ausgeführt und das hätte ich nicht gerne jedes Mal gemeldet. Gibt es die Möglichkeit, die Crontab so umzubauen, dass dieser Task nicht mailt, alle anderen aber schon?
captaincrunch
Userprojekt
Userprojekt
Posts: 7066
Joined: 2002-10-09 14:30
Location: Dorsten

Re: Cronjob: Nicht bei allen Tasks eine Mail - geht das?

Post by captaincrunch »

Meinst du die cron-"Standardmail", die dir die Ausgabe des Scripts liefert, oder einen von dir definierten Text ?

Für's erste sollte ein

Code: Select all

0 * * * * {script} > /dev/null > 2>&1
absolut ausreichen.
DebianHowTo
echo "[q]sa[ln0=aln256%Pln256/snlbx]sb729901041524823122snlbxq"|dc
sbrinkmann
Posts: 34
Joined: 2002-11-21 23:23
Location: Solingen

Re: Cronjob: Nicht bei allen Tasks eine Mail - geht das?

Post by sbrinkmann »

CaptainCrunch wrote:Meinst du die cron-"Standardmail", die dir die Ausgabe des Scripts liefert, oder einen von dir definierten Text ?

Für's erste sollte ein

Code: Select all

0 * * * * {script} > /dev/null > 2>&1
absolut ausreichen.
Genau diese Ausgabemail meine ich. Aber: Ich habe jetzt mal Deinen Code eingebaut und dann wird das Script scheinbar überhaupt nicht mehr ausgeführt. Es geht darum, dass das Script einmal pro Stunde Banner neu gewichten soll und seit ich diesen oben genannten Code eingebaut hat, passiert das nicht mehr (der Ad-Server loggt es mit, daher habe ich es gesehen). Jetzt habe ich den Code wieder rausgenommen. Reicht vielleicht nur ein "> /dev/null" oder braucht man diese "> 2>&1" (was bedeutet das eigentlich?) wirklich?
captaincrunch
Userprojekt
Userprojekt
Posts: 7066
Joined: 2002-10-09 14:30
Location: Dorsten

Re: Cronjob: Nicht bei allen Tasks eine Mail - geht das?

Post by captaincrunch »

Wenn du nur ein > /dev/null machst, leitest du den stdout-Dateideskriptor nach /dev/null um. O.g. Dateideskriptor ist in den allermeisten Fällen das Terminal, auf dem der Job ausgeführt wird. Durch das 2>&1 leitest du auch noch stderr, also die Fehlerausgabe nach /dev/null um, sprich : dein Script würde keinerlei Bildschirmausgabe liefern.

Ich weiß ja nicht, wie dein Script vorgeht, aber anscheiend ist es auf die Ausgaben angewiesen. OK, dann probier doch mal, ein Minuszeichen vor die erste 0 zu setzen.
DebianHowTo
echo "[q]sa[ln0=aln256%Pln256/snlbx]sb729901041524823122snlbxq"|dc
sbrinkmann
Posts: 34
Joined: 2002-11-21 23:23
Location: Solingen

Re: Cronjob: Nicht bei allen Tasks eine Mail - geht das?

Post by sbrinkmann »

CaptainCrunch wrote:Ich weiß ja nicht, wie dein Script vorgeht, aber anscheiend ist es auf die Ausgaben angewiesen. OK, dann probier doch mal, ein Minuszeichen vor die erste 0 zu setzen.
In meinem Fall handelt es sich um ein .sh Script, dass zwei Befehlen enthält. In der ersten Zeile wird per WGet eine Seite von einem server abgerufen und in der 2. Zeile wird diese Datei mit rm gelöscht. (Es geht nur darum, auf dem Server einen Prozess laufen zu lassen).
captaincrunch
Userprojekt
Userprojekt
Posts: 7066
Joined: 2002-10-09 14:30
Location: Dorsten

Re: Cronjob: Nicht bei allen Tasks eine Mail - geht das?

Post by captaincrunch »

Dann wüsste ich nicht, warum das Script nicht durchlaufen sollte, wenn es keine Ausgabe liefert.
DebianHowTo
echo "[q]sa[ln0=aln256%Pln256/snlbx]sb729901041524823122snlbxq"|dc
Anonymous

Re: Cronjob: Nicht bei allen Tasks eine Mail - geht das?

Post by Anonymous »

Evtl. weil in dem vorgeschlagenen Eintrag drei ">" drin sind?

Ich hätte jetzt so spontan dazu tendiert das mittlere wegzulassen...

Naja, mal ausprobieren...
seessle@cvs:~$ echo "Hallo" >/dev/null > 2>&1
bash: syntax error near unexpected token `2>'
seessle@cvs:~$ echo "Hallo" >/dev/null 2>&1
seessle@cvs:~$
Scheint also wirlklich eins zuviel zu sein.

Nico
captaincrunch
Userprojekt
Userprojekt
Posts: 7066
Joined: 2002-10-09 14:30
Location: Dorsten

Re: Cronjob: Nicht bei allen Tasks eine Mail - geht das?

Post by captaincrunch »

Stimmt ... hast natürlich Recht. Die Umleitung soll schließlich vom stderr (2) auf stdout (1) gehen, das > in der Mitte ist überflüssig wie ein Kropf ... :oops:
DebianHowTo
echo "[q]sa[ln0=aln256%Pln256/snlbx]sb729901041524823122snlbxq"|dc
sbrinkmann
Posts: 34
Joined: 2002-11-21 23:23
Location: Solingen

Re: Cronjob: Nicht bei allen Tasks eine Mail - geht das?

Post by sbrinkmann »

Hallo!

Super, jetzt läuft es. Der Task wird weiterhin ausgeführt, aber es gibt keine Ausgabe und damit keine E-Mail mehr.

Vielen Dank und guten Rutsch!
Anonymous

Re: Cronjob: Nicht bei allen Tasks eine Mail - geht das?

Post by Anonymous »

Ich würde übrigens (vielleicht nicht bei diesem Skript, aber bei komplizierteren) zu folgendem tendieren:

Code: Select all

/script.sh > /dev/null 2> skript_errors.out
So kannst Du - auch ohne Mails - in der Datei skript_errors.out zumindest Ausführungsfehler nachvollziehen.

Ist aber Geschmacksache :-)
captaincrunch
Userprojekt
Userprojekt
Posts: 7066
Joined: 2002-10-09 14:30
Location: Dorsten

Re: Cronjob: Nicht bei allen Tasks eine Mail - geht das?

Post by captaincrunch »

So kannst Du - auch ohne Mails - in der Datei skript_errors.out zumindest Ausführungsfehler nachvollziehen.
Guter Einwand ... mache ich auch desöfteren ...
DebianHowTo
echo "[q]sa[ln0=aln256%Pln256/snlbx]sb729901041524823122snlbxq"|dc
thiefmaster
Posts: 59
Joined: 2002-08-31 19:15

Re: Cronjob: Nicht bei allen Tasks eine Mail - geht das?

Post by thiefmaster »

sbrinkmann wrote:
CaptainCrunch wrote:Ich weiß ja nicht, wie dein Script vorgeht, aber anscheiend ist es auf die Ausgaben angewiesen. OK, dann probier doch mal, ein Minuszeichen vor die erste 0 zu setzen.
In meinem Fall handelt es sich um ein .sh Script, dass zwei Befehlen enthält. In der ersten Zeile wird per WGet eine Seite von einem server abgerufen und in der 2. Zeile wird diese Datei mit rm gelöscht. (Es geht nur darum, auf dem Server einen Prozess laufen zu lassen).
Das kann man auch mit einem Befehl machen...

Einfach den Parameter --delete-after an wget übergeben