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

Re: Wie kann ich 2 bash scripte miteinander syncronisieren



Hallo Matthias,

Am 2009-03-01 13:59:45, schrieb Matthias Meyer:
> Michelle Konzack wrote:
> > ----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<------------------------------------------
> 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.

It logisch, mit while kann es nicht gehen...

----8<------------------------------------------
#!/bin/bash

mknod /tmp/scriptsync

while true ; do
  (cat /tmp/scriptsync) |
  while read -t 1 LINE
  do
    if [ "${LINE}" = "kill_me"] ; then break 2 ; fi
    if [ -n "${LINE}" ] ; then
      echo ${LINE}
    fi
  done
  sleep 1
done
rm -f /tmp/scriptsync
----8<------------------------------------------

Mist, da fällt mir noch ein, das "-t"  nur  funktioniert,  wenn  es  ein
terminal ist und kein script oder background gestartetes Program.

Ich fürchte, du hat keine andere wahl,  als  in  einem  TMP  Verzeichnis
Dateien mit timestamp 'date +%s.%N' schreiben zu lassen und sie dann von
dem anderen script der reihe nach auszulesen.

Dumm nur, das "find" keine "-asec" hat, denn "-amin" ist auch in  meinem
fall in vielen dingen zu lang.  Ich habe schon mal öfters  sowas  wie  5
oder 10 sekunden benötigt...

Anm.:   Das "sleep 1" oben ist dazu da, das das programm im Leerlauf
        keine 100% CPU last verursacht.  Ich hatte mich vor ein paar
        jahren mal gewundert, warum meine Workstation so  eigenartig
        reagiert, bis ich merkte, das ein  frei  laufender  Loop  in
        einem BaSH Script, mit maximaler speed abläuft und eben  CPU
        last verursacht.  :-/

Thanks, Greetings and nice Day/Evening
    Michelle Konzack
    Systemadministrator
    24V Electronic Engineer
    Tamay Dogan Network
    Debian GNU/Linux Consultant


-- 
Linux-User #280138 with the Linux Counter, http://counter.li.org/
##################### Debian GNU/Linux Consultant #####################
<http://www.tamay-dogan.net/>               <http://www.can4linux.org/>
Michelle Konzack   Apt. 917                  ICQ #328449886
+49/177/9351947    50, rue de Soultz         MSN LinuxMichi
+33/6/61925193     67100 Strasbourg/France   IRC #Debian (irc.icq.com)

Attachment: signature.pgp
Description: Digital signature


Reply to: