避免ssh斷開導致執行命令的終止 screen

2022-08-13 05:09:22 字數 1717 閱讀 9797

事情是這樣的,需要使用ssh登陸伺服器,進行工程的編譯,結果不知道什麼原因ssh出現write failed:broken pipe,掉線了。反覆實驗了好幾次還是這樣(白花花的時間啊,又是configure又是make的),掉線的結果當然是需要重新登陸,然而正因為如此,之前編譯的相當於中斷了。有沒有辦法,讓ssh掉線,但是之前的命令依然繼續執行呢。

經過同事的指點,找到相應的命令screen。

使用telnet或ssh遠端登入linux時,如果連線非正常中斷,重新連線時,系統將開乙個新的session,無法恢復原來的 session.screen命令可以解決這個問題。screen工具是乙個終端多路轉接器,在本質上,這意味著你能夠使用乙個單一的終端視窗執行多終端的應用。[1]

換言之,我在ssh登陸到伺服器時,在伺服器上使用screen -s zrss,建立乙個zrss名稱的session,然後在這個session中進行工程的編譯,這樣即使斷線,在伺服器session中的命令還在執行。

如果之前斷線了,再次ssh登陸伺服器後,使用screen -ls可以知道,有幾個session,如果session狀態為detached,使用命令screen -r zrss即可,或者是程序id,即可回到之前視窗。

zrss@pc:~$ ssh [email protected]

[email protected]'

s password:

last login: fri jul 25

09:02:35

2014

from pc.corp.ad.wrs.com

[zhuang2@pek-lpgtest2 ~]$ screen -s zrss

[zhuang2@pek-lpgtest2 ~]$ ls

總用量

345688

-rw-r--r-- 1 zhuang2 users 6610432 7月 25

09:07 intel-x86-64-bzimage-wr6.0.0

.0_standard

-rw-r--r-- 1 zhuang2 users 347014977 7月 25

09:08 intel-x86-64-glibc-std-standard-dist.tar

.bz2

[zhuang2@pek-lpgtest2 ~]$ write failed: broken pipe

zrss@pc:~$ ssh [email protected]

[email protected]'

s password:

last login: fri jul 25

09:29:22

2014

from pc.corp.ad.wrs.com

[zhuang2@pek-lpgtest2 ~]$ screen -ls

there are screens on:

26091.pts-47.pek-lpgtest2 (detached)

9250

.zrss (detached)

2 sockets in /var/run/screen/s-zhuang2.

[zhuang2@pek-lpgtest2 ~]$ screen -r zrss

在screen中輸入exit即可終止session

[1][2]

比亞迪某系統命令執行導致的內網漫遊

之前提過比亞迪外網可能還有很多伺服器存在命令執行 找了一下 果然有 而且還可以作為邊界伺服器漫遊內網 建立了個test使用者,連線遠端桌面進去看了下,有內網ip 在此台計算上 發現資料庫配置資訊 sa許可權,提權,遇到阻礙,禁止了cmshell 安全選項 直接sa鏈結進去 執行sql 恢復了 所以這...

使用expect和ssh遠端執行命令的指令碼

usr bin expect f exp version exit 5.0 if set cmd lindex argv 0 set password lindex argv 1 eval spawn cmd set timeout 30 while re enter passphrase for ...

Crontab執行指令碼中的ssh命令訪問被拒絕

我們經常會通過crontab來執行定時任務,通常生產環境中在不同主機直接進行登入是通過ssh來連線的。比如我們通過在備份伺服器上設定定時任務,定期通過scp 使用ssh的遠端拷貝命令 來拷貝遠端伺服器的資料到備份伺服器上,這也是我遇到的乙個事情。環境描述 指令碼與定時任務 定時任務設定如下 無論是否...