Re: Wie kann ich 2 bash scripte miteinander syncronisieren
- To: debian-user-german@lists.debian.org
- Subject: Re: Wie kann ich 2 bash scripte miteinander syncronisieren
- From: Matthias Meyer <matthias.meyer@gmx.li>
- Date: Sun, 01 Mar 2009 13:59:45 +0100
- Message-id: <goe0s5$993$1@ger.gmane.org>
- References: <go4nts$sou$1@ger.gmane.org> <200902271439.54422.michael.renner@gmx.de> <goa4bv$ouh$1@ger.gmane.org> <20090228043142.GX7007@tamay-dogan.net>
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: