伺服器端使用Screen

2021-07-17 00:23:25 字數 2784 閱讀 2497

如果你在linux伺服器端工作,沒有聽說過screen或tmux那簡直弱爆了。有時間自己可以多了解一些。

簡單介紹下screen:

screen是乙個可以在多個程序之間多路復用乙個物理終端的視窗管理器。

screen中有會話的概念,使用者可以在乙個screen會話中建立多個screen視窗,在每乙個screen視窗中就像操作乙個真實的telnet/ssh連線視窗那樣。

screen可以保持shell的會話狀態,也就意味著,在那個shell會話中的諸如:ssh連線,檔案編輯,程式執行等等狀態都是可以恢復的,所以每天上班不用繁瑣地乙個個開啟工作環境,且在斷網情況下也不用擔心有任何影響。

下面簡單介紹下screen的配置和使用。

1)配置方法

在自己的home目錄下建乙個名為 .screenrc 的screen配置檔案。

下面貼一下我的配置,僅供參考:

#取消screen的快捷鍵c-s

defflow off

#將ctrl-a替換為ctrl-z, 預設ctrl-a是screen的命令模式

escape ^zz

#關了閃屏

vbell off

#編碼的配置

defutf8 on

defencoding utf8

encoding utf-8 utf-8

這樣能避免中文亂碼的問題

#defencoding gbk

#encoding utf-8 gbk

#defencoding utf-8

#encoding gbk utf-8

#定製自己需要的顯示資訊

#altscreen on

#caption always "% % [%n]%t @ %h % %= % % $ % @v@ % | % %y-%m-%d %"

hardstatus alwayslastline

hardstatus string "%[%%h%][%= %%?%-lw%?%(%%n*%f%t%?(%u)%?%)%%?%+lw%?%?%= %][%%y-%m-%d% %c:%s%]"

#快捷鍵,(note: k1表示f1,k;是f10)

#bindkey -k k1 select 1 #f1 to select 1

bindkey -k k2 screen #f2 to new a screen

bindkey -k k9 detach #f9 to detach

#bindkey -k k; detach #f10 to detach

bindkey -k k3 prev #f3 to previous

bindkey -k k4 next #f4 to next

bindkey -k k7 kill #f7 to kill current window

bindkey -k k8 title #f8 to rename a window

bindkey -k f1 quit #f11 to kill all windows and terminate screen

bindkey -k f2 help #f12 to show key bindings

2)使用方法:

初次使用,使用 screen -s 《標識名》 來新建乙個screen會話,之後可以通過如上快捷鍵操作,比如f2新建視窗,f3,f4切換

一但開啟了screen,你不再需要擔心網路狀態,比如現在可以直接關掉遠端連線,所有的會話由screen繼續保持執行。

重新恢復screen會話,建議使用: screen -rd 《之前已建立的標識名》

另外,可以通過我上述配置的f9快捷鍵,從screen會話中快速detach出來。

不需要的screen視窗,可以直接在shell裡exit出來

3)常用技巧:

--note: 標準命令是c-a, 我在上述配置中將其改為c-z了,所以下面使用c-z來描述。

a) c-z [ 進入screen copy mode, 可以方便地向上滾屏檢視需要的內容,此時自動進入vi模式,可以使用vi的移動及查詢等等功能;

b) c-z : 命令模式,比如我這時可以輸入encoding utf8 utf8 來改變當前screen的顯示編碼,當前這些可以通過配置檔案來控制;

c) c-z k kill current window, 當乙個視窗進入一些假死狀態無法exit時,可以使用screen的這個命令強行殺死;

d) c-z c 建立乙個新的執行shell的視窗並切換到該視窗(是的,就是我上面配置裡繫結的f2);

e) c-z n 切換到下乙個視窗(對應我的f4,除了n還可以使用:^@ ^n sp這三個),當然n可以替換具體數字0,1,2,3等從而直接進入指定視窗,類似其他不再贅述了,直接man screen檢視help吧;

f) c-z a 視窗重新命名(已被我繫結到f8),合理使用這個功能,給每個視窗起有意義的名字方便快速定位;

g) c-z ? 顯示出所有的繫結,ok,所有的東西都在這裡了。關鍵是多動手嘗試 :-)

4)其他

有時我們需要臨時登入到伺服器上測試執行乙個程式,或在伺服器上臨時編輯乙個重要檔案,但擔心操作過程中會斷網。這時,可以在命令前加個screen來臨時建立乙個screen會話。

比如:

screen ./run

screen vim conf.txt

socket伺服器端

伺服器 include winsock2.h include string.h include stdio.h include time.h include stdarg.h include stdlib.h pragma comment lib,ws2 32 void errexit const ...

kerberos伺服器端

1.安裝tcl wget tar zvxf tcl8.5.12 src.tar.gz cd tcl8.5.12 cd unix configure make make install 3.解壓 tar xvf krb5 1.10.3 signed.tar tar zvxf krb5 1.10.3.t...

C tcp伺服器端

伺服器端 include stdafx.h include winsock2.h pragma comment lib,ws2 32.lib include using namespace std int tmain int argc,char ar 建立套接字 sserver socket af ...