Pregunta

In bash script I handle different signal as follows:

#!/bin/bash

sighdl () 
{
  echo "signal caught"
  #do something
  exit 0
}

trap sighdl SIGKILL SIGINT SIGTERM

Above code handle signal properly for following activity:

  1. Ctrl+C
  2. kill pid
  3. pkill scriptname

For kill -9 pid it does not call sighdl. As per my understanding (if I am not wrong) kill -9 sends the SIGKILL signal.

Any idea?

¿Fue útil?

Solución

You cannot do that. Yes 9 is SIGKILL and Unix system by design doesn't allow any script/program to trap SIGKILL due to security reasons. Otherwise any script can trap & ignore SIGKILL which will make impossible to terminate that script by OS.

Otros consejos

Actually, you can trap SIGKILL in SunOS (Solaris), but not in Linux (validated in Red Hat).

In Linux you can kill the foreign process softly with

kill -15 $PID
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top