我写了以下脚本:
#!/bin/bash
sleep 15
function_signalr()
{
date
date | awk '{printf "%-15s\n", $2}'
}
trap "function_signalr" 10
当我通过“process&”开始这个过程时它运行,给出PID。 我确实杀了-10 PID,但我的陷阱不起作用。这个过程被杀死了,但陷阱没有出现。没有给出日期消息。我会很感激任何建议。
答案 0 :(得分:4)
您的trap
无效,因为shell尚未了解它。
您需要定义trap
函数,设置trap
然后编写代码。
#!/bin/bash
function_signalr()
{
date
date | awk '{printf "%-15s\n", $2}'
}
trap "function_signalr" 10
# Code follows now
sleep 15
此外请注意,sleep
是阻止的,这意味着如果您执行kill -10 PID
,那么trap
将无法执行,直到sleep
完成。