我正在进行bash脚本编写,并希望使用写入文件在两个进程之间建立通信。该计划的演练将是:
目前我很难确定文件何时更新,并将文件的更新部分(在本例中为最后一行)存储在变量中。
任何帮助将不胜感激!
P.S。假设两个进程脚本位于同一位置并且正在不同的终端上运行。
更新
正如一些人建议使用命名管道,文本文件是管道。我在共享文件系统的集群上运行进程,进程可以在任意两个节点上运行。因此,进程1发送的命令被写入文件,并由进程2在不同的节点上读取。另一方面,命名管道要求两个进程都本地存储。
答案 0 :(得分:0)
如上所述,可能最简单的方法是创建一个命名管道,例如,
x <- rgamma(500,shape=q$par[1],scale=q$par[2])
hist(newdata$faminc, prob = TRUE)
curve(dgamma(x, shape=q$par[1], scale=q$par[2]), add=TRUE, col='blue')
请参阅,例如,此短tutorial
在松散的术语中,创建了管道后,第一个进程就像是一个“普通”文件一样写入它。然后,第二个进程执行的任何读取都会阻塞,直到有新的“内容”可用。
答案 1 :(得分:0)
这样的事情:
<强>过程1 强>
#!/bin/bash
while :; do
seq 1 100 >> sharedFile.txt
sleep 3
done
<强>过程2 强>
tail -f sharedFile.txt | awk '/^53/{print "Saw 53"}'
或者如果process2
需要在看到某些内容时运行某些命令:
tail -f sharedFile.txt | awk '/^53/{system("beep")}'