Wie kann ich einen bestimmtes Kommando alle X Minuten ausführen unter Linux?

5 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Wo ist bei Crontab denn das Problem?

Einfach crontab -e eingeben, dort eine entsprechende Befehlszeile eingefügt und los:

*/30 * * * * sudo python /home/pi/speed/speedtester.py

Das sudo ist optional, sofern das Script mit Root-Rechten laufen muss musst du das auch angeben.

Ausgaben findest du indem du mail eingibst, da Cron entsprechende Rückmeldungen dorthin weiterleitet. Ansonsten einfach mit > Datei arbeiten:

*/30 * * * * sudo python /home/pi/speed/speedtester.py > /home/pi/speedtest.log

Wieso das sudo?

1
@Tuxgamer2

Das sudo ist optional, sofern das Script mit Root-Rechten laufen muss musst du das auch angeben.

Lesen muss man können.

1
@Tuxgamer2

Das geht so oder so. Ob nun der Cron-Prozess als Root läuft oder das ausgeführte Skript ist dabei egal, in beiden Fällen läuft es als Root.

0
@SYSCrashTV

Falsch.

Dein Crontab mit sudo läuft nur, wenn du dein System sicherheitstechnisch verkrüppelt hast - und sudo ohne Passwort erlaubst.

Und das ist wirklich keine gute Idee...

2

das "30" sind 30 Minuten oder?

0

crontab kennt eventuell den Pfad von python nicht, da es ja keine Shell öffnet und keine Umgebungsvariabeln hat.

0
@kernash

@kernash

Hab ich auch schon überlegt. Aber cron doch normalerweise Path auf /bin:/usr/bin - was python auf /usr/bin/python finden sollte.

Wobei ich cron immer mit absoluten Pfaden arbeite...

0

Ich hab aus der "/30" jetzt "/2" gemacht. Und es passiert nach 2 Minuten nichts.

0

Das sudo ist optional, sofern das Script mit Root-Rechten laufen muss musst du das auch angeben.

das sind wieder mal die Auswirkungen dieser scheiz Idee von Ubuntu:

Jeder benutzt es, ohne zu überlegen. (natürlich nur die, die es nicht verstehen)

Hier habe ich auch schon mal gelesen, man solle einen Crontab verwenden.  Und wieder, es wird ohne Überlegung übernommen.

Die Datei crontab ist die Steuerdatei für cron. Cron wird als Dämon gestartet und dieser Prozess läuft mit der User-ID 0 ,das heißt unter der Regie von root.

Damit ist sudo völlig überflüssig, denn das bedeutet

"benutze UID = 0 statt UID = 0 " widersinnig oder nicht?

Hinzu kommt, dass die Datei /etc/sudoers wahrscheinlich auch für root einen  Eintrag

root ALL=(ALL) ALL

haben muss.

Einfach sudo weglassen und das selbst gemachte Problem ist beseitigt.

0
@guenterhalt

Kleine Anmerkung am Rande

Wir im Linux Bereich Unterscheiden zwischen Cron Tab und Cron Job. Der Cron Job kann von einem Benutzer im eigenen Verzeichnis entsprechend Konfiguriert und eingesetzt werden wobei der Cron Tab vom root ( Admin)  eingesetzt werden kann. wenn man also ein Script mit root rechten starten will eignet sich dies im Cron Tab . Benötigt das Script keine root rechte reicht es aus den Cron Job als Benutzer auszuführen.

https://wiki.ubuntuusers.de/Cron/

Somit unterscheidet man auch  die Cron funtionen Systemweit oder Benutzer weit. Für die root sache findet man meist die Informationen dazu in /etc/crontab ( je nach Linux Distribution) .Daher bitte ich Höflich strikt zu trennen zwischen Cron Job ( Benutzer) und Cron Tab ( root) . Hält man sich daran kann eigentlich nichts schief gehen.

Manchmal hilft auch sowas :

Wenn ein Skript in der Konsole funktioniert, nicht aber wenn es über  die systemweite Cron-Tabelle gestartet wird, kann das daran liegen, dass sich das Startverhalten einer Shell über eine Cron-Tabelle von dem  einer Loginshell unterscheidet. In diesem Fall sollte man das Skript  anpassen oder folgenden Befehl in die Cron-Tabelle eintragen:

