autoscript

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
s50e1
Beiträge: 8
Registriert: 06.06.2011 21:35:50

autoscript

Beitrag von s50e1 » 06.06.2011 21:42:08

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...)

Liffi
Beiträge: 2345
Registriert: 02.10.2004 01:33:05

Re: autoscript

Beitrag von Liffi » 07.06.2011 06:03:27

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...)
Das sollte nicht allzu schwer zu scripten sein.
"man while" und "man sleep" sollten dir dabei helfen

Benutzeravatar
Meillo
Moderator
Beiträge: 9247
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: autoscript

Beitrag von Meillo » 07.06.2011 11:30:47

Einfacher mit watch(1).
Use ed once in a while!

s50e1
Beiträge: 8
Registriert: 06.06.2011 21:35:50

Re: autoscript

Beitrag von s50e1 » 07.06.2011 14:50:31

hmm meint ihr das so?

Code: Alles auswählen

while [ true ]
do
   (z.b) ping 127.0.0.1
dome
hmm aber das ist doch dann immer oder kann man es einstellen das es immer alle 3 min den befehl ausführt

Liffi
Beiträge: 2345
Registriert: 02.10.2004 01:33:05

Re: autoscript

Beitrag von Liffi » 07.06.2011 14:53:10

Davor oder danach muesste wohl noch ein sleep kommen.

Aber Meillo hat Recht: Hiermit geht es einfacher:

Code: Alles auswählen

watch -n 300 ping 127.0.0.1

s50e1
Beiträge: 8
Registriert: 06.06.2011 21:35:50

Re: autoscript

Beitrag von s50e1 » 07.06.2011 15:12:50

Ah ok..
die -n 300 stehen für Sekunden oder? Ich kenne mich mit Scripts leider nicht so gut aus

Liffi
Beiträge: 2345
Registriert: 02.10.2004 01:33:05

Re: autoscript

Beitrag von Liffi » 07.06.2011 15:24:43

s50e1 hat geschrieben: die -n 300 stehen für Sekunden oder?
Ja.
Ich kenne mich mit Scripts leider nicht so gut aus
Deshalb lohnt es sich ab und zu in die Manpages zu schauen:

Code: Alles auswählen

man watch

s50e1
Beiträge: 8
Registriert: 06.06.2011 21:35:50

Re: autoscript

Beitrag von s50e1 » 07.06.2011 15:48:18

Vielen Dank es funktioniert

Benutzeravatar
Meillo
Moderator
Beiträge: 9247
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: autoscript

Beitrag von Meillo » 07.06.2011 18:11:03

Ich habe noch eine Anmerkung dazu:
s50e1 hat geschrieben:hmm meint ihr das so?

Code: Alles auswählen

while [ true ]
...
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.

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!

Antworten