簡體   English   中英

一段時間后停止命令執行並在 shell 腳本中執行下一個命令

[英]Stop command execution after a while and execute next command in a shell script

我想創建一個執行以下操作的腳本:

  1. 創建一個 Kafka 服務器
  2. 在 Kafka 上創建主題
  3. 開始生成有關已創建主題的消息

我的腳本是這樣的:

docker run -p 2181:2181 -p 9092:9092 --env ADVERTISED_HOST=localhost --env ADVERTISED_PORT=9092 spotify/kafka
bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic my_topic
jq -rc . messages.json | bin/kafka-console-producer.sh --bootstrap-server localhost:9092 --topic my_topic

但是第一個命令的執行過程永遠不會結束,它不能 go 到第二步。 我如何了解 Kafka 服務器已准備就緒,之后如何執行下一個命令?

您可以添加-d選項來run以運行容器而不附加到它,從而允許您的腳本立即繼續。 這引發了一個問題,即知道服務器准備好等待您的 shell 腳本發出的任何請求之前要等待多長時間。 一個粗略的解決方法是插入一個sleep調用,以等待您認為必要的時間。

docker run -d ...
sleep 10  # Ten seconds should be plenty
bin/kafka-topics.sh ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM