Testen, Crontab auf Debian-Ubuntu
Ich werde Vorwort dies mit den Worten ich bin ganz neu command-line-Programmierung mit Debian, Ubuntu...
Habe ich versucht ein Eintrag in der crontab Liste auf einem Debian-Ubuntu-server, aber nicht in der Lage gewesen, um es zu arbeiten. Hier ist ein Beispiel:
[email protected]
* * * * * wall test
* * * * * /usr/bin/python2.6 /home/user/test.py > /home/user/clean_tmp_dir.log
Oben zeigt, wenn ich geben Sie "crontab -l", aber keine resultierende Ausgabe wird an der Konsole angezeigt. "Test.py" soll erzeugen einer csv-Datei, aber keiner erstellt wird.
Ich bin nicht erhalten, keine Ausgangs - /Fehler-E-Mails. Ich habe versucht zu finden ein log "var/log/cron" gibt es nicht, noch nicht "etc/syslog.conf"...ich habe versucht zu " Bearbeiten "etc/rsyslog.conf", bekam aber "E212: Can' T open file for writing"...ich eingeloggt bin, jedoch. Brauche ich irgendeine Art von special administrative Rechte? Muss ich angeben, Benutzer oder "root" oder sowas?
Weiß jemand, was ich falsch mache, wie kann ich das erstellen/anzeigen ein Protokoll, oder wie kann ich eine beliebige andere einfache tests? Danke!
cron
sollte in /var/log/syslog
(zumindest auf meinem Ubuntu-system). Ich habe versucht, das kopieren der crontab auf meinem system (Aktualisierung der E-MAIL) und bekam eine Fehlermeldung für die wall
Befehl: wall: will not read test - use stdin.
ich nicht erraten kann über test.py
, aber ist clean_tmp_dir.log
erstellt?Wenn ich versuche "tail syslog", bekomme ich "tail: cannot open 'syslog' for reading: Permission denied" - Sie wissen, warum das so ist? ich erstellte clean_tmp_dir.melden Sie manuell. Ich Frage mich auch, warum ich nicht immer alle E-Mails...
Auf meinem system
/var/log/syslog
Berechtigungen 640 (Lesen und schreiben für den Besitzer, lese-nur für die Gruppe), Eigentümer "syslog", "adm". Lesen kann ich es, weil ich bin ein Mitglied des "adm" - Gruppe. Entweder sudo tail /var/log/syslog
oder selbst hinzufügen, um die adm
Gruppe. Die clean_temp_dir.log
Datei erstellt werden soll, die durch den cron-job; wenn es nicht, den cron-job wahrscheinlich nicht ausführen. Ist der cron-daemon läuft (ps -f -u root | grep cron
)? Verfügt Ihr system über /etc/cron.allow
- und/oder /etc/cron.deny
? man crontab
für weitere Informationen.Ich bin derzeit wartet auf die erste ahold das root-Passwort, so kann ich hinzufügen, mir die sudoers-Datei. Wenn ich "ps -f -u root | grep cron" bekomme ich die folgende: root 715 1 0 Apr28 ? 00:00:09 cron gibt Es keine cron.zulassen oder cron.deny-Dateien auf meinem system.
Sie sagte, Sie erstellt clean_tmp_dir.melden Sie manuell. Versuchen Sie, es zu löschen. Mit der crontab-Datei, die Sie uns zeigte, sollte es erstellt werden, die innerhalb einer minute. Wenn es ist, Sie wissen, Ihre cron-jobs ausgeführt werden; wenn nicht, gibt es ein problem mit cron (und Sie sollten sprechen Sie mit Ihrem sysadmin).
InformationsquelleAutor Jen | 2011-08-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ok, lasst uns wieder beginnen.
Erstellen Sie eine Datei, sagen
cron.txt
mit genau den folgenden Inhalt (1 Zeile):(Tun nicht erstellen CRON_IS_RUNNING manuell.) Führen Sie
sollte ruhig, keine Ausgabe erzeugen, dann
dem drucken sollten
Warten Sie eine minute oder so, vielleicht 2 Minuten, dann
sollte etwas drucken, wie
Wenn das alles funktioniert, wird es bestätigen, dass Sie können ausführen von cron-jobs.
Wenn das erfolgreich ist, kann das problem mit Ihrem
test.py
Befehl. Funktioniert es, wenn Sie es ausführen von der Kommandozeile aus? Wenn es funktioniert von der Kommandozeile, aber nicht voncron
,test.py
vielleicht haben einige der Abhängigkeit von Umgebungsvariablen (cron-jobs laufen mit weniger Umwelt-Variablen, die als interaktive Befehle in der Regel tun).InformationsquelleAutor Keith Thompson
Die syntax in Ihre Wand ein Befehl ist falsch. Ausgabe eine direkte Nachricht, die Sie brauchen, um verwenden Sie die syntax:
echo test | wall
.wall test
sucht nach einer Datei mit dem Namen test.Jedem cron-Nachrichten werden in
/var/log/syslog
Ihre cronjob befindet sich in
/var/spool/cron/crontabs/username
die sich im Besitz vonBenutzername:crontab
Ich lief einen test auf meinem system "Debian " Squeeze" mit deiner crontab etwas geändert, als der root-Benutzer.
Ich eine Datei erstellt test.py mit:
erstellt die Wand-Datei test mit:
Lief dann crontab -e und Hinzugefügt dies zu meiner crontab:
Wenn es lief, war dies auf dem Bildschirm ausgegeben:
Den Inhalt von test.log enthalten:
Dieser wurde Hinzugefügt, um /var/log/syslog:
wall
liest aus der Datei Namen (in diesem Fall, sieht es für eine Datei mit dem Namen "test"). Ohne Angabe eines Arguments wird von stdin Lesen. Hinzufügen einer control-D auf der Kommandozeile macht keinen Sinn; es würde zuwall
suchen Sie nach einer Datei namenstest<ctrl-D>
. Wenn die Aussage ist "test", die syntax istecho test | wall
.Oh, und wenn die Datei "test" existiert nicht,
wall test
sterben wird mit einer Fehlermeldung:wall: will not read test - use stdin.
. Wenn cron nicht richtig funktioniert, die Meldung sollte per e-Mail an den Besitzer der crontab.Ich habe noch nie gehört, das
<ctrl-d>
syntax vor. Vielleicht bin ich falsch in der Debian-Wand-man-Seite.Sorry, ich meinte nur, dass es eine Datei, deren name aus der 5 Zeichen "test" gefolgt von einem control-D Charakter (wie ein C-string literal,
"test\004"
). Eingabe von Ctrl-D beim Lesen von input interaktiv bewirkt eine end-of-file Bedingung. Das gilt nicht in einem nicht-interaktiven Kontext wie ein cron-job oder ein shell-Skript. Wenn Sie möchten, dass diewall
Befehl zum drucken der string "test" in einem nicht-interaktiven Kontext, Sie haben zu arrangieren, die Wand-Prozess stdin aus der einzigen Zeile"test"
. Die Art und Weise zu tun, istecho test | wall
.Beachten Sie, dass das Debian-Mann Seite verwiesen wird, sagt: "Bei der Verwendung der standard-Eingabe terminal, ..."; das gilt nicht hier.
InformationsquelleAutor Chris_O