很多時候我們嘗試訪問應用程序或內容,但它要求重新登錄或彈出一個表明您的會話已超時的彈出窗口。 當內容保持空閒並且沒有執行事務時,會話通常會超時。 多次設置“session_time”變量,暫時保持活動連接。 但是當會話超時時會發生什麼,“SIGNUP”信號被發送到在後台運行的進程以及作為主進程的子進程的進程,無論任務完成還是部分完成,這些進程都被迫終止。 那麼,即使在 SSH 註銷後,我們如何才能保持進程運行? 在本文中,我將解釋如何在 SSH 與 Linux 終端(Ubuntu 18.04 和 CentOS 7)斷開連接後保持進程運行。
1) 屏幕命令
screen 實用程序提供了一種在 Linux 系統上運行命令、分離然後稍後重新附加的方法。 如果您有一個耗時的過程,即使在您註銷後仍想繼續運行,並且您仍然可以選擇稍後重新連接到它,然後再從另一個位置重新連接到它,則屏幕特別方便。
使用單個 Screen 會話
提示:我們在這裡使用“top”命令,您可以在屏幕會話中運行命令。 立即按“ctrl+a”和“d”從屏幕會話中分離; 它將繼續在後台運行。
進入分離屏幕會話
$ screen -r
在屏幕上時; 使用“退出”完全結束屏幕會話。
$ exit
[screen is terminating]
你在你的父母 bash 殼; 通過“screen -r”檢查是否有任何屏幕會話
$ screen -r
沒有要恢復的屏幕。
添加多屏
添加更多屏幕會話並簡單地從一個切換到另一個。我們已經在上面看到瞭如何使用單個屏幕會話。 讓我們嘗試多個。 添加第一個屏幕:
$ screen
(run 'top' from screen session; And "ctrl+a" + "d")
$ top
[detached from 15603.pts-1.centos7]
現在,添加第二個屏幕:
$ screen
根據您的意願從這個新的屏幕會話運行任何命令。 讓我們嘗試 ‘df’ 來檢查已安裝的磁盤。(從屏幕會話中運行 ‘df -hT’;然後是“ctrl+a”+“d”)
$ df -hT
[detached from 15652.pts-1.centos7]
獎勵:網名太長? 讓我們為會話命名; name 將替換 tty.host。
這將根據您的意願命名會話; 讓我們將會話命名為“ping”。
$ screen -S
$ screen -S ping
然後分離會話。 你會在 pid 之後看到會話名稱; 而不是 tty.host
$ ping -c5 www.linoxide.com
[detached from 15929.ping]
$ screen -r
There are several suitable screens on:
15929.ping (Detached)
15652.pts-1.centos7 (Detached)
15603.pts-1.centos7 (Detached)
Type "screen [-d] -r [pid.]tty.host" to resume one of them.
2) disown 命令
Top 命令就像查看 Windows 任務管理器中的進程選項卡。 top 命令告訴有關當前正在運行、已死、已殭屍等進程的所有信息。 還給出了每 1 分鐘、5 分鐘、15 分鐘時間戳的 CPU 使用率和 CPU 平均負載。
$ top > sys_summary &
$ jobs -l
[1]+ 10832 Stopped (signal) top > sys_summary
$ disown -h %1
$ ps -ef | grep top
root 2416 1979 0 13:40 ? 00:00:03 nautilus-desktop --force
root 10832 10724 0 19:36 pts/2 00:00:00 top
root 10915 10724 0 19:37 pts/2 00:00:00 grep --color=auto top
3) nohup 命令
讓我們使用 nohup 運行 yum 來安裝一個包
$ nohup yum install -y httpd* > ApacheInstall 2>&1 &
現在讓我們看看在後台運行的作業
$ jobs -l
[1]+ 3646 Running nohup yum install -y httpd* > ApacheInstall 2>&1 &
4) setsid 命令
setsid – 創建一個會話並設置進程組 ID
如果調用進程不是進程組leader,setsid() 會創建一個新會話。調用進程的PID 被設置為進程會話ID 和調用進程各自的組ID。
$ setsid iostat
$ ps -ef | grep iostat
使用 CLT+C 終止命令
5) Tmux 命令
Tmux 是一個終端多路復用器。 在一個終端中的多個程序之間切換很容易,將它們分離(它們繼續在後台運行)並將它們重新連接到不同的終端。
附加和分離 tmux 會話
$ tmux attach
$ tmux detach
退出/終止 tmux
$ exit
在創建會話時命名會話
$ tmux new -s
使用名稱附加
$ tmux attach
使用名稱在會話之間切換
$ tmux switch -t
會話對於分離各種工作環境很有用。 我通常有一個 ‘Office’ 會話和一個 ‘Home’ 會話; 在 ‘Office’,我在日常開發中保持所有我需要的東西都是開放的,而在 ‘Home’ 中,我保持開放當前的開源 gems 以便在家裡進行破解。
6) byobu 命令
許多發行版不支持 bayou 請按照以下命令在 CentOS、Ubuntu 或 Fedora.
$ sudo apt-get install byobu (Ubuntu)
$ sudo yum install byobu (CentOS)
為您各自的環境安裝後,請使用以下簡單命令,
$ byobu
現在我們將啟動長時間運行的進程並退出。
$ tar -xvzf community_images.tar.gz
按“F6”後台執行進程。
登錄遠程系統後,只需鍵入 byobu 即可重新附加會話。
$ byobu
相關文章
- 如何安裝 tmux 和管理多個 Linux 終端
- 用於監控的 30 個 Linux TOP 命令使用示例
- 15 個用於處理終端會話的 Linux 屏幕命令
- Fg/Bg 命令 – Linux 管理進程前台/後台
即使在您從 SSH 會話註銷後,您認為還有什麼其他方式可以保持進程運行? 請在您的評論中提及。 感謝您關注和喜歡我們的文章。