Manche Cron-Jobs sollen nicht gelogged werden

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
mrre
Beiträge: 31
Registriert: 16.02.2007 20:46:24
Kontaktdaten:

Manche Cron-Jobs sollen nicht gelogged werden

Beitrag von mrre » 18.07.2007 11:04:27

Hi,

Ich habe ein Script geschrieben, dass jede Minute ausgeführt wird. Das funktioniert auch.
Der cron schreibt dazu aber jede Minute eine Zeile in das syslog-File. Das würde ich gern abstellen.

Frage also: Wie kann ich bestimmte Cron-Jobs vom loggen ausschließen, andere nicht?

Vielen Dank im Voraus,

Markus

cosmac
Beiträge: 4576
Registriert: 28.03.2005 22:24:30

Beitrag von cosmac » 18.07.2007 11:54:26

hi,

schreib dir doch einfach ein eigenes cron:

Code: Alles auswählen

#!/bin/sh
#
# nslcron: cron "daemon" der nicht ins syslog schreibt

JOB=/home/mrre/minuten_job

while true ; do
   sleep $((60 - `date +%S`))
   echo `date '+%a %H:%M:%S'` "jetzt spielt" $JOB
   $JOB
done
Wenn du dieses Script einmal beim Booten startest, ruft es zu jeder
vollen Minute dein ursprüngliches Script auf. Die Ausgaben kannst
du nach /dev/null oder in eine eigene Log-Datei umlenken:

Code: Alles auswählen

./nslcron > /tmp/test.log 2>&1
Schöner (weil CPU-Zeit sparend) wäre es, wenn du die Endlos-Schleife
und das sleep gleich in dein Script packen würdest.
Beware of programmers who carry screwdrivers.

mrre
Beiträge: 31
Registriert: 16.02.2007 20:46:24
Kontaktdaten:

Beitrag von mrre » 18.07.2007 20:28:47

OK, das wäre natürlich möglich. Aber ist es nicht auch möglich, einige Cron-Jobs vom loggen auszuschließen. Denn der Übersichtlichkeit wegen wäre alles im crontab schon besser.

Interessent ist die Idee auf jeden Fall, aber warum ist es cpu-sparender, wenn die Schleife im anderen Script ist? Ist es nicht egal, an welcher Stelle der Sleep aufgerufen wird?

cosmac
Beiträge: 4576
Registriert: 28.03.2005 22:24:30

Beitrag von cosmac » 18.07.2007 21:07:12

Das sleep kostet ja gerade keine CPU-Zeit, wohl aber jeder Start eines
Scripts. Mit einem extra cron-Script wird das eigentliche Script immer
wieder neu gestartet und das könnte man sich in diesem Fall sparen.

Daß man einzelne Log-Einträge unterdrücken kann, kann ich mir nicht
vorstellen. Ansonsten hast du natürlich Recht, übersichtlicher ist es mit
dem echten cron. Aber ich nehm' eher auf Maschinen als auf Menschen
Rücksicht ;)

Wenn du dein Script aber als Dienst/Server/Daemon betrachtest, ist es
ganz natürlich, daß das ganz alleine läuft.
Beware of programmers who carry screwdrivers.

mrre
Beiträge: 31
Registriert: 16.02.2007 20:46:24
Kontaktdaten:

Beitrag von mrre » 18.07.2007 21:17:33

Aber ich nehm' eher auf Maschinen als auf Menschen
Rücksicht
*lach*

Überzeugt!

Gute Idee, ich werde es versuchen so zu implementieren. An so eine Lösung hatte ich gar nicht gedacht.
Danke.

Benutzeravatar
goeb
Beiträge: 348
Registriert: 26.08.2006 18:12:08
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von goeb » 19.07.2007 18:38:07

cosmac hat geschrieben:Daß man einzelne Log-Einträge unterdrücken kann, kann ich mir nicht vorstellen.
Mit syslog-ng sollte das möglich sein.

MfG, goeb

make-fun
Beiträge: 1
Registriert: 15.01.2008 00:16:34

Beitrag von make-fun » 15.01.2008 00:36:47

Hallo zusammen

Bin über eine Suche zu diesem Posting gekommen und hänge mich einfach mal noch dran… :wink:

Unter SUSE funktioniert in der CronTab ein führendes "-"(Minus) um den Eintrag nicht zu loggen.
Also Bsp:

Code: Alles auswählen

-*/1 * * * *    uptime |grep -v "load average: 0.00, 0.00, 0.00" >> /var/log/uptime.log
Warum funktioniert das nicht bei Debian?

Viele Grüße

P.S. mein erster Post hier…

Antworten