簡體   English   中英

如何從 bash 腳本中退出 yarn top 命令的交互模式

[英]How to exit the interactive mode for yarn top command from within the bash script

我有一個位於 serverA 上的 bash 腳本。 該腳本將通過 ssh 連接到 serverB 並運行 yarn top 命令,提取指標並將其放入 serverA 上的文件(test.txt)中。 以下是我正在使用的命令:

ssh -oStrictHostKeyChecking=no -i <key> username@hostname "yarn top" | head -5 | grep -w 'Applications' | awk '{print "Pending_apps" "\t" $7}' >> test.txt

所以這里的問題是,在我的腳本在命令之上運行后,它進入交互模式,只有當我給 Ctrl+C 或手動退出信號/命令時它才會退出。

在運行上述命令並將輸出重定向到 test.txt 后,有什么方法可以讓腳本移動到下一個命令。 那是在命令提示符上運行上述命令后,它應該將輸出重定向到 test.txt 文件,然后應該返回到命令提示符/終端

您可以嘗試通過管道輸出echo來模擬控制台,如下所示:

(sleep $SLEEP_TIME; echo -e "q\n\n") | yarn top > yarn-top.log

它的意思是:“運行 yarn top,並並行等待SLEEP_TIME ,然后輸出 q 和兩個新行”。

只要SLEEP_TIME小於yarn top的默認刷新延遲(默認為 3 秒),您將在yarn-top.log獲得一個屏幕更新。 如果您將SLEEP_TIME設置SLEEP_TIME大於刷新延遲,您將獲得與SLEEP_TIME期間有時間運行的盡可能多的更新。

您需要echo -e來轉義換行符。 您需要它們,因為yarn top是用 java 實現的。 yarn top --help

  1. 由於該工具是用 Java 實現的,您必須按 Enter 才能處理按鍵操作。

經典top可以通過top -n 1以非交互模式運行top -n 1不幸的是我找不到yarn top文檔

或者你可以嘗試在后台運行命令( & ),保存它的 pid,等待數據並殺死它

ssh -oStrictHostKeyChecking=no -i <key> username@hostname "yarn top" | head -5 | grep -w 'Applications' | awk '{print "Pending_apps" "\t" $7}' >> test.txt & PID=$!; sleep 1; kill -s SIGINT $PID

希望 ssh 傳輸 SIGINT 成功

暫無
暫無

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

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