[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Wie kann ich 2 bash scripte miteinander syncronisieren



Michelle Konzack wrote:

> Hi Matthias,
> 
> Am 2009-02-28 02:34:51, schrieb Matthias Meyer:
>> Nabend ;-)
> 
> Guten Morgen,
> 
>> Jo, das funkt. Auch mit read var < /tmp/scriptsync
>> Ich brauche aber auch einen Timeout. read -t 60 var < /tmp/scriptsync
>> ignoriert aber den timeout.
>> `sleep 20s; echo "TO" > /tmp/scriptsync`& würde zwar gehen, aber wenn der
>> andere script dann doch noch rein schreibt hängt er.
> 
> Nicht getestet, aber sollte gehen:
> 
> ----8<------------------------------------------
> #!/bin/bash
> 
> mknod/tmp/scriptsync
> 
> (cat /tmp/scriptsync) |
> while read -t 1 LINE
> do
>   if [ "${LINE}" = "kill_me"] ; then break ; fi
>   if [ -n "${LINE}" ] ; then
>     echo ${LINE}
>   fi
> done
> rm -f /tmp/scriptsync
> ----8<------------------------------------------
> 
> Jetzt könnend a hundert  Programme  reinschreiben  und  bei  jeder  Zeile
> reagiert Dein Script und wenn im Milisekunden Takt da reingeschriben wird
> 
Leider nein. Obiges script reagiert genausowenig auf den TimeOut (-t 1) wie
das read -t 60 var < /tmp/scriptsync das ich ausprobiert hatte.
Allerdings liest es in der while-Schleife alle vorhandenen Einträge aus,
wartet aber nur auf einen neue Einträge wenn vorher noch keiner drinnen
war.

tail -f anstatt cat reagiert auch seltsam.
Schreibe ich weniger Zeichen als zuerst rein, kommt "tail: /tmp/scriptsync:
Datei abgeschnitten"
Schreibe ich mehr Zeichen als zuerst rein bricht er ab ohne den Inhalt der
while-Schleife auszuführen.
Schreibe ich genausoviele Zeichen wie zuerst rein reagiert er garnicht.

Aber trotzdem Danke. Ich werde mal versuchen den timeout mittels
rm -f /tmp/scriptsync zu realisieren. Werde dabei wohl aber zu deadlocks
kommen.

Lg
Matthias
-- 
Don't Panic


Reply to: