autoscript
autoscript
Hi, ich weis nicht ob ich hier richtig bin aber ich frag mal:)
Könnt ihr mir ein Script nennen das ich einmal in der Konsole mit screen starte wo dann alle 1-5 min ein befehl wieder ausführt. Ich hatte mal eins wo immer wieder versucht hat eine datei auszuführen fals diese wieder geschlossen wurde durch (Fehler, etc...)
Könnt ihr mir ein Script nennen das ich einmal in der Konsole mit screen starte wo dann alle 1-5 min ein befehl wieder ausführt. Ich hatte mal eins wo immer wieder versucht hat eine datei auszuführen fals diese wieder geschlossen wurde durch (Fehler, etc...)
Re: autoscript
Das sollte nicht allzu schwer zu scripten sein.s50e1 hat geschrieben:Hi, ich weis nicht ob ich hier richtig bin aber ich frag mal:)
Könnt ihr mir ein Script nennen das ich einmal in der Konsole mit screen starte wo dann alle 1-5 min ein befehl wieder ausführt. Ich hatte mal eins wo immer wieder versucht hat eine datei auszuführen fals diese wieder geschlossen wurde durch (Fehler, etc...)
"man while" und "man sleep" sollten dir dabei helfen
Re: autoscript
hmm meint ihr das so?
hmm aber das ist doch dann immer oder kann man es einstellen das es immer alle 3 min den befehl ausführt
Code: Alles auswählen
while [ true ]
do
(z.b) ping 127.0.0.1
dome
Re: autoscript
Davor oder danach muesste wohl noch ein sleep kommen.
Aber Meillo hat Recht: Hiermit geht es einfacher:
Aber Meillo hat Recht: Hiermit geht es einfacher:
Code: Alles auswählen
watch -n 300 ping 127.0.0.1
Re: autoscript
Ah ok..
die -n 300 stehen für Sekunden oder? Ich kenne mich mit Scripts leider nicht so gut aus
die -n 300 stehen für Sekunden oder? Ich kenne mich mit Scripts leider nicht so gut aus
Re: autoscript
Ja.s50e1 hat geschrieben: die -n 300 stehen für Sekunden oder?
Deshalb lohnt es sich ab und zu in die Manpages zu schauen:Ich kenne mich mit Scripts leider nicht so gut aus
Code: Alles auswählen
man watch
Re: autoscript
Vielen Dank es funktioniert
Re: autoscript
Ich habe noch eine Anmerkung dazu:
Das Problem erkennt man erst wenn man feststellen muss, dass auch ``while [ false ]'' eine Endlosschleife darstellt.
Ich erklaere:
- ``while'' fuehrt den nachfolgenden Befehl aus und wertet dessen Exitstatus aus.
- Hier wird test(1) (alias ``['') ausgefuehrt mit den Argumenten ``true'' und ``]''.
- Das letzte Argument (``]'') muss aus kosmetischen Gruenden sein.
- Das erste Argument ist ein nicht-leerer String und der ist fuer test(1) immer wahr. Egal ob da ``true'' oder ``false'' steht!
Korrekt waere: ``while true'' denn da wird das Kommando true(1) ausgefuehrt das immer wahr zurueckliefert.
Alternativ ist ``while :'' gaengig denn das builtin ``:'' (alias: Leeres Kommando) liefert ebenso immer wahr zurueck.
Wer die Shell schlecht kennt mag das so schreiben. Das funktioniert dann wie gewuenscht, allerdings nur aufgrund eines Nebeneffektes. Dies ist nicht die Umsetzung dessen was eigentlich gemeint ist.s50e1 hat geschrieben:hmm meint ihr das so?Code: Alles auswählen
while [ true ] ...
Das Problem erkennt man erst wenn man feststellen muss, dass auch ``while [ false ]'' eine Endlosschleife darstellt.
Ich erklaere:
- ``while'' fuehrt den nachfolgenden Befehl aus und wertet dessen Exitstatus aus.
- Hier wird test(1) (alias ``['') ausgefuehrt mit den Argumenten ``true'' und ``]''.
- Das letzte Argument (``]'') muss aus kosmetischen Gruenden sein.
- Das erste Argument ist ein nicht-leerer String und der ist fuer test(1) immer wahr. Egal ob da ``true'' oder ``false'' steht!
Korrekt waere: ``while true'' denn da wird das Kommando true(1) ausgefuehrt das immer wahr zurueckliefert.
Alternativ ist ``while :'' gaengig denn das builtin ``:'' (alias: Leeres Kommando) liefert ebenso immer wahr zurueck.
Use ed once in a while!