在離開 ssh 連線之後持續在背景運作程式
2022, Mar 23
之前寫過在 Linux 的 terminal 下如何在背景運作程式,但是在離開 ssh 連線之後背景的程式也會跟著被關閉,尋尋覓覓終於找到一個方法可以在背景運作,還可以找回來的作法
問題描述
有個需求是要在 remote 的機器上背景執行一個 tty 程式類似於 karaf
,並且在離開 ssh 之後還可以繼續執行,並且能夠回到該 tty 繼續使用
原本是朝向把程式弄成一個 daemon 在背景跑,但要能夠再次回到 terminal 操作就有點困難,而且要弄成 daemon 也不是個簡單的作法,因此誕生了這個方法
tmux
安裝
sudo apt install tmux
背景執行的方法
這個解法是透過 tmux
這個工具程式完成的,之後有機會再詳細介紹,簡言之
tmux
是一款 terminal 下的多視窗管理工具,可以切分不同的 terminal 在同一個畫面,或是像頁籤一樣同時管理不同的 terminal 分頁,而每個分頁或視窗都可以獨立運行
這裡便是運用了 tmux
可以暫離 session 的特性,步驟如下:
- 執行
tmux
- 在
tmux
之中運行需要背景執行的程式 - 輸入
ctrl + b
然後鍵入d
這時候會發現你跳出 tmux
了,讓我們用 ps -aux
看看,會發現你的程式是有在運行的,並且離開 ssh 之後它還是在
而如果之後想要回到剛剛的 tmux
的話就輸入指令 tmux attach
如果上述的操作作了很多次,就會有很多 session 被丟到背景的話,可以輸入 tmux ls
可以看到所有的 session
並且透過 tmux attach -t <session-name>
可以回到指定的 session
其他操作
ctrl + b
+&
: 結束當前 window,如果是最後一個 window 就結束 sessionctrl + b
+c
: 建立新的 windowctrl + b
+$
: 幫當前的 session 重新命名ctrl + b
+s
: 用視覺化的方式切換 session 以及 window,還可以預覽內容,非常強大
應該會用到的就這幾個了
結語
這算是意外發現的收穫,之前就知道有 tmux 這款多視窗工具,但一直沒找到機會用,沒想到在這樣的場合用上了XD,tmux 其實是款非常強大的工具,希望日後有機會能多了解一下