簡體   English   中英

多個標簽和Bash腳本

[英]Multiple tabs and Bash scripting

我試圖打開多個選項卡,並在每個選項卡中執行一系列命令。 可以說我打開了3個標簽tab1,tab2,tab3。 然后在每個標簽中,我要執行以下命令:

  • ssh user @ address(已設置PublicKey身份驗證,因此無需輸入密碼)

  • 啟動python腳本(python some.py)

  • 執行命令后將選項卡保持打開狀態以查看輸出。

我經歷了一些話題,並對Bash腳本有一個粗略的概述。

#!/bin/bash

echo "Script running"
gnome-terminal -e "bash -c \"ssh user@address; uname -a; exec bash\""

當我運行上面的腳本時,將打開一個新的終端,可以看到我已將ssh-ssh到目標地址,但另一個命令uname -a執行。

我想以此為基礎實現以下內容:

  1. 打開多個選項卡並運行命令。 例如: gnome-terminal --tab -e "bash -c \\"ssh user@address; python file1.py; exec bash\\"" -tab -e "bash -c \\"ssh user@address; python file2.py; exec bash\\"" gnome-terminal --tab -e "bash -c \\"ssh user@address; python file1.py; exec bash\\"" -tab -e "bash -c \\"ssh user@address; python file2.py; exec bash\\""

  2. 等待python文件之一開始執行,然后再打開另一個標簽並為另一個python文件重復該過程。

還有沒有更好的方法來執行相同的任務?

上面的代碼片段來自此線程

為此,您應該考慮使用screentmux或類似的終端多路復用器。

用法示例:

screen -d -m bash -c 'ls; bash'

啟動一個在其中執行了ls然后啟動外殼的屏幕會話,然后

screen -X screen bash -c 'date; bash'

要在現有屏幕會話中創建一個新窗口 ,請在其中運行date ,然后在該窗口中啟動外殼。

請注意,程序在運行時不會立即在控制終端上看到它們的輸出。 然后,您可以使用

screen -x

它將使您連接到正在運行的會話,並將顯示一個屏幕窗口(兩個正在運行的程序的虛擬終端)。 鍵入Ctrl-A n將在窗口之間切換, 按Ctrl-A d將再次使您脫離,使程序繼續運行,因此以后可以使用screen -x進行附加。

您可以從多個位置(例如,從兩個不同的Gnome終端)連接到相同的運行窗口。 然后兩者將顯示相同的內容。

使用screen另一個優點是您可以注銷並保持程序運行。 如果以后再次登錄,仍然可以連接到正在運行的會話。

只有直接攻擊(例如重新啟動,終止信號或交互作用(例如在連接時按Ctrl-C ))才會終止程序。

暫無
暫無

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

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