Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to use kill SIGUSR2 in bash?

Tags:

linux

shell

kill

I use iptraf to monitor the network traffic in linux, and the shell command is(make iptraf running in background):

iptraf -s eth0 -f -B -L ./traffic.dat

if I want to get the result, I have to stop iptraf first, so I use the shell command:

kill -SIGUSR2 $pid

however, I could not stop iptraf if I move these shell commands into a bash script file(net.sh), and I get an error:

kill: SIGUSR2: invalid signal specification

I use 'kill -l' in the script file(net.sh), and I find there is no parameter which name is SIGUSR2. and I would get nothing if I use USR2 or -9.

the complete script file is:

    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

I get nothing after these commands.

what shoud I do if I want to get the result?

like image 240
Mark Avatar asked Jul 11 '13 08:07

Mark


3 Answers

Cross-platform way to do this: use -s without the SIG prefix. E.g.,:

kill -s USR2 $pid

This seems to work on both MacOS and linux.

like image 190
Avindra Goolcharan Avatar answered Oct 12 '22 14:10

Avindra Goolcharan


SIGUSR2 is architecture depended and can have a value out of 31, 12 or 17. This is described in man 7 signal. You'll have to find out which value is appropriate for your system. Usually this is done by having a look into:

/usr/include/asm/signal.h 

On my system - Ubuntu 12.04 AMD 64 - it has a value of 12:

#define SIGUSR2     12

Once you know the proper numeric value for SIGUSR2 on your system, you can send this signal using:

kill -SIGNO PID
# In this case
kill -12 PID
like image 17
hek2mgl Avatar answered Oct 25 '22 19:10

hek2mgl


On my Linux box it works.

I ran an infinite loop (pid = 4574), then I ran

#!/bin/bash
kill -l | grep USR2
kill -SIGUSR2 4574

kill -l has showed the signal and kill -SIGUSR2 has sent the signal (killing the process).

Check if you are running Bash or some other shell (e.g., dash, busybox, etc.)

like image 9
Claudio Avatar answered Oct 25 '22 18:10

Claudio