Ciao a tutti, premetto che è da pochissimo che utilizzo il bash. Ho un problema su uno script (chiamato ese21) che dovrebbe eseguire un ciclo infinito e intercettare i segnali SIGUSR1 e SIGUSR2 ogni decimo di secondo. Quando si riceve il segnale SIGUSR1 lo script dovrebbe stampare a video "ricevuto segnale SIGUSR1", per quanto riguarda il segnale SIGUSR2 dovrebbe comportarsi analogamente. Ho provato a fare il tutto nel seguente modo:
#!/bin/bash
while true; do
sleep 0.1
trap echo "ricevuto segnale SIGUSR1" SIGUSR1
trap echo "ricevuto segnale SIGUSR2" SIGUSR2
done
Dovrei lanciare lo script in background.
Successivamente dovrei testare lo script lanciando i due segnali SIGUSR1 e SIGUSR2 per 10 volte a distanza di 1 secondo e quindi terminare il processo in background. Ho quindi creato il seguente script (chiamato ese22):
#!/bin/bash
#lancio lo script ese21
./ese21.sh &
for ((i=0; i<10; i+=1)); do
sleep 1
kill -SIGUSR1 $!;
kill -SIGUSR2 $!;
done
Ora, quando esegue da terminale ese22 con il comando bash ese22.sh mi dice "permesso negato" e successivamente mi stampa ripetutamente il seguente messaggio
ese22.sh: riga 7: kill: (16693) - Nessun processo corrisponde
ese22.sh: riga 8: kill: (16693) - Nessun processo corrisponde
Qualcuno sa dirmi qual'è il problema ?
Grazie mille!