Ich verwende iptraf, um den Netzwerkverkehr in Linux zu überwachen, und der Shell-Befehl ist (make iptraf läuft im Hintergrund):
%Vor%Wenn ich das Ergebnis erhalten möchte, muss ich zuerst iptraf stoppen, also verwende ich den Shell-Befehl:
%Vor%Ich konnte jedoch iptraf nicht stoppen, wenn ich diese Shell-Befehle in eine Bash-Skript-Datei (net.sh) verschiebe, und ich bekomme einen Fehler:
%Vor%Ich benutze 'kill -l' in der Skriptdatei (net.sh), und ich finde, dass es keinen Parameter gibt, dessen Name SIGUSR2 ist. und ich würde nichts bekommen, wenn ich USR2 oder -9 benutze.
Die vollständige Skriptdatei lautet:
%Vor%Nach diesen Befehlen bekomme ich nichts.
Was soll ich tun, wenn ich das Ergebnis bekommen möchte?
SIGUSR2
ist abhängig von der Architektur und kann einen Wert von 31
, 12
oder 17
haben. Dies wird in man 7 signal
beschrieben. Sie müssen herausfinden, welcher Wert für Ihr System geeignet ist. Normalerweise wird dies durch einen Blick in:
Auf meinem System - Ubuntu 12.04 AMD 64 - es hat einen Wert von 12
:
Sobald Sie den richtigen numerischen Wert für SIGUSR2
auf Ihrem System kennen, können Sie dieses Signal senden mit:
Auf meiner Linux-Box funktioniert es.
Ich habe eine Endlosschleife (pid = 4574) ausgeführt, dann habe ich
ausgeführt %Vor%kill -l hat das Signal angezeigt und kill -SIGUSR2 hat das Signal gesendet (den Prozess wird abgebrochen).
Überprüfen Sie, ob Sie Bash oder eine andere Shell (z. B. Dash, Busybox usw.) ausführen.
Die Möglichkeit, dies zu tun, besteht darin, -s
ohne das Präfix SIG
zu verwenden. ZB:
kill -s USR2 $pid
Dies scheint auf MacOS und Linux zu funktionieren.