Das Programmieren der Shell

> Betriebssystem Linux

> > # Signalverarbeitung im Shellscript

> > Natürlich können Shellscripts auch auf Signale reagieren. Mit dem Befehl trap können bestimmte Signale mit bestimmten Befehlen verbunden werden. Jedesmal, wenn das Script ein bestimmtes Signal auffängt, wird dann der entsprechende Befehl ausgeführt.

> > `trap "Befehl1; Befehl2;..." Signalliste`

> > Um bestimmte Signale ganz zu ignorieren, etwa die Signale zum Programmabbruch (0,1,2,3,15) kann trap einfach mit einer leeren Anweisung diese Signale abfangen:

> > `trap "" 0 1 2 3 15`

> > Beispiel:

> > Wir schreiben ein Script, das von 0 bis 65535 zählt, damit das nicht zu schnell geht warten wir nach jeder Zahl eine Sekunde. Das würde dann ungefähr so aussehen:

> >     #!/bin/bash
> >     i=0
> >     while [ i -le 65535 ]
> >     do
> >       echo $i
> >       let i=$i+1
> >       sleep 1
> >     done

> > Jetzt modifizieren wir das Programm so, dass es jedesmal, wenn es das Signal USR1 (10) bekommt, wieder von vorne anfängt.

> >     #!/bin/bash
> >     trap "i=0" 10
> >     i=0
> >     while [ i -le 65535 ]
> >     do
> >       echo $i
> >       let i=$i+1
> >       sleep 1
> >     done

> > Wenn wir dieses Script jetzt laufen lassen und von einem anderen Terminal aus, dem laufenden Script mit

> >     kill -10 PID

> > das Signal 10 schicken, wird dieses Signal vom trap-Befehl abgefangen und der Befehl i=0 ausgeführt. Der Effekt ist sofort sichtbar, unser Programm fängt wieder von vorne zu zählen an.

> > [ Kurs Hauptseite ] [ Linux-Kurse ] [ Startseite Linux-Praxis ]

> > © 1999, 2000, 2001 by F. Kalhammer