crontab wird nicht ausgeführt
hallo zusammen, ich habe folgende zeile in meine datei /etc/crontab eingefügt 30 8 * * * root webalizer das sollte jeden morgen um 8:30 den webalizer starten es passiert aber nix warum nicht?? mfg tobi -- GMX - Die Kommunikationsplattform im Internet. http://www.gmx.net
Tobias Korb schrieb:
hallo zusammen,
ich habe folgende zeile in meine datei /etc/crontab eingefügt 30 8 * * * root webalizer
warum nicht??
Möglich, das er den Pfad für webalizer nicht kennt, dann komplett eintragen oder den Pfad in die Variable PATH aufnehmen. Geht auch in crontab.
mfg tobi
-- GMX - Die Kommunikationsplattform im Internet. http://www.gmx.net
-- Um die Liste abzubestellen, schicken Sie eine Mail an: suse-linux-unsubscribe@suse.com Um eine Liste aller verfügbaren Kommandos zu bekommen, schicken Sie eine Mail an: suse-linux-help@suse.com
-- Mit freundlichen Grüßen Frank Jäschke Mail : fje-admin@tpnet.de oder (Internetservice Frank.Jaeschke@deteline.de DeTeLine GmbH Teleport Bitterfeld)
On 18 Apr 2002 at 8:50, Tobias Korb wrote:
hallo zusammen,
ich habe folgende zeile in meine datei /etc/crontab eingefügt 30 8 * * * root webalizer
das sollte jeden morgen um 8:30 den webalizer starten es passiert aber nix
warum nicht??
Weil "webalizer" nicht im Pfad liegt oder nicht ausführbar ist. Beachte: Das Environment eines cron-jobs entspricht NICHT dem normalen User-Environment. Andreas
Weil "webalizer" nicht im Pfad liegt oder nicht ausführbar ist.
ich habe den eintag geändert 30 8 * * * root /usr/bin/webalizer geht trotzdem nicht mfg tobi -- GMX - Die Kommunikationsplattform im Internet. http://www.gmx.net
* Tobias Korb schrieb am 18.Apr.2002:
Weil "webalizer" nicht im Pfad liegt oder nicht ausführbar ist.
ich habe den eintag geändert
30 8 * * * root /usr/bin/webalizer
/usr/bin sollte auch cron kennen.
geht trotzdem nicht
Wie hast Du das überprüft, daß es nicht geht? Wenn Du eine Bildschirmausgabe erwartest, dann hast Du verloren, da cron keinem Bildschirm zugeordnet ist. Jede Ausgabe muß umgelenkt werden. Bernd -- Alle meine Signaturen sind rein zufällig und haben nichts mit dem Text oder dem Schreiber zu tun, dem ich antworte. Falls irgendwelche Unrichtigkeiten dabei sein sollten, so bedauere ich das. Es wäre nett, wenn Du mich benachrichtigen würdest. |Zufallssignatur 0
* Tobias Korb schrieb am 18.Apr.2002:
Weil "webalizer" nicht im Pfad liegt oder nicht ausführbar ist.
ich habe den eintag geändert
30 8 * * * root /usr/bin/webalizer
/usr/bin sollte auch cron kennen.
geht trotzdem nicht
Wie hast Du das überprüft, daß es nicht geht? Wenn Du eine Bildschirmausgabe erwartest, dann hast Du verloren, da cron keinem Bildschirm zugeordnet ist. Jede Ausgabe muß umgelenkt werden.
ich habe das datum der letzten aktualisierung in webalizer überprüft und damit der cron auch ausgeführt word die uhrzeit mehrmals auf 8:29 gesetzt
an Tobias Korb 's Tastatur wurde am Donnerstag, 18. April 2002 20:16 folgendes notiert:
Wie hast Du das überprüft, daß es nicht geht? Wenn Du eine Bildschirmausgabe erwartest, dann hast Du verloren, da cron keinem Bildschirm zugeordnet ist. Jede Ausgabe muß umgelenkt werden.
ich habe das datum der letzten aktualisierung in webalizer überprüft und damit der cron auch ausgeführt word die uhrzeit mehrmals auf 8:29 gesetzt
su -c "less /var/log/messages | grep cron" da sollte er drin stehen. Hagen -- /HagK/ - hagk@hagk.de Bitte zuerst lesen: http://rfc.net/rfc1855.html (Netiquette) http://www.afaik.de/usenet/faq/zitieren/zitieren-3.php3
Hallo, Tobias Korb:
ich habe den eintag geändert
30 8 * * * root /usr/bin/webalizer
geht trotzdem nicht
Ich schätze, webalizer wird gefunden und gestartet, findet aber sein "Zubehör" nicht. Ich nutze mehrere Webalizers auf meinem Server und rufe die so auf: In crontab: 30 8 * * * root /home/sites/www.site.foo/web/webalizer_script In /home/sites/www.site.foo/web/webalizer_script: cd /home/sites/www.site.foo/web && ./webalizer Die webalizer.conf liegt im gleichen Ordner. Geht. Gruß, Ratti
Hallo, sowas blödes. Da habe ich dir eine falsche Antwort gegeben, weil ich faulerweise deinen Code kopiert habe. =%-) Ratti:
geht trotzdem nicht
Ich schätze, webalizer wird gefunden und gestartet, findet aber sein "Zubehör" nicht.
Ich nutze mehrere Webalizers auf meinem Server und rufe die so auf:
In crontab: 30 8 * * * root /home/sites/www.site.foo/web/webalizer_script
In /home/sites/www.site.foo/web/webalizer_script: cd /home/sites/www.site.foo/web && ./webalizer Die webalizer.conf liegt im gleichen Ordner. Geht.
Also: Ich habe meine cronjobs nicht in /etc/crontab liegen, sondern in der crontab des Users. Die wird nicht als Datei editiert, sondern mit den Befehl crontab -e Dort ist auch das Format etwas anders: Die Angabe des Usernamens entfällt natürlich. Also statt: 30 8 * * * root /home/sites/www.site.foo/web/webalizer_script nun: 30 8 * * * /home/sites/www.site.foo/web/webalizer_script Gruß, Ratti
* ratti schrieb am 20.Apr.2002:
Also: Ich habe meine cronjobs nicht in /etc/crontab liegen, sondern in der crontab des Users. Die wird nicht als Datei editiert, sondern mit den Befehl crontab -e
Kanst Du auch als Datei editieren. Liegt in /var/spool/cron/tabs/$USER Bernd -- ROTFL = Rolling On The Floor, Laughing = Auf dem Boden wälzen, lachend. SCNR = Sorry, Could Not Resist = Sorry, Ich konte nicht wiederstehen. AFAIK = As Far As I Know = So weit ich weis|BTW = By The Way = Nebenbei bemerkt IMHO = In My Humble Opinion = meiner bescheidenen Meinung nach |Zufallssig. 9
Hallo, ratti:
Ich habe meine cronjobs nicht in /etc/crontab liegen, sondern in der crontab des Users. Die wird nicht als Datei editiert, sondern mit den Befehl crontab -e
Bernd Brodesser:
Kanst Du auch als Datei editieren. Liegt in /var/spool/cron/tabs/$USER
Hmm... da steht aber drin: # DO NOT EDIT THIS FILE - edit the master and reinstall. Ich war jetzt davon ausgegangen, daß User-Crontabs im Gegensatz zur System-Crontab eben nicht automatisch initialisiert werden, und daß der crontab-Befehl das dann macht. Ich las in einem (diesem?) Thread, daß das System minütlich die /etc/crontab auf Veränderungen prüft. Ich könnte mir jetzt vorstellen, daß man das mit /var/spool/cron/tabs/* nicht macht. Das könnten ja schnell mal 100e von Dateien sein, und in den wenigsten steht was drin. Gruß, Ratti
* ratti schrieb am 20.Apr.2002:
Ich habe meine cronjobs nicht in /etc/crontab liegen, sondern in der crontab des Users. Die wird nicht als Datei editiert, sondern mit den Befehl crontab -e
Bernd Brodesser:
Kanst Du auch als Datei editieren. Liegt in /var/spool/cron/tabs/$USER
Hmm... da steht aber drin:
# DO NOT EDIT THIS FILE - edit the master and reinstall.
Ich war jetzt davon ausgegangen, daß User-Crontabs im Gegensatz zur System-Crontab eben nicht automatisch initialisiert werden, und daß der crontab-Befehl das dann macht.
Ich habe es jetzt noch mal ausprobiert. Das Problem dabei ist, daß /var/spool/cron root gehört und andere da kein Schreibrecht haben. Andere als root können die Datei gar nicht editieren. Wenn root es aber macht, so funktioniert es ohne Probleme, auch die Tabellen anderer.
Ich las in einem (diesem?) Thread, daß das System minütlich die /etc/crontab auf Veränderungen prüft.
Ja, davon gehe ich aus. Ich glaube nicht, daß da was installiert wird. Aber um das zu überprüfen müßte man die Quelltexte lesen.
Ich könnte mir jetzt vorstellen, daß man das mit /var/spool/cron/tabs/* nicht macht. Das könnten ja schnell mal 100e von Dateien sein, und in den wenigsten steht was drin.
Es werden nur die angelegt, wo was drinsteht. Ist aber wirklich die Frage, ob cron sich was merkt, oder aber ob cron jede Minute nachsieht. Ich glaube immer noch ehr letzteres. Bernd -- Homepages von deutschsprachigen Linux-Gurus: Kristian Köhntopp: http://www.koehntopp.de/kris/artikel/ Sven Guckes: http://www.math.fu-berlin.de/~guckes/sven Robin S Socha: http://socha.net/index2.html |Zufallssignatur 10
Hallo, On Sat, 20 Apr 2002, Bernd Brodesser wrote:
Ich habe es jetzt noch mal ausprobiert. Das Problem dabei ist, daß /var/spool/cron root gehört und andere da kein Schreibrecht haben. Andere als root können die Datei gar nicht editieren. Wenn root es aber macht, so funktioniert es ohne Probleme, auch die Tabellen anderer.
Einen ersten Aufschluss was 'crontab -e' macht bringt der Versuch, das als user mit [sl]trace nachzuvollziehen, bei beiden kommt: seteuid: Operation not permitted *hehe* crontab ist 'suid-root'. In der Zusammenfassung: - crontab ist suid root - crontab aendert die EUID zur UID des users - als user editiert man dann eine temporaere Datei in /tmp/ - anschliessend wird EUID wieder zurueckgesetzt, und die temporaere Datei dann in /var[/spool]/cron installiert -dnh --
Antwort: AW: Antwort: AW: Antwort: AW: Arrgl ... <mit Schaum vor dem Mund nach hinten umkipp> [Martin Wilhelm Leidig in suse-linux]
* David Haller schrieb am 20.Apr.2002:
Einen ersten Aufschluss was 'crontab -e' macht bringt der Versuch, das als user mit [sl]trace nachzuvollziehen, bei beiden kommt:
seteuid: Operation not permitted
*hehe* crontab ist 'suid-root'. In der Zusammenfassung:
Moment. Ganz langsam.
- crontab ist suid root
Also hat der Prozeß die UID des Users und die EUID von root.
- crontab aendert die EUID zur UID des users
EUID wird die des Users?
- als user editiert man dann eine temporaere Datei in /tmp/
ok.
- anschliessend wird EUID wieder zurueckgesetzt, und die temporaere
Wie zurückgesetzt? Wieder root? Das geht nicht, nur wenn EUID oder UID root ist, kann EUID auf was anderes als UID gesetzt werden. Oder wird ein neuer Prozeß erzeugt? Oder wird die gesicherte UID benutzt? Das wäre aber AFAIK nicht kompatibel, weil da jedes UNIX was eigenes bastelt.
Datei dann in /var[/spool]/cron installiert
klärt aber noch nicht die Frage, was cron selber macht. Speichert cron irgendwie intern die crontab, oder liest cron die crontab jede Minute neu aus? Bernd -- LILO funktioniert nicht? Hast Du /etc/lilo.conf verändert und vergessen, lilo aufzurufen? Ist Deine /boot-Partition unter der 1024 Zylindergrenze? Bei anderen LILO Problemen mal in der SDB nachschauen: http://localhost/doc/sdb/de/html/rb_bootdisk.html |Zufallssignatur 6
Bernd Brodesser schrieb am Sonntag den 21. April 2002:
klärt aber noch nicht die Frage, was cron selber macht. Speichert cron irgendwie intern die crontab, oder liest cron die crontab jede Minute neu aus?
Ein Blick in die Sourcen verrät, daß Cron die Crontabs intern speichert und sich dann minütlich die modification time der Verzeichnisse ansieht. Wenn die sich geändert hat, werden die Crontabs neu eingelesen. Gruß Jens -- GCS/IT/S d-@ s+:- a>-- C+++ UL+++ P+++ L+++ E--- W- N++ o+ K? W O- M- !V PS+ PE Y+ PGP++ t++ 5- X+ R- tv- b- DI? D+ G e* h+ r y+@
Hallo, On Sun, 21 Apr 2002, Bernd Brodesser wrote:
* David Haller schrieb am 20.Apr.2002:
- crontab ist suid root Also hat der Prozeß die UID des Users und die EUID von root.
Jup.
- crontab aendert die EUID zur UID des users EUID wird die des Users?
Bin mir grad nicht sicher... Ich hab jetzt mal ein ltrace -f -u $USER. Folgendes laeuft (abgesehen von dem Wechsel zum user) ab: - die UID (von $USER) wird gesichert - die EUID auf 0 geaendert (wg. suid-bit) - eine Temporaere Datei erzeugt ($TMPFILE) - chown dieser Datei zur UID des users $USER - /var/cron/tabs/$USER wird eingelesen (als root) - alles nach dem 'do not edit'-Kommentar in $TMPFILE geschrieben - zum Editor geforkt (mit der (E)UID von $USER?? Scheint so! Im ltrace seh ich's aber net ;( ) -- irgendwie ueberseh ich da was, scheint mir... Naja, die Quellen von crontab will ich jetzt aber nicht lesen. - nach dessen Ende wird als root eine weitere temporaere Datei (diesmal in /var/cron/tabs, $TMPCRON) erzeugt, der 'do-not-edit'- Kommentar reingeschrieben und dann der Inhalt von $TMPFILE angefuegt. - chown/chmod auf $TMPCRON - 'rename' von $TMPCRON nach /var/cron/tabs/$USER. - $TMPFILE wird geloescht. (/var/cron ggfs. durch /var/spool/cron ersetzen ;)
- anschliessend wird EUID wieder zurueckgesetzt, und die temporaere
Wie zurückgesetzt? Wieder root? Das geht nicht, nur wenn EUID oder UID root ist, kann EUID auf was anderes als UID gesetzt werden.
Oehm, schon. Wie weiss ich jetzt grad auch nicht, aber s.o.
Oder wird ein neuer Prozeß erzeugt? Oder wird die gesicherte UID benutzt? Das wäre aber AFAIK nicht kompatibel, weil da jedes UNIX was eigenes bastelt.
Da bin ich mir nicht ganz sicher... Mach doch mal selbst ein ltrace ;)
Datei dann in /var[/spool]/cron installiert
klärt aber noch nicht die Frage, was cron selber macht. Speichert cron irgendwie intern die crontab, oder liest cron die crontab jede Minute neu aus?
Das wurde "nebenan" geklaert ;) -dnh, *ohh, good sigmonster* :)) --
Like the man said: "Nothing good ever goes in /opt." -- T. W. Foreman s/\/opt/\// -- P. L. Basilisk
Bernd Brodesser schrieb am 21.04.2002 um 05:23:07 +0200: Hallo Bernd,
klärt aber noch nicht die Frage, was cron selber macht. Speichert cron irgendwie intern die crontab, oder liest cron die crontab jede Minute neu aus?
er speichert die crontabs intern, also hält sie sich im Speicher vor. Jede Minute schaut er jetzt nach, ob sich an den Crontabs was verändert hat (Zeitstempel) und liest sie dann gegebenenfalls neu ein. Bis denne, Michael -- ---------------------------------------------------------- Michael Schulz, Institut f. Geophysik, Universität Münster Corrensstr. 24, 48149 Münster Tel.: 0251-8333938, e-mail: michael@earth.uni-muenster.de
Hallo Tobias, ich mache das hier so: 5 23 * * * root /home/sebastian/makestat.pl und in dem Skript steht folgendes: #!/usr/bin/perl system ("/usr/bin/webalizer -n wolfgarten.com -o /var/www/www.wolfgarten.com/log /var/log/httpd/www.wolfgarten.com-access_log"); Gruß Sebastian
Hallo, On Thu, 18 Apr 2002, Sebastian Wolfgarten wrote:
ich mache das hier so: 5 23 * * * root /home/sebastian/makestat.pl
und in dem Skript steht folgendes:
#!/usr/bin/perl system ("/usr/bin/webalizer -n wolfgarten.com -o /var/www/www.wolfgarten.com/log /var/log/httpd/www.wolfgarten.com-access_log");
Also, wenn da nicht noch viel perlereien folgen bekommst du den Useless Use of Perl Award der Woche! Am Bande! ==== #!/bin/sh /usr/bin/webalizer -n wolfgarten.com -o ... ==== Duerfte ca. 10 mal weniger Ressourcen brauchen wie perl als shell zu missbrauchen... ... *soll ich?* ... *snigger* ...: Apropos: schau dir mal die perlsh an, wenn du sowas wie oben machst, muesste die dich interessieren (siehe [1]) *g* ==== man 1 perlsh ==== NAME perlsh - Perl based shell. [..] DESCRIPTION Perlsh is a Perl based command language interpreter that executes commands read from the standard input or from a file. [..] ==== ==== ~/.perlsh/preload.pl ==== [..] sub l { system('/bin/ls','-N','-T','0', '-laF', @_); } [..] ==== perlsh:/home/dh $ open(X, "ls -l|"); while(<X>) { ($r, $l, $u, $g, $s, $m, $d, $y, $n) = split(/\s+/); print "$r $n\n" if /\.gz$/; }; close(X); (ok, ist ein ziemlich sinnfreies Beispiel, deutet aber an, was moeglich sein kann ;) Ist aber noch eher "rudimentaer"... Fuer perl-freaks aber wohl einen Blick (oder zwei oder $viele) wert *g* *sich irritiert umsehend* Wer zum Geier hat hier was von "feuchter Traum des Perlianers" gesagt??? *vorsichtshalber mal pauschal die Runde ab*PATSCH*end* -dnh, WTF??? Good sigmonster! Have a cookie! *pat* *pat* *pat* "Good boy!" *bg*[2] [1] http://www.bgw.org/projects/perlsh [2] Ja, Zufallssig; und ganz am Schluss erst beachtet :) Wer sein sigmonster pflegt und hegt... ;) -- Eine kurze richtige Antwort (mancher mag sie als unfreundlich bezeichnen) ist besser als eine lange, freundliche, falsche. [Dirk H. Hohndel, SuSE]
Moin,
ich habe folgende zeile in meine datei /etc/crontab eingefügt 30 8 * * * root webalizer hmmm, hast Du schonmal probiert, als root
crontab -e auszuführen, diese Zeile einzufügen und dann abzuspeichern? Möglicherweise liegt es daran, bin mir aber auch nicht so ganz sicher ... bis denn ... /Frank/
* Frank Röske schrieb am 20.Apr.2002:
Moin,
ich habe folgende zeile in meine datei /etc/crontab eingefügt 30 8 * * * root webalizer hmmm, hast Du schonmal probiert, als root
crontab -e auszuführen, diese Zeile einzufügen und dann abzuspeichern? Möglicherweise liegt es daran, bin mir aber auch nicht so ganz sicher ...
Nein. crontab -e speichert für root in /var/spool/cron/tabs/root Da müßte man in obiger Zeile das root weglassen. Aber ich würde da nichts durcheinanderbringen, entweder alles in /var/spool/cron/tabs/$USER oder aber in /etc/crontab Dürfte das Problem auch nicht lösen. cron hat nun mal eine andere Umgebung als eine shell, die /etc/profile durchlaufen hat und ist keinem Terminal zugeordnet. Bernd -- Umsteiger von Microsoft Windows xx? Hast Du schon file://usr/doc/howto/de/DE-DOS-nach-Linux-HOWTO.txt gelesen? Auch file://usr/doc/Books/Linuxhandbuch.dvi ist zu empfehlen. |Zufallssignatur 1
participants (11)
-
Andreas Kyek
-
B.Brodesser@t-online.de
-
David Haller
-
Frank Jäschke
-
Frank Röske
-
Hagen Kuehnel
-
Jens Tautenhahn
-
Michael Schulz
-
ratti
-
Sebastian Wolfgarten
-
Tobias Korb