我已经阅读了有关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中运行?
答案 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