Crontab nicht ausgeführt bash-Skript
Ich sehr sehr selten mit Linux und so don T haben keine Erfahrung mit bash-Skripte und cron-jobs.
Dies ist in der Tat mein Erster Versuch. Es ist also wahrscheinlich etwas, das wirklich einfach zu beheben.
Habe ich Folgendes:
/etc/cron.d/clear-mixtape-dir.sh
Berechtigungen: 644
#!/bin/bash
# Clears the /tmp/mixtape2 directory
rm -rf "/tmp/mixtape2/"*
Meine crontab Datei sieht so aus:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
*/15 * * * * /etc/cron.d/clear-mixtape-dir.sh >/dev/null 2>&1
Ich versuche zu führen .sh-Skript alle 15 Minuten.
Alles, was ich gefunden habe, sagt, das sollte funktionieren, aber es funktioniert nicht.
Alles tut, wie eine Datei-Berechtigungen (auf Dateien in /tmp/mixtape2/) Sache in diesem Fall?
Oder vielleicht die Berechtigungen auf den tatsächlichen .sh script - vielleicht brauchen Sie die Einstellung für ausführbare Datei?
Jede Beratung geschätzt.
Hinzufügen
/bin/bash
in Ihrer Linie: */15 * * * * /bin/bash /etc/cron.d/clear-mixtape-dir.sh >/dev/null 2>&1
Die Berechtigungen sollten so fast nie auf 777 gesetzt. In diesem Fall werden die Berechtigungen auf das script sollte 755 sein, und die Berechtigungen von /tmp/mixtape2/ erlauben müssen, schreiben die user läuft der cronjob.
bemerkte gordon, vielen Dank für die Erinnerung an die grausamen 777 , ich entschuldige mich
Besser noch, machen Sie die Berechtigungen 700 und stellen Sie sicher, der Besitzer ist
root
. Es sei denn, Sie wollen, dass es als ein anderer Benutzer ausgeführt -, dann ändern die Eigentumsverhältnisse entsprechend, und machen es immer noch 700, dann aktualisieren Sie Ihre cron
definition führen Sie das Skript als Benutzer.InformationsquelleAutor Barry Jarvis | 2013-04-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hinweis: Diese Kommentare beziehen sich auf /etc/crontab.
Bevor irgendetwas anderes tun, die cron sind Sie Zugriff auf
crontab -e
oderWenn Sie mit crontab -e ist, dann ist kein user-Bereich existiert in dieser form von crontab. Das könnte sein, warum Sie nicht ausgeführt wird.
In deinem Beispiel, Ihre Benutzer-Feld *. Ich würde es root oder einem Benutzer mit entsprechenden Berechtigungen.
Bevor Sie dieses Programm ausführen, würde ich einen dummy-crontab-Eintrag, der funktioniert einfach
echo "Hallo" und jede minute ausgeführt. Bekommen, dass die arbeiten, auf denen je ein crontab-Bearbeitung (crontab -e oder vim /etc/crontab). Dann mit, dass als Vorlage, erhalten Sie Ihr Skript ausführen.
Als Nächstes sehen, wenn cron ausgeführt wird:
ps -ef | grep cron
Wenn es nicht ausgeführt wird, als root an und starten Sie es, indem Sie die EINGABETASTE
/etc/init.d/cron start
(Ubuntu und Red Hat).Haben Sie bereits eine gute Antwort darauf hindeutet, fügen Sie root als Benutzer, weil ein Berechtigungen-problem. Ich werde vorschlagen, mehr Dinge zu helfen, Sie zu Debuggen. Ich habe laufen in eine Menge von cron Probleme über die Jahre.
1) Legen Sie die E-Mail an eine bekannte Adresse, es sei denn, Sie werden ständig überwachen, root E-Mail -
2), Bis alles richtig läuft, nehmen Sie die
>/dev/null 2>&1
aus Ihrem cron-Eintrag, so sehen Sie die Ausgänge in Ihrem E-Mail generiert, nachdem das Skript ausgeführt wird.3) Bump
*/15
nach unten, um ein Intervall größer als es dauert, Sie Ihr Skript ausführen-likr*/5
, damit das Skript läuft öfter.4) ich weiß nicht den genauen Grund, aber Skripte, die ich ausführen von cron einrichten müssen, um Ihre eigenen Umgebungen, trotz ausführen als Benutzer cron. Dies kann auch Schritte wie
cd /home/script-owner
und läuftsource .bashrc
und fordern andere script(s), das setzen von Umgebungsvariablen.>/dev/null 2>&1
aber noch kein Glück. Ich erhalte keine E-Mails durchdringen. Also es sieht nicht So aus wie die crontab selbst übernehmen? Irgendwelche Ideen dazu? Eine Sache, die ich nicht getan habe, ist Ihr Schritt 4... als ganz ehrlich gesagt, ich bin zu neu, um all dies zu wissen, was die Hölle überhaupt bedeutet 😉Ich habe bearbeitet die original-Antwort um weitere Informationen. Blick auf KeithThompson Kommentar in der Antwort von iamauser. Das beschreibt die zwei crontab Eintrag-Typen.
Dies ist eine so umfassende Erklärung, @octopusgrabbus. Gehalten werden sollten irgendwo wie stackoverflow.com/tags/crontab/info erreichbar zu sein für Benutzer, die versuchen zu Debuggen Ihre crontab!
Eine einfache cron-Skript -- wie echo "Hallo" -- wäre zumindest klar, bis Ihre format-Probleme. Von dort aus können Sie in jede script-Probleme. @BarryJarvis
InformationsquelleAutor octopusgrabbus
Entfernen .sh-Erweiterung aus dem Skript in
/etc/cron.d
und es wird aufgerufen.run-parts
ignoriert Dateien mit einem Punkt im Namen, so die .sh-Erweiterung verhindert, dass Ihr Skript ausgeführt wird.Vom
man cron
-InformationsquelleAutor Chris Burgess
Benutzer hinzufügen
root
weil Ihre Genehmigung zu sein scheint, nur für den root.crontab
. In einem system-crontab eine Zeile besteht aus 5 Feldern für die Uhrzeit, eine für den Namen des Kontos ein, der den job ausführen wird, und der rest für den Befehl. In einem normalen crontab, der Art manipuliert mit dercrontab
Befehl, der Benutzername ist nicht angegeben -- und wenn Sie es angeben, wird das als Teil des Befehls name. (Der Auftrag wird ausgeführt, egal mit welchem Konto lief diecrontab
- Befehl.) Befehle zur Ausführung von root installiert werden kann entweder als system-crontab ausgeführt oder dascrontab
Befehl aus dem root-Konto.InformationsquelleAutor iamauser