wie verwenden Sie kill-SIGUSR2 in der bash?
Benutze ich iptraf, den Netzwerkverkehr zu überwachen, die in linux und der shell-Befehl ist(machen iptraf im hintergrund läuft):
iptraf -s eth0 -f -B -L ./traffic.dat
wenn ich will, um das Ergebnis zu erhalten, muss ich halt iptraf erstmal, also ich habe den Befehl shell:
kill -SIGUSR2 $pid
allerdings, ich konnte nicht aufhören, iptraf, wenn ich diese shell-Befehle in einem bash-Skript-Datei(net.sh), und ich bekomme eine Fehlermeldung:
kill: SIGUSR2: invalid signal specification
Ich benutze "kill -l" in der Skript-Datei(net.sh), und ich finde, es ist kein parameter, der name ist SIGUSR2. und ich würde nichts bekommen, wenn ich USR2 oder -9.
den kompletten Skript-Datei:
iptraf -s eth0 -f -B -L ./temp.txt
pid=`ps -ef | grep iptraf | grep -v grep | awk '{print $2}'`
kill -USR2 $pid
cat temp.txt
Ich nichts bekommen, nachdem Sie diese Befehle.
was soll ich tun, wenn ich will, um das Ergebnis zu erhalten?
Du musst angemeldet sein, um einen Kommentar abzugeben.
SIGUSR2
ist Architektur abhängig und kann den Wert aus31
,12
oder17
. Dies ist beschrieben inman 7 signal
. Sie haben, um herauszufinden, welcher Wert für Ihr system geeignet ist. Normalerweise wird dies bei einem Blick in:Auf meinem system Ubuntu 12.04 AMD 64 - es hat einen Wert von
12
:Sobald Sie wissen, die richtigen numerischen Wert für
SIGUSR2
auf Ihrem system, können Sie dieses signal mit:Auf meinem Linux-Rechner funktioniert es.
Ich lief eine Endlosschleife (pid = 4574), dann lief ich
kill -l hat gezeigt, die signal-und kill -SIGUSR2 geschickt hat, das signal (Tötung der Prozess).
Überprüfen, ob Sie Bash oder eine andere shell (z.B., dash, busybox, etc).
Posix ' Y Weg, dies zu tun ist durch die Verwendung
-s
ohne dieSIG
Präfix. E. g.,:kill -s USR2 $pid
Diese scheint zu funktionieren auf MacOS und linux.