如何使回调示例在bash中运行?

时间:2018-11-18 13:33:21

标签: bash callback pkill

我已经阅读了有关bash回调的讨论,jlliagre发布了一个了不起的例子。
callback example posted by jlliagre
在这里背诵要点。
1.创建回调示例,并使用./callback-example在终端上运行。

#!/bin/bash
myCallback() {
    echo "I've been called at $(date +%Y%m%dT%H%M%S)"
}
# Set the handler
trap myCallback SIGUSR1
# Main loop. Does nothing useful, essentially waits
while true; do
    read foo
done

2。在另一个终端上,将USR1信号发送到Shell进程。

$ pkill -USR1 callback-example

作者说:发送的每个信号都应触发在第一终端中显示这些行:

I've been called at 20180925T003515
I've been called at 20180925T003517

我发现它不会在我的bash中发生,如何修复它并在bash中运行?

2 个答案:

答案 0 :(得分:0)

您的脚本在流程列表中显示为/bin/bash ./callback-example,而不仅显示为./callback-example

在您的-f命令中添加选项pkill

来自man pkill

  

-f:该模式通常仅与进程名称匹配。设置-f时,将使用完整的命令行。

答案 1 :(得分:0)

kill -USR1 `ps aux|grep callbac[k] |awk '{print $2}'`

OR

pkill -USR1  -f  callback-example