• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Shellskript Problem SIGINT

Hallo Leute,

ich habe ein Problem mit meinem Shellskript.
Das Skript zeigt die 15 CPU-Lastigsten Prozesse auf dem System für einen bestimmten Benutzer oder alle Benutzer an.

Leider funktioniert das Abfangen des Sigint-Signals nur das erste mal.
Wenn ich das 2. mal STRG+C drücke, wird das Programm ohne Hinweis beendet. Wer weiß Rat?

Für Eure freundliche Hilfe möchte ich mich schon im Voraus bedanken.

Viele Grüße

patrick1982a

------------------------------------------------------------------------------

shellparam=$#
param1=$1
param2=$2

hilfe()
{
echo "Falscher Aufruf des Shellscripts"
echo "Aufruf: prozess.sh [-user] [benutzer]"
echo ""
}

sigint_aufruf()
{
#local ergebnis
echo "Beenden? [j/n]:"
read ergebnis
if [ $ergebnis = "j" ];
then
exit 0

else
prozessanzeige $shellparam $param1 $param2
fi
}

prozessanzeige ()
{
if [ "$shellparam" = "0" ]
then

while(sleep 1)
do
trap sigint_aufruf SIGINT
clear
echo "Die Auswahl enthält alle Benutzer."
echo ""
ps -eo user,pid,%cpu,cmd | sort +2 -r |head -16
done;
fi

if [ "$shellparam" -eq "1" -o "$shellparam" -gt 2 ];
then
hilfe
fi

if [ "$shellparam" = "2" ]
then
if [ "$param1" = "-user" ];
then
while(sleep 1)
do
trap sigint_aufruf SIGINT
clear
echo "Die Auswahl enthält den Benutzer" $param2
echo ""
ps -eo user,pid,%cpu,cmd | grep $param2 | sort +2 -r |head -16
done;

else
hilfe
fi
fi


}
prozessanzeige $shellparam $param1 $param2
 

schusch

Newbie
Hi,

es genügt trap einmal aufzurufen, z.B.

Code:
#!/bin/bash
trap "ff" SIGINT

function ff {
echo "Hello world"
a=$(expr $a + 1)
}

a=0
while [ "$a" -lt 5 ];do
sleep 1
done
 
Oben