Bash是否支持一种“触发”事件的方式?

时间:2014-07-17 07:43:27

标签: bash triggers

我有几个同时运行的bahs脚本,它们通过在文件夹中保存触发变量来相互通信。所以一个脚本会做一些事情,当它完成时它将回显“完成”> variablefolder。第二个脚本有一个循环,不时检查变量文件夹中是否有“完成”。如果是,则脚本执行某些操作。

Bash是否支持更好的方法?我知道 export name = value ,但实际上这与我现在正在做的几乎相同。我在想,有没有办法将信息推送到对其作出反应的Bash脚本?所以当推送到它时,Bash脚本会运行一个函数,还是什么?

1 个答案:

答案 0 :(得分:3)

处理进程间通信的一种方法是使用信号......

要将信号发送到另一个进程,您可以使用kill命令。 kill命令使用进程ID来标识进程。 脚本开始使用$$变量

后,您可以将进程ID保存到文件中

以下是捕获信号的脚本示例:

#!/bin/bash
echo $$ > /tmp/pid  # Save the pid

function do_stuff {
   echo "I am doing stuff"
   exit
}

trap do_stuff SIGINT

while `true`
do
   echo "Waiting for a signal"
   sleep 1
done

所以要发送信号,你可以这样做:

#!/bin/bash
pid=`cat /tmp/pid`  # Read the pid
kill -s INT $pid