由于各种原因,我没有将 logstash (7.10.1) 作为服务运行,而是在 bash 脚本中按需调用它:
/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/my_ls.conf &
echo ""
echo "#########################################################"
read -p "Press enter to continue "
它工作得很好,但是当成功创建弹性搜索索引时,它总是暂停:
[INFO ] [[main]-pipeline-manager] javapipeline - Pipeline Java execution initialization time {"seconds"=>1.3}
[INFO ] [[main]-pipeline-manager] javapipeline - Pipeline started {"pipeline.id"=>"main"}
[INFO ] [[main]<file] observingtail - START, creating Discoverer, Watch with file and sincedb collections
[INFO ] [Agent thread] agent - Pipelines running {:count=>1, :running_pipelines=>[:main], :non_running_pipelines=>[]}
[INFO ] [Api Webserver] agent - Successfully started Logstash API endpoint {:port=>9600}
为了让它返回 CLI 提示符,我需要从另一个 SSH 终端运行以下命令:
pkill -f logstash
这当然不方便,我正在寻找一种方法来使 bash 脚本提示“按任意键退出”。
我的问题是,logstash 调用之后的语句(带有&
附加),包括提示read -p "Press enter to continue"
,在 logstash 实际开始工作之前显示,并且 bash 脚本永远不会退出到 CLI 提示符。
当logstash完成索引创建时,使bash脚本提示“按任意键退出”的正确方法是什么?
解决了!
方法如下:
首先,重要的是要承认,正如@roaima 所指出的那样,确实
logstash
不是为了建立索引然后退出而设计的。正如@Alex 建议的那样,拥有这些知识有助于专注于解决方法。此外,这种已知的限制导致了基于 logstash-plugin 的解决方法,如下所述:但是,插件需要在每个 logstash 实例上安装它,并且在每个 .conf 文件中都有自己的语句。
所以,我找到了这个UL 答案,它给我提供了解决方案: