2

我写了下面的脚本:

#!/bin/bash
sleep 15

function_signalr()
{
date
date | awk '{printf "%-15s\n", $2}' 
}

trap "function_signalr" 10

当我通过“进程&”启动进程时,它会运行,给出 PID。我确实杀死了 -10 PID,但我的陷阱不起作用。进程被杀死,但陷阱没有出现。没有给出日期消息。我将不胜感激任何建议。

4

1 回答 1

5

你的trap不起作用,因为外壳还不知道它。

您需要定义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

于 2014-04-06T13:22:39.610 回答