收到信号后,我可以使用来执行一些命令trap。例:
trap
trap 'echo hello world' 1 2
如果收到指定的任何信号,则显示“ hello world”。
但是如何打印/识别接收到的信号名称?
(如果您只有一个信号编号并想要一个名称,则kill -l $SIGNAL_NUM打印一个信号名称;您可以通过使用信号名称代替trap下面的调用中的数字来避免这种情况。)
kill -l $SIGNAL_NUM
码:
#!/bin/bash trap_with_arg() { func="$1" ; shift for sig ; do trap "$func $sig" "$sig" done } func_trap() { echo "Trapped: $1" } trap_with_arg func_trap INT TERM EXIT echo "Send signals to PID $$ and type [enter] when done." read # Wait so the script doesn't exit.
如果运行该命令,则可以向该进程发送信号,并得到如下输出
Trapped: INT Trapped: TERM Trapped: EXIT