在后台运行流程并仅在需要时接收其输出的最佳方法是什么?
预期用法:对每个会话初始化一次重新初始化的提示输出脚本,而不是每次提示运行。注意:需要双向通信:shell需要告知何时需要新提示,最后一个命令状态是什么。
已知解决方案:
答案 0 :(得分:1)
Bash支持自4.0版以来的协同处理,但多个协同处理仍然是实验性的。
我会使用一些明确创建的文件,如果它们是每个用户和主机,则命名为~/.myThing-$HOSTNAME/fifo
。您可以使用flock
来相对轻松地确定命令是否仍在运行,并可选择启动它:
(
flock -n 123 || exit 1
rm/mkfifo ..
exec yourServer < .. > ..
) 123> ~/".myThing-$HOSTNAME/lockfile"
如果命令或服务器死机,则会自动释放锁定,并且您只有几个零长度文件。下次服务器启动时,它会删除并重新设置它们。
查询服务器将类似,但如果锁定不正在使用(并且可选地使用等待锁以避免争用),则退出。