Wie führe ich den Befehl alle 10 Sekunden aus (ohne Cron)?

36

Wenn ich ausführe, cronbekomme ich diesen Fehler

cron: kann /var/run/crond.pid nicht öffnen oder erstellen: Berechtigung verweigert

Also, wie geht das ohne cron?

PS Ich möchte überprüfen, ob sich die Datei in svn geändert hat und ich habe ein spezielles Skript dafür.

UAdapter
quelle
Wenn Sie keine Berechtigung haben, versuchen Sie, cron mit auszuführen sudo.
Anonym
4
Denken Sie daran, dass cron nicht alle 10 Sekunden etwas unternimmt, sondern nur einmal pro Minute.
Caesium
Wenn Sie Cronjobs erstellen möchten, müssen Sie ausführen crontab -e, um den Editor zu starten. Führen Siecrontab -l
Lekensteyn
@Anonymous Ich kenne kein root-Passwort, daher hilft mir sudo nicht weiter.
UAdapter

Antworten:

59

Um auf Ihre persönliche cronKonfiguration zuzugreifen , sollten Sie den Befehl crontab -e(zum Bearbeiten Ihrer Cron-Tabelle) verwenden.

Alternative ist der watchBefehl:

watch -n10 command args

Schließlich können Sie zur effektiveren Überwachung von Dateisystemereignissen das Paket inotifywaitfrom verwenden inotify-tools.

Enzotib
quelle
1
Vielleicht sollten Sie Ihre Befehle besser in doppelte Anführungszeichen setzen, da dies zu unerwarteten Ergebnissen führen kann. watch -n<timeout> "command(s) arg(s)"likewatch -n2 "ps ux | grep ss5"
Achilles
Ich fand es schwierig watch, lange, komplizierte Befehle mit Pipes und Anführungszeichen zu akzeptieren. Die while-Schleife unten hat funktioniert, aber natürlich sollte man immer zuerst schlafen , um außer Kontrolle geratene Pids zu vermeiden.
Jurney
@ rjurney: Es sollte ausreichen, den gesamten Befehl in Anführungszeichen zu setzen, einfach oder besser doppelt:watch -n10 "ls -l | grep $foo"
enzotib
@enzotib Das Problem tritt auf, wenn die Befehle Anführungszeichen enthalten, da Anführungszeichen innerhalb von Anführungszeichen (Gott helfe mir) Anführungszeichen sind, die in bash nicht möglich sind. Theoretisch sollte es möglich sein, aber ich erreiche selten geschachtelte Zitate in Bash, ohne aufzugeben und einen anderen Weg zu gehen.
rjurney
32

Sie können ein Shell-Skript schreiben, das sleepeine while-Schleife enthält.

#!/bin/sh
while [ true ]
do
    sh special_svn_script.sh
    sleep 10
done
Anonym
quelle
5
while trueerfordert keine eckigen Klammern, ansonsten wird "true" als Zeichenfolge interpretiert und jede Zeichenfolge ist so gut wie "true".
Enzotib
1
@enzotib so könnten Sie auch schreiben, während um
Eduard Florinescu
Während dies funktioniert, sollten Sie immer zuerst schlafen, da möglicherweise etwas auftritt, wodurch der Schlafschritt nicht erreicht wird. In diesem Fall wird eine außer Kontrolle geratene Pid-Flut ausgelöst.
Jurney
4

gnome-schedule (Klicken Sie auf die Schaltfläche,Install now!um Ihr Software Center zu verwenden)
ist eine grafische Benutzeroberfläche, die die Leistung von vixie-cron, dcron und at nutzt, um Ihre crontab-Datei zu verwalten und auf einfache Weise Aufgaben auf Ihrem Computer zu planen. Es unterstützt wiederkehrende (periodische) Aufgaben und Aufgaben, die in der Zukunft nur einmal vorkommen. Es ist in Python mit pygtk geschrieben.

Tolle Funktionen

  • Unterstützt benutzerdefinierte Titel und Symbole für Ihre Aufgaben, damit diese leichter nachverfolgt werden können
  • Vorlagen werden unterstützt, sodass Sie nicht immer wieder dieselbe Aufgabe erstellen müssen. Diese werden in gconf gespeichert und können leicht mit einer Linux-Distribution ausgeliefert werden
  • Wenn Sie als root ausgeführt werden, können Sie die crontab- und at-Tasks aller Benutzer bearbeiten.
  • Für Menschen lesbare Zeichenfolgen wie "Jede Stunde" anstelle von "0 * * * *"
  • Erweiterter Modus für Crontab-Experten
  • Bietet ein "Panel-Applet", in dem Sie Aufgaben über ein Dropdown-Menü verwalten können
  • Vordefinierte allgemeine Ausdrücke wie: jede Minute, jede Woche, morgen, nächste Woche In einem Kalender können Sie den Tag auswählen, an dem eine Aufgabe ausgeführt werden soll
hhlp
quelle