tmux 命令穩妥放後台執行

2021-10-25 11:40:40 字數 2185 閱讀 3079

tmux 是乙個終端復用器(terminal multiplexer),非常有用,屬於常用的開發工具。

yum install tmux

yum install ./tmux-1.8-4.el7.x86_64.rpm

rpm -ql tmux

場景假設:比如我們需要執行一條命令,清理docker快取映象docker system prune,這種命令執行前我們已經知道需要執行很久,可能是幾個小時,也可能是幾天,而且這種命令是掛在前台執行的,因此我們需要確保即使終端視窗關掉,服務也不會停止執行

在命令敲tmux進入tmux模擬終端,如下圖

最下面有一條綠色的標誌帶,清楚的告訴我們當前處在tmux視窗裡,如果我們在開乙個視窗ps aux | grep tmux也可以看到有相關tmux程序正在執行

我們使用tail -f /tmp/tmp.txt來模擬乙個在前台執行的並且需要很久時間的命令,如下圖

此時我們不能去ctrl+c或者說關掉視窗,那樣當前執行的程式就退出了,我們需要用tmux提供的退出tmux視窗的方法,即

ctrl+b d
這個命令跟vim一些操作邏輯相似,輸入的過程中不會有任何提示,先按ctrl+b,再按d,即可(都是小寫字母),操作完成之後退出到原本的shell終端

程式還在後台執行著,可以看到這種操作用英文描述是detached,docker裡有attach的操作,功能都類似,簡單理解就是視窗的最小化和最大化,程式本身正常執行無影響

過了一段時間,我們想看看被我們放到後台(也就是最小化)的tmux裡面的程式執行的如何了,我們可以使用

tmux a
重新進去

tmux 視窗有大量的快捷鍵。所有快捷鍵都要通過字首鍵喚起。預設的字首鍵是ctrl+b,即先按下ctrl+b,快捷鍵才會生效

ctrl+b ?  退出幫助是q

man tmux

tmux --help

1. tmux 建立會話,會話編號是0

2. 執行需要長時間執行在前台的命令(不需要nohup、不需要在最後加&)

3. ctrl+b d 退出會話

4. tmux a 進入會話檢視執行效果(進入上乙個剛建立的會話)

如果我們只用乙個會話(這也是最常見的需求),上面的步驟就已經完全足夠了

如果我們需要用到多個會話,可以在建立會話和進入會話的時候加入名稱

tmux new -s 建立會話

tmux attach -t 進入會話

演示

tmux new -s abc

[root@10-222-32-122 ~]# tmux ls

0: 1 windows (created wed nov 18 12:02:35 2020) [204x53]

abc: 1 windows (created wed nov 18 16:10:49 2020) [204x53]

tmux attach -t abc

第乙個啟動的 tmux 視窗,編號是0,第二個視窗的編號是1,以此類推。這些視窗對應的會話,就是 0 號會話、1 號會話。

tmux ls  檢視當前所有的 tmux 會話

tmux attach -t 0 進入會0 (或者 tmux a)

exit 退出當前會話

tmux new -s 新建會話

tmux attach -t 進入會話

nohup 一般的使用方式是nohup linux-command &> /tmp/tmp.log &如果執行的程式有大量輸出,不要輸出到螢幕上,放到檔案裡

linux scp放後台執行方法

使用scp放後台跑完成相關的檔案傳輸 scp r phper 192.168.210.41 mnt cze baseline data cze vma gfsysques vma 1 scp remote username remote ip remote file local folder 2 輸...

linux scp放後台執行方法

客戶要搭建異地的容災dg,壓縮備份集500g,只能使用scp,前台跑經常超時,使scp放後台跑完成相關的檔案傳輸 scp l 40200 fullbak lfcxjmyb 20190507 6448 1.dbfile 10.40.56.2 oradata ybbak 注 l 為限制scp占用的寬頻,...

python flask專案放後台持續執行

1.搭建uwsgi伺服器 用uwsgi對flask應用進行部署 1 既然uwsgi是乙個伺服器,使用前就一定要安裝,在python下,可以直接使用命令pip install uwsgi安裝即可。在linux上安裝命令為 yum install uwsgi 2 先配置,再在ssh終端執行以下2個命令。...