我有几个同时运行的bahs脚本,它们通过在文件夹中保存触发变量来相互通信。所以一个脚本会做一些事情,当它完成时它将回显“完成”> variablefolder。第二个脚本有一个循环,不时检查变量文件夹中是否有“完成”。如果是,则脚本执行某些操作。
Bash是否支持更好的方法?我知道 export name = value ,但实际上这与我现在正在做的几乎相同。我在想,有没有办法将信息推送到对其作出反应的Bash脚本?所以当推送到它时,Bash脚本会运行一个函数,还是什么?
答案 0 :(得分:3)
处理进程间通信的一种方法是使用信号......
要将信号发送到另一个进程,您可以使用kill命令。
kill命令使用进程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