Ich hoffe, in dieser Liste richtig zu sein...
1.
Seit einiger Zeit bekomme ich folgende Meldung per Mail alle 15 Min vom
CRON:
Date: Sun, 29 Jun 2003 11:45:00 +0200 (CEST)
From: Cron Daemon
* Christoph Lockingen schrieb am Sonntag, 2003-06-29:
Seit einiger Zeit bekomme ich folgende Meldung per Mail alle 15 Min vom CRON:
Subject: Cron
root test -x /usr/lib/cron/run-crons && /usr/lib/cron/run-crons >/dev/null 2>&1 /bin/sh: line 1: root: command not found
Du hast den Inhalt von /etc/crontab in die crontab eines Benutzers übertragen. Nur /etc/crontab enthält den Namen des Benutzers, als der der Job ausgeführt werden soll, als sechsten Parameter. In benutzerspezifischen crontabs fängt da schon der auszuführende Befehl an.
2. Was hat ein * in der Crontab an erster Stelle zu bedeuten.
Es bedeutet, daß die Minute bei der Entscheidung, ob der Job ausgeführt werden soll, nicht berücksichtigt wird. man 5 crontab ist dein Freund. -- Christian Ullrich Registrierter Linux-User #125183 "Remember: 'I am a person. I have a right to the ball.'"
[Christian Ullrich]:
* Christoph Lockingen schrieb am Sonntag, 2003-06-29:
Seit einiger Zeit bekomme ich folgende Meldung per Mail alle 15 Min vom CRON:
Subject: Cron
root test -x /usr/lib/cron/run-crons && /usr/lib/cron/run-crons >/dev/null 2>&1 /bin/sh: line 1: root: command not found ^^^^^^^^^^^^^^^^^^^^^^^ Du hast den Inhalt von /etc/crontab in die crontab eines Benutzers übertragen. Nur /etc/crontab enthält den Namen des Benutzers, als der der Job ausgeführt werden soll, als sechsten Parameter. In benutzerspezifischen crontabs fängt da schon der auszuführende Befehl an.
Genau. Deshalb versucht crond den Befehl 'root' auszuführen und kann ihn nicht finden (steht ja in der Fehlermeldung, s.o.) Lösche einfach in jeder Zeile den Benutzernamen root vor dem auszuführenden Befehl.
2. Was hat ein * in der Crontab an erster Stelle zu bedeuten.
Es bedeutet, daß die Minute bei der Entscheidung, ob der Job ausgeführt werden soll, nicht berücksichtigt wird. man 5 crontab ist dein Freund.
Naja, genau genommen wird jede Minute der Befehl ausgeführt (ggf. durch die anderen Zeitangaben auf bestimmte Stunden, Monate oder Tage begrenzt). */10 bedeutet dann: alle 10 Minuten. Das kann man auch bei den anderen Zeitangaben so verwenden, beim Monat wäre */3 dann eben einmal im Quartal. -- Gruß MaxX
Matthias Houdek schrieb: [...]
Lösche einfach in jeder Zeile den Benutzernamen root vor dem auszuführenden Befehl.
Nein, wie Bernd Brodesser schon schrieb, hat er offenbar eine Kopie von /etc/crontab root zugeordnet. [1] Nötig ist hier: 1. Nachsehen ob /etc/crontab existiert und ok ist. ggf. eine Sicherungskopie erstellen. 2. Als root crontab -r ausführen. Damit wird /var/spool/cron/tabs/root entfernt. Trifft 1. nicht zu, so muss die Datei /var/spool/cron/tabs/root nach /etc/crontab kopiert, und dann 2. ausgeführt werden. so long... bernd [1] An Christoph Lockingen: Ob mit KDE oder direkt via 'crontab [-u user] File': Es ist schon sehr leichtsinnig solche Dinge zu tun, ohne zu wissen was da passiert. man 8 cron man 1 crontab man 5 crontab ist schneller gelesen als die Fehler aus so einer unbedachten Aktion beseitigt.
On Son, 29 Jun 2003 at 13:53 (+0200), Bernd Obermayr wrote:
Matthias Houdek schrieb: [...]
Lösche einfach in jeder Zeile den Benutzernamen root vor dem auszuführenden Befehl.
Nein, wie Bernd Brodesser schon schrieb, hat er offenbar eine Kopie von /etc/crontab root zugeordnet. [1]
wahrscheinlich mit crontab /etc/crontab
Nötig ist hier: 1. Nachsehen ob /etc/crontab existiert und ok ist. ggf. eine Sicherungskopie erstellen. 2. Als root crontab -r ausführen. Damit wird /var/spool/cron/tabs/root entfernt.
Trifft 1. nicht zu, so muss die Datei /var/spool/cron/tabs/root nach /etc/crontab kopiert, und dann 2. ausgeführt werden.
[...] Das ist so nicht ganz korrekt. Auch der Vorschlag von Matthias ist richtig, wenn es sich um die Benutzer-crontab von root handelt - und das ist Unix-Standard. /etc/crontab ist was Linux-spezifisches und IMHO total daneben, weil z. B. das crontab-Kommando nach wie vor auf die benutzerspezifischen crontabs geht: k500:~ # crontab -l no crontab for root k500:~ # cat /etc/crontab SHELL=/bin/sh PATH=/usr/bin:/usr/sbin:/sbin:/bin:/usr/lib/news/bin MAILTO=root # # check scripts in cron.hourly, cron.daily, cron.weekly, and # cron.monthly # -*/15 * * * * root test -x /usr/lib/cron/run-crons && /usr/lib/cron/run-crons >/dev/null 2>&1 59 * * * * root rm -f /var/spool/cron/lastrun/cron.hourly 14 0 * * * root rm -f /var/spool/cron/lastrun/cron.daily 29 0 * * 6 root rm -f /var/spool/cron/lastrun/cron.weekly 44 0 1 * * root rm -f /var/spool/cron/lastrun/cron.monthly Deshalb finde ich /etc/crontab schlicht und ergreifend Schwachsinn, denn _kein_ Benutzer kann die Einträge in /etc/crontab mit den normalerweise dafür vorgesehenen Kommandos (man 1 crontab, wie Du schon schriebst) pflegen - und ein unprivilegierter User kann nichtmal an die Datei ran! Ich habe noch nie verstanden, warum dieses Ungetüm jemals eingeführt wurde. Der einzige Grund, den ich mir denken kann, ist, dass /etc/crontab die Pflege für den Systemverwalter erleichtert, wenn er cron-Jobs mit verschiedenen Benutzer-Accounts (also auch mit abgestuften Rechten) einrichten will - wie z. B. einen mysql-Job oder so. Das ist aber IMHO auch unnötig, weil root ja per crontab-Kommando auch die crontabs anderer Benutzer pflegen könnte (und dann gleich sicher wäre, dass er keinen Blödsinn als Benutzernamen schreibt): k500:~ # crontab -e -u wrdlwrmpft crontab: user `wrdlwrmpft' unknown Mit /etc/crontab wird doch nur Konfusion angerichtet - wären wenigstens die einschlägigen Kommandos so schlau und würden diese Datei berücksichtigen! BTW: Ich weiss nicht mal, ob /var/spool/cron/allow und /var/spool/cron/deny durch die Einträge in /etc/crontab nicht auch ausgehebelt werden (wer Lust hat, kann das ja mal testen). Kurz gefasst: /etc/crontab ist IMHO so nützlich wie eine Laus in einem Raumanzug - es juckt, aber Du kannst Dich nicht kratzen, es sei denn, Du bist Gott auf Deinem System. Und dann weisst Du noch nicht mal, ob Du anstelle der Laus Deine Nase amputiert hast. Jan
[Bernd Obermayr]:
Matthias Houdek schrieb: [...]
Lösche einfach in jeder Zeile den Benutzernamen root vor dem auszuführenden Befehl.
Nein, wie Bernd Brodesser schon schrieb, hat er offenbar eine Kopie von /etc/crontab root zugeordnet. [1]
Genau das ist aber sinnvoll. Ich hab auf meinem System keine /etc/crontab (mehr). Wozu auch? In /var/spool/cron/tabs kann ich für jeden User spezifisch eine anlegen, die jeder User dann auch selbst editieren kann.
Nötig ist hier: 1. Nachsehen ob /etc/crontab existiert und ok ist. ggf. eine Sicherungskopie erstellen.
Nee, löschen das Teil. Sofort. Jetzt. (Vorher natürlich nach /var/spool/cron/tabs/root kopieren, wenn noch nicht geschehen ;-)
2. Als root crontab -r ausführen. Damit wird /var/spool/cron/tabs/root entfernt.
Warum sollte man die userspezifische Datei entfernen? Dann kann ich ja mit dem Befehl 'crontab' keine Cronjobs mehr bearbeiten.
Trifft 1. nicht zu, so muss die Datei /var/spool/cron/tabs/root nach /etc/crontab kopiert, und dann 2. ausgeführt werden.
Genau das macht man nicht. Warum? -- Gruß MaxX
* Christoph Lockingen schrieb am 29.Jun.2003:
Seit einiger Zeit bekomme ich folgende Meldung per Mail alle 15 Min vom CRON:
Date: Sun, 29 Jun 2003 11:45:00 +0200 (CEST) From: Cron Daemon
To: root@domain.tld Subject: Cron root test -x /usr/lib/cron/run-crons && /usr/lib/cron/run-crons >/dev/null 2>&1 /bin/sh: line 1: root: command not found ==> WER KANN MIR HELFEN? <== Bevor jemand fragt. Die Crontab sieht so aus:
Welche Crontab? Es gibt da zwei verschiedene, einmal auf /etc/crontab, da wäre diese crontab richtig und dann gibt es nochmal crontabs auf /var/spool/cron/tab/$USER, hier steht der User schon im Namen, und darf nicht mehr in der Tabelle auftauchen. Diese Crontab wird durch den Befehl crontab angelegt. Ich vermute mal, Du hast, wahrscheinlich als root, mit crontab, oder einem X Oberfläche die crontab neu angelegt und dabei die alte kopiert. Leider war es die flasche crontab.
SHELL=/bin/sh PATH=/usr/bin:/usr/sbin:/sbin:/bin:/usr/lib/news/bin MAILTO=root # # check scripts in cron.hourly, cron.daily, cron.weekly, and cron.monthly # -*/15 * * * * root test -x /usr/lib/cron/run-crons && /usr/lib/cron/run-crons >/dev/null 2>&1 59 * * * * root rm -f /var/spool/cron/lastrun/cron.hourly 14 0 * * * root rm -f /var/spool/cron/lastrun/cron.daily 29 0 * * 6 root rm -f /var/spool/cron/lastrun/cron.weekly 44 0 1 * * root rm -f /var/spool/cron/lastrun/cron.monthly
So in etwa sollte /etc/crontab aussehen. Wenn es aber in /var/spool/cron/tab/*/* steht, so ist es flasch.
2. Was hat ein * in der Crontab an erster Stelle zu bedeuten.
Die erste Stelle gibt die Minuten an, die zweite die Stunden, die dritte den Tag, die vierte den Monat und die fünfte den Wochentag. Überall steht der * für jede(n) also jede Minute, jede Stunde, jeden Tag, jeden Moat und jeden Wochentag. */15 an erster Stelle steht für jede 15 Minuten. Bernd -- Bitte die Etikette beachten: http://www.suse-etikette.de.vu/etikette.html Bitte Realnamen angeben, kein Vollquoting, kein Html, PGP oder Visitenkarten benutzen. Signatur mit "-- " abtrennen, bei Antworten "Re: " voranstellen, sonst nichts. |Zufallssignatur 4
participants (6)
-
B.Brodesser@t-online.de
-
Christian Ullrich
-
Christoph Lockingen
-
Illuminatus@t-online.de
-
Jan.Trippler@t-online.de
-
Matthias Houdek