[#] Przechwytywanie sygnałów wysłanych do skryptu

( Ostatnio zmieniony wt., 17/06/2008 - 14:34 )
 

Polecenie trap służy do przechwytywania sygnałów wysłanych do procesu skryptu. Listę sygnałów możemy zobaczyć wpisując w powłoce polecenie trap -l

Składnia:

trap <polecenie> <sygnał>

Uwaga: Pisząc zamiast polecenia myślnik przypisujemy sygnałowi domyślną akcję. Przykład:

#!/bin/bash
trap 'echo "Jestem kuloodporny, strzelaj sobie ..."' SIGINT
trap 'echo "Teraz już nie jestem kulodporny, możesz mnie unicestwić"; trap - SIGINT' SIGHUP

while : ; do
  echo "Naciśnij ^C (ctrl+C) aby wyjść"
  sleep 5
done

Uwaga:

  1. Pamiętaj o pojedynczych cudzysłowach.
  2. Do polecenia trap można przypisać dowolne polecenia a nawet funkcję! Co może stwarzać bardzo duże możliwości.
  3. Sygnał KILL (-9) nie może być zablokowany

Pierwsze polecenie trap powoduje, że program na wysłanie sygnału SIGINT będzie reagował pierwszym komunikatem. Następna linijka mówi, że wysyłając sygnał SIGHUP skrypt również wypisze komunikat, ale też przypisze standardowe działanie dla sygnału SIGINT.

Tak więc początkowo naciskając klawisze ^C nie uda nam się zamknąć programu, ale wystarczy wysłać do procesu sygnał SIGHUP, by było to możliwe.

Aby wysłać sygnał używamy polecenia kill. W naszym przypadku będzie to polecenie kill -SIGHUP PID

źródło: http://bash.0x1fff.com/polecenie:trap

4.5
Twoja ocena: Brak Średnio: 4.5 (4 głosy)