/bin/bash --login /PFAD/ZUM/SKRIPT.sh



0

Hallo

Ich möchte alle 30 Minuten automatisch den Befehl "python /home/pi/speed/speedtester.py"

Die einfachste Lösung ist watch zu benutzen, die Syntax sieht so aus:

watch -n1800 "python /home/pi/speed/speedtester.py" &

Das führt das Kommando, das innerhalb der Gänsefüßchen steht, alle 1800 Sekunden (= 30 Minuten) und im Hintergrund aus.

Ich hab es mit Crontab probiert und es geht nicht. 

Dann hast Du da was falsch gemacht, denn auch mit einem Cronjob lässt sich das machen, eleganter aber mit mehr  Aufwand.

Man kann natürlich auch noch screen verwenden um den Prozess im Hintergrund ablaufen zu lassen

Linuxhase

Vermutlich hast Du die Parameter nicht richtig gesetzt in der crontab. Zeig doch mal die Zeile des Aufrufs.

Möglicherweise hast Du aber auch den crond noch gar nicht gestartet? Guck mal, ob der überhaupt läuft.

Kali Linux auf Raspberry Pi Grafische Oberfläche?

Wollte eine Grafische Oberfläche auf meinem Raspberry Pi 3 mit kali linux... Habe dafür startx eingegeben, dann kam diese Fehlermeldung (siehe Bild) bin noch Anfänger, was muss ich machen, um dieses Problem zu beheben?

...zur Frage

Raspberry Pi, python while loop schneller machen. Wie kann ich eine Python while loop auf dem Raspberry Pi schneller machen?

...zur Frage

Wie kann ich diesen befehl dauerhaft ausführen lassen?

Hallo, ich möchte auf meiner raspberry pi diesen befehl in Dauerschleife ausführen lassen, ohne ihn andauernd neu eingeben zu müssen : echo $(echo "scale=3; $(grep 't=' /sys/bus/w1/devices/w1_bus_master1/10-000801e1799b/w1_slave | awk -F 't=' '{print $2}') / 1000" | bc -l) °C > /home/pi/Desktop/Befehl

kann ich sowas in einer Datei abspeichern, die ich dann nur ausführen muss? wenn ja wie? geht das vielleicht mit einer Shell datei?

...zur Frage

Wie starte ich einen Python Script mit dem Linux Programm Screen (Raspberry Pi)?

Ich habe einen Python Script den ich mit Screen ausführen muss, da er eine Schleife beinhaltet und ich trotzdem wieder in die Befehlszeile kommen will (ansonsten komme ich nur in die Ausgabezeile wo ich nichts eingeben kann). Das ganze soll später über eine Website auf dem Pi per PHP Script startbar sein.

...zur Frage

Ist es legal ein Minecraft Server zu machen also von zuhause mit einer Raspberry Pi Linux?

Ist es legal ein Minecraft Server zu machen also von zuhause mit einer Raspberry Pi Linux ?

...zur Frage

Raspberry Pi für Internet am Fernseher?

Wir schauen auch immer mehr übers Internet und dass gerne am großen Fernseher. Leider kann der selber nicht aufs Internet zugreifen und jedesmal nen Laptop anzuschliessen ist doch ehr umstädnlich. Jtz kam mir die Idee ein Raspberry Pi (3 Modell B, das aktuellste halt mit Raspbian Jessie) anzuschliessen (über HDMI) und dann damit aufs Internet zuzugreifen (mit ner Linux und Raspberry Pi kompatiblen USB WLAN Antenne).
Der Ton vom Raspberry Pi kann ja über HDMI an die Fernseher Lautsprecher auch übertragen werden, oder? (Also wie voher mim Laptop)
Kann man mit nem Raspberry Pi auch gut Youtube Videos, Filme und Serien auf Maxdome und Videos von Mediatheken anschauen?

Danke für eure Hilfe

...zur Frage

Was möchtest Du wissen?