[Linux] Linux指令汇总(持续更新中...)
寫在前面:
以前真心沒有玩過Linux系統(tǒng),總感覺整天擺弄Linux的同學(xué)都是大牛。如今,在公司里實習(xí)需要遠(yuǎn)程登錄Linux服務(wù)器,所有的代碼都要在開發(fā)板上完成,所以被逼無奈也不得不定下心來好好學(xué)學(xué)Linux系統(tǒng)的各種操作。我現(xiàn)在用的遠(yuǎn)程登錄軟件是PuTTY,所以簡單總結(jié)一下常用的PuTTY指令,方便以后進(jìn)行查閱。
1. PuTTY介紹
隨著Linux在服務(wù)器端應(yīng)用的普及,Linux系統(tǒng)管理越來越依賴于遠(yuǎn)程。在各種遠(yuǎn)程登錄工具中,PuTTY是出色的工具之一。PuTTY是一個免費的、Windows 32平臺下的telnet、rlogin和ssh客戶端,但是功能絲毫不遜色于商業(yè)的telnet類工具。
用它來遠(yuǎn)程管理Linux十分好用,其主要優(yōu)點如下:- 完全免費;
- 在Windows系統(tǒng)下運行的都非常好;
- 全面支持ssh1和ssh2;
- 綠色軟件,無需安裝,下載后在桌面建個快捷方式即可使用;
- 體積很小,僅0.5MB(0.63 版本),下載地址:請點這里;
- 操作簡單,所有的操作都在一個控制面板中實現(xiàn)。
2. PuTTY設(shè)置
使用Putty連接Linux VPS完全詳細(xì)教程請見:PuTTY中文站。
3. Linux常用操作指令介紹
在介紹Linux的操作指令之前,先簡單的介紹一下shell(這里可不是說的shell排序哦)。
什么是shell?操作系統(tǒng)與外部最主要的接口就叫做shell。也許這不是很好理解,舉個簡單的例子。最常見的cmd命令行,這是windows操作系統(tǒng)下的一個shell。說白了,我對shell的理解是:shell是指開發(fā)者提供給客戶的接口,方便客戶更好的使用他們的虛擬主機(jī)服務(wù)。shell分為兩類:圖形界面shell和命令行式的shell。本文中主要涉及PuTTY中命令行式的shell。
3.1 基本指令篇
1)-ls 列出當(dāng)前文件夾下所有內(nèi)容
$ls -o 列出當(dāng)前文件夾中所有內(nèi)容,含詳細(xì)信息,但不列出group
$ls -l 同上,含group信息
$ls -a 列出當(dāng)前文件夾中所有內(nèi)容,包含以”.”開頭的文件
$ls -t 按更改時間排序
$ls -v 按版本先后排序
注:其實這么多,最常用的還是ls指令。
2)-cd [dir] 進(jìn)入文件夾
3)-pwd 顯示當(dāng)前路徑
4)-mkdir [dir] 新建文件夾
5)-rm [file] 刪除文件/文件夾
$rm -f [file] 強(qiáng)行刪除,忽略不存在的文件,無提示
$rm -r [file] 遞歸刪除所有內(nèi)容
$rm -rf [file] 刪除目錄
6)-cp 拷貝
$cp [options] [source] [destination] ——其中[options]為:-f(強(qiáng)行拷貝)或-r(遞歸拷貝)
7)-mv 重命名或移動
$mv [options] [source] [destination]——其中[options]為:-f(強(qiáng)行移動/重命名), -i(移動/重命名前嘗試), -u(更新)
例如:$mv wwwroot/cgi-bin . 將/cgi-bin目錄移動到當(dāng)前目錄下(注意當(dāng)前目錄表示為“.”)
$mv cronfile.txt myfile.txt 將cronfile.txt重命名為myfile.txt
8) -vim 打開文件(紅色標(biāo)記的為常用指令)
$vim [file] 打開一個文件,其中file可以為單個文件也可以為多個文件
vim模式:
正常模式(按Esc或Ctrl+[進(jìn)入) 左下角顯示文件名或為空
插入模式(按i鍵進(jìn)入) 左下角顯示--INSERT--
可視模式(按r鍵進(jìn)入) 左下角顯示--VISUAL--
vim導(dǎo)航:
% 括號匹配
vim查找命令:
/text 查找text,按n健查找下一個,按N健查找前一個。
?text 查找text,反向查找,按n健查找下一個,按N健查找前一個。
vim中有一些特殊字符在查找時需要轉(zhuǎn)義 .*[]^%/?~$
vim查找特殊字符(二合字母):用命令:digraphs可以查看可用的二合字母列表,不過輸出不是很好閱讀。可以用:h? digraph-table查看另一個更好閱讀的列表,并且該列表對二合字母進(jìn)行了分類,該命令相當(dāng)于直接打開了vim的digraph.txt文檔。
:set ignorecase 忽略大小寫的查找
:set noignorecase 不忽略大小寫的查找
查找很長的詞,鍵入麻煩,可以將光標(biāo)移動到該詞上,按*或#鍵即可以該單詞進(jìn)行搜索,相當(dāng)于/搜索。而#命令相當(dāng)于?搜索。
:set hlsearch 高亮搜索結(jié)果,所有結(jié)果都高亮顯示,而不是只顯示一個匹配。
:set nohlsearch 關(guān)閉高亮搜索顯示
:nohlsearch 關(guān)閉當(dāng)前的高亮顯示,如果再次搜索或者按下n或N鍵,則會再次高亮。
:set incsearch 逐步搜索模式,對當(dāng)前鍵入的字符進(jìn)行搜索而不必等待鍵入完成。
:set wrapscan 重新搜索,在搜索到文件頭或尾時,返回繼續(xù)搜索,默認(rèn)開啟。
vim撤銷命令:
u 撤銷(Undo)
U 撤銷對整行的操作
Ctrl + r 重做(Redo),即撤銷的撤銷。
vim退出命令:
:wq 保存并退出
ZZ 保存并退出
:q! 強(qiáng)制退出并忽略所有更改
:e! 放棄所有修改,并打開原來文件
vim窗口分割命令:
:split 水平分割窗口
:vsplit 垂直分割窗口
vim在窗口間游走:
在gvim或vim中,在窗口中移動其實非常簡單,因為gvim已默認(rèn)支持鼠標(biāo)點擊來換編輯窗口,而vim中,則可以打開mouse選項,:set mouse=a 為命令、輸入、導(dǎo)航都激活鼠標(biāo)的使用
我們知道vim的特色就是可以脫離鼠標(biāo)而工作,所以可以使用vim提供的全套導(dǎo)航命令,在會話中快速而準(zhǔn)確的移動編輯窗口。
? ?按住Ctrl + W,然后再加上h, j, k, l,分別表示向左、下、上、右移動窗口
Ctrl + w + h:向左移動窗口
Ctrl + w + j: 向下移動窗口
Ctrl + w?+ k: 向上移動窗口
Ctrl + w + l: 向右移動窗口
?
Ctrl + w + w:這個命令會在所有窗口中循環(huán)移動
Ctrl + w + t:移動到最左上角的窗口
Ctrl + w + b:移動到最右下角的窗口
Ctrl + w + p:移動到前一個訪問的窗口
vim移動窗口:
? ? vim中有兩種移動窗口方式,一種只是簡單地在屏幕上切換窗口,尺寸維持不變;另一種則是改變窗口的實際布局,還會調(diào)整尺寸,以填充它移動的位置。
? ?移動窗口本身(輪換或交換):
? ?Ctrl + w + r:向右或向下方交換窗口,而Ctrl + w + R則和它方向相反。光標(biāo)會隨著窗口而移動。
? ?Ctrl + w + x:交換同列或同行的窗口的位置。vim默認(rèn)交換當(dāng)前窗口的與它下一個窗口的位置,如果下方?jīng)]有窗口,則試著與上一個窗口交換位置。亦可在此命令前加上數(shù)量,與制定的窗口交換位置。
移動窗口并改變其布局:
? ?注:下面的第三個字母都是大寫,按玩Ctrl + w之后,按shif + 相應(yīng)的字母。后面用^代替Ctrl
Ctrl + w + K :移動當(dāng)前窗口至屏幕頂端,并占用全部寬度
?^WJ: 移動窗口至屏幕底端,并占用全部寬度
?^WH:移動窗口至屏幕左端,并占用全部高度
?^WL:移動窗口至屏幕右端,并占用全部高度
? ^WT :移動窗口至屏新的現(xiàn)有分頁
調(diào)整窗口尺寸:
? ?改變當(dāng)前窗口的尺寸,同時當(dāng)然也會影響到其他窗口。在gvim和vim中,可以用鼠標(biāo)點擊窗口的頂部白色條并窗口直接調(diào)整尺寸。也可以直接用命令,調(diào)整尺寸命令也是以Ctrl + W開頭:
?Ctrl + W + = ?:讓所有窗口調(diào)整至相同尺寸(平均劃分)
?Ctrl + W + -:將當(dāng)前窗口的高度減少一行,也可在ex命令中,:resize -4明確指定減少的尺寸
?Ctrl + W + +:將當(dāng)前窗口的高度增加一行。同樣在ex命令中,:resize +n 明確指定增加尺寸
?Ctrl + W + < :將當(dāng)前窗口的寬度減少
?Ctrl + W + > :將當(dāng)前窗口的寬度增加
?Ctrl + W + |:將當(dāng)前窗口的寬度調(diào)到最大,也可他哦你通過ex命令:vertical resize n明確指定改變寬度
更多vim命令:
:qall?意思很明顯"quit all"3. 如果這些窗口中有被修改又沒保存的,Vim 就不會退出. 光標(biāo)也會自動被定位到該窗口中. 這樣你可以用":write"來保存修改, 或用":quit!"放棄這些改動.
:wall?來保存所有被修改的窗口. 命令意為"write all"1. 但實際上, 它只會存盤那些改動過的. Vim很清楚重寫一遍完全沒有改變的文件毫無意義.
:wqall?這個命令將保存所有被修改的文件然后退出Vim.
:qall!?慎用! 這一丟可就再也回不來了!為每一個文件打開一個窗口。
更加詳細(xì)的vim指令可以參見:
vim命令合集
Linux文件查看/編輯方法介紹
? 9)窗口控制命令
Ctrl+a c 先同時按住Ctrl+a,釋放后再按c,創(chuàng)建新窗口;
Ctrl+a n 循環(huán)向前切換窗口;
Ctrl+a p 循環(huán)向后切換窗口;
? Ctrl+a 1 切換到窗口1(輸入不同的數(shù)字可切換任意窗口)
Ctrl+a A(大寫) 重命名窗口
Ctrl+a K(大寫) 或者exit:關(guān)閉當(dāng)前窗口,并且切換到下一個窗口(當(dāng)退出最后一個窗口時,該終端自動終止,并且退回到原始shell狀態(tài))
Ctrl+a [ : 查看窗口歷史緩存信息
10)cat命令
cat file1.txt 顯示 file1.txt 文件的內(nèi)容;?
cat file1.txt file2.txt 顯示 file1.txt 和file2.txt 文件的內(nèi)容;?
cat -n file1.txt 顯示 file1.txt 文件的內(nèi)容同時顯示行號;
11)壓縮與解壓tar.gz
壓縮命令:
命令格式:tar? -zcvf?? 壓縮文件名.tar.gz?? 被壓縮文件名
????? 可先切換到當(dāng)前目錄下。壓縮文件名和被壓縮文件名都可加入路徑。
解壓縮命令:
命令格式:tar? -zxvf?? 壓縮文件名.tar.gz
解壓縮后的文件只能放在當(dāng)前的目錄。
12)Linux時間表示
由常規(guī)時間轉(zhuǎn)Linux字符串:
date -d "2015-07-01 00:01:00" +%s
輸出:1435680060
由Linux字符串解碼出常規(guī)時間:
date -d@1435680060
輸出:Wed Jul? 1 00:01:00 CST 2015
3.2?復(fù)制粘貼
?1)從windows中復(fù)制,往PuTTY中粘貼
Step1:?windows中復(fù)制:直接選中文本,按Ctrl+C;
Step2:?點鼠標(biāo)右鍵在PuTTY中完成粘貼。
2)從PuTTY中復(fù)制,往windows中粘貼
Step1: PuTTY用鼠標(biāo)左鍵選中即已經(jīng)放到剪貼板;
Step2:?在windows的其他編輯器或輸入欄按Ctrl+V 粘貼。
3)從PuTTY中復(fù)制,往PuTTY中粘貼
Step1: PuTTY用鼠標(biāo)左鍵選中即已經(jīng)放到剪貼板;
Step2:?直接點鼠標(biāo)右鍵,在PuTTY中粘貼。
? 注:putty選擇和復(fù)制小技巧
鼠標(biāo)左鍵按住拖拉選擇,即已經(jīng)復(fù)制。雙擊鼠標(biāo)左鍵,選擇復(fù)制一個單詞,支持中文。雙擊并在第二次按下時不放,拖動鼠標(biāo)左鍵,會按單詞選擇。鼠標(biāo)三擊,會選擇并復(fù)制一行。鼠標(biāo)三擊并在最后一擊時拖動,會按行選擇。按住左Alt,拖動鼠標(biāo)左鍵,會選擇方塊。但putty菜單的windows(窗口)->move hotkey(移動熱鍵)的左Alt+左鍵拖動應(yīng)取消。選擇完了要補(bǔ)選復(fù)制,可以按下中鍵并拖動。補(bǔ)選方式和此前的選擇方式一樣,單擊的補(bǔ)選是按字母,雙擊的補(bǔ)選是按單詞。三擊的補(bǔ)選是按行。窗口選擇的補(bǔ)選是窗口選擇。
3.3?wget下載工具
wget命令用來從指定的URL下載文件。wget非常穩(wěn)定,它在帶寬很窄的情況下和不穩(wěn)定網(wǎng)絡(luò)中有很強(qiáng)的適應(yīng)性,如果是由于網(wǎng)絡(luò)的原因下載失敗,wget會不斷的嘗試,直到整個文件下載完畢。如果是服務(wù)器打斷下載過程,它會再次聯(lián)到服務(wù)器上從停止的地方繼續(xù)下載。這對從那些限定了鏈接時間的服務(wù)器上下載大文件非常有用。
語法:
wget(選項)(參數(shù))
選項:
-a<日志文件>:在指定的日志文件中記錄資料的執(zhí)行過程;
-A<后綴名>:指定要下載文件的后綴名,多個后綴名之間使用逗號進(jìn)行分隔;
-b:進(jìn)行后臺的方式運行wget;
-B<連接地址>:設(shè)置參考的連接地址的基地地址;
-c:繼續(xù)執(zhí)行上次終端的任務(wù);
-C<標(biāo)志>:設(shè)置服務(wù)器數(shù)據(jù)塊功能標(biāo)志on為激活,off為關(guān)閉,默認(rèn)值為on;
-d:調(diào)試模式運行指令;
-D<域名列表>:設(shè)置順著的域名列表,域名之間用“,”分隔;
-e<指令>:作為文件“.wgetrc”中的一部分執(zhí)行指定的指令;
-h:顯示指令幫助信息;
-i<文件>:從指定文件獲取要下載的URL地址;
-l<目錄列表>:設(shè)置順著的目錄列表,多個目錄用“,”分隔;
-L:僅順著關(guān)聯(lián)的連接;
-r:遞歸下載方式;
-nc:文件存在時,下載文件不覆蓋原有文件;
-nv:下載時只顯示更新和出錯信息,不顯示指令的詳細(xì)執(zhí)行過程;
-q:不顯示指令執(zhí)行過程;
-nh:不查詢主機(jī)名稱;
-v:顯示詳細(xì)執(zhí)行過程;
-V:顯示版本信息;
--passive-ftp:使用被動模式PASV連接FTP服務(wù)器;
--follow-ftp:從HTML文件中下載FTP連接文件。
參數(shù):
URL:下載指定的URL地址。
示例:
1)使用wget下載單個文件:
wget http://www.linuxde.net/testfile.zip
該例子是從網(wǎng)絡(luò)下載一個文件并保存在當(dāng)前目錄,在下載的過程中會顯示進(jìn)度條,包含(下載完成百分比,已經(jīng)下載的字節(jié),當(dāng)前下載速度,剩余下載時間)。
2)下載并以不同的文件名保存:
wget -O wordpress.zip http://www.linuxde.net/download.aspx?id=1080
wget默認(rèn)會以最后一個符合/的后面的字符來命令,對于動態(tài)鏈接的下載通常文件名會不正確。
錯誤:下面的例子會下載一個文件并以名稱download.aspx?id=1080保存:
wget http://www.linuxde.net/download?id=1
即使下載的文件是zip格式,它仍然以download.php?id=1080命令。
正確:為了解決這個問題,我們可以使用參數(shù)-O來指定一個文件名:
wget -O wordpress.zip http://www.linuxde.net/download.aspx?id=1080
3)wget限速下載:
wget --limit-rate=300k http://www.linuxde.net/testfile.zip
當(dāng)你執(zhí)行wget的時候,它默認(rèn)會占用全部可能的寬帶下載。但是當(dāng)你準(zhǔn)備下載一個大文件,而你還需要下載其它文件時就有必要限速了。
4)使用wget斷點續(xù)傳:
wget -c http://www.linuxde.net/testfile.zip
使用wget?-c重新啟動下載中斷的文件,對于我們下載大文件時突然由于網(wǎng)絡(luò)等原因中斷非常有幫助,我們可以繼續(xù)接著下載而不是重新下載一個文件。需要繼續(xù)中斷的下載時可以使用-c參數(shù)。
5)使用wget后臺下載:
wget -b http://www.linuxde.net/testfile.zip
Continuing in background, pid 1840.
Output will be written to `wget-log'.
對于下載非常大的文件的時候,我們可以使用參數(shù)-b進(jìn)行后臺下載,你可以使用以下命令來察看下載進(jìn)度: tail -f wget-log
6)偽裝代理名稱下載:
wget --user-agent="Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.204 Safari/534.16" http://www.linuxde.net/testfile.zip
有些網(wǎng)站能通過根據(jù)判斷代理名稱不是瀏覽器而拒絕你的下載請求。不過你可以通過--user-agent參數(shù)偽裝。
7)測試下載鏈接:
當(dāng)你打算進(jìn)行定時下載,你應(yīng)該在預(yù)定時間測試下載鏈接是否有效。我們可以增加--spider參數(shù)進(jìn)行檢查。
wget --spider URL
如果下載鏈接正確,將會顯示:
Spider mode enabled.
Check if remote file exists.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Remote file exists and could contain further links, but recursion is disabled -- not retrieving.
這保證了下載能在預(yù)定的時間進(jìn)行,但當(dāng)你給錯了一個鏈接,將會顯示如下錯誤:
wget --spider url Spider mode enabled.
Check if remote file exists.
HTTP request sent, awaiting response...
404 Not Found Remote file does not exist -- broken link!!!
你可以在以下幾種情況下使用--spider參數(shù):
- 定時下載之前進(jìn)行檢查 間隔檢測網(wǎng)站是否可用
- 檢查網(wǎng)站頁面的死鏈接
- 增加重試次數(shù):
wget --tries=40 URL
如果網(wǎng)絡(luò)有問題或下載一個大文件也有可能失敗。wget默認(rèn)重試20次連接下載文件。如果需要,你可以使用--tries增加重試次數(shù)。
8)下載多個文件:
wget -i filelist.txt
首先,保存一份下載鏈接文件:
cat > filelist.txt url1 url2 url3 url4
接著使用這個文件和參數(shù)-i下載。
9)下載鏡像網(wǎng)站:
wget --mirror -p --convert-links -P ./LOCAL URL
下載整個網(wǎng)站到本地。
--miror開戶鏡像下載。
-p下載所有為了html頁面顯示正常的文件。
--convert-links下載后,轉(zhuǎn)換成本地的鏈接。
-P?./LOCAL保存所有文件和目錄到本地指定目錄。
10)過濾指定格式下載:
wget --reject=gif ur
下載一個網(wǎng)站,但你不希望下載圖片,可以使用這條命令。
11)把下載信息存入日志文件:
wget -o download.log URL
不希望下載信息直接顯示在終端而是在一個日志文件,可以使用。
12)限制總下載文件大小:
wget -Q5m -i filelist.txt
當(dāng)你想要下載的文件超過5M而退出下載,你可以使用。注意:這個參數(shù)對單個文件下載不起作用,只能遞歸下載時才有效。
下載指定格式文件:
wget -r -A.pdf url
13)可以在以下情況使用該功能:
下載一個網(wǎng)站的所有圖片。
下載一個網(wǎng)站的所有視頻。
下載一個網(wǎng)站的所有PDF文件。
14)FTP下載:
wget ftp-url
wget --ftp-user=USERNAME --ftp-password=PASSWORD url
可以使用wget來完成ftp鏈接的下載。 使用wget匿名ftp下載:
wget ftp-url
使用wget用戶名和密碼認(rèn)證的ftp下載:
wget --ftp-user=USERNAME --ftp-password=PASSWORD url
以上內(nèi)容整理自:?http://man.linuxde.net/wget
3.4 screen命令
3.4.1. 背景
系統(tǒng)管理員經(jīng)常需要SSH 或者telent 遠(yuǎn)程登錄到Linux 服務(wù)器,經(jīng)常運行一些需要很長時間才能完成的任務(wù),比如系統(tǒng)備份、ftp傳輸?shù)鹊取MǔG闆r下我們都是為每一個這樣的任務(wù)開一個遠(yuǎn)程終端窗口,因為它們執(zhí)行的時間太長了。必須等待它們執(zhí)行完畢,在此期間不能關(guān)掉窗口或者斷開連接,否則這個任務(wù)就會被殺掉,一切半途而廢了。
3.4.2 簡介
GNU Screen是一款由GNU計劃開發(fā)的用于命令行終端切換的自由軟件。用戶可以通過該軟件同時連接多個本地或遠(yuǎn)程的命令行會話,并在其間自由切換。
GNU Screen可以看作是窗口管理器的命令行界面版本。它提供了統(tǒng)一的管理多個會話的界面和相應(yīng)的功能。
- 會話恢復(fù)
- 多窗口
- 會話共享
GNU's Screen 官方站點:http://www.gnu.org/software/screen/
3.4.3 語法
# screen [-AmRvx -ls -wipe][-d <作業(yè)名稱>][-h <行數(shù)>][-r <作業(yè)名稱>][-s ][-S <作業(yè)名稱>]
參數(shù)說明
-A 將所有的視窗都調(diào)整為目前終端機(jī)的大小。
-d <作業(yè)名稱> 將指定的screen作業(yè)離線。
-h <行數(shù)> 指定視窗的緩沖區(qū)行數(shù)。
-m 即使目前已在作業(yè)中的screen作業(yè),仍強(qiáng)制建立新的screen作業(yè)。
-r <作業(yè)名稱> 恢復(fù)離線的screen作業(yè)。
-R 先試圖恢復(fù)離線的作業(yè)。若找不到離線的作業(yè),即建立新的screen作業(yè)。
-s 指定建立新視窗時,所要執(zhí)行的shell。
-S <作業(yè)名稱> 指定screen作業(yè)的名稱。
-v 顯示版本信息。
-x 恢復(fù)之前離線的screen作業(yè)。
-ls或--list 顯示目前所有的screen作業(yè)。
-wipe 檢查目前所有的screen作業(yè),并刪除已經(jīng)無法使用的screen作業(yè)。
3.4.4 常用screen參數(shù)
screen -S yourname -> 新建一個叫yourname的session
screen -ls -> 列出當(dāng)前所有的session
screen -r yourname -> 回到y(tǒng)ourname這個session
screen -d yourname -> 遠(yuǎn)程detach某個session
screen -d -r yourname -> 結(jié)束當(dāng)前session并回到y(tǒng)ourname這個session
在每個screen session 下,所有命令都以 ctrl+a(C-a) 開始。
C-a ? ->?顯示所有鍵綁定信息
C-a c ->?創(chuàng)建一個新的運行shell的窗口并切換到該窗口
C-a n -> Next,切換到下一個 window?
C-a p -> Previous,切換到前一個 window?
C-a 0..9 -> 切換到第 0..9 個 window
Ctrl+a [Space] -> 由視窗0循序切換到視窗9
C-a C-a -> 在兩個最近使用的 window 間切換?
C-a x -> 鎖住當(dāng)前的 window,需用用戶密碼解鎖
C-a d -> detach,暫時離開當(dāng)前session,將目前的 screen session (可能含有多個 windows) 丟到后臺執(zhí)行,并會回到還沒進(jìn) screen 時的狀態(tài),此時在 screen session 里,每個 window 內(nèi)運行的 process (無論是前臺/后臺)都在繼續(xù)執(zhí)行,即使 logout 也不影響。?
C-a z -> 把當(dāng)前session放到后臺執(zhí)行,用 shell 的 fg 命令則可回去。
C-a w ->?顯示所有窗口列表
C-a t -> Time,顯示當(dāng)前時間,和系統(tǒng)的 load?
C-a k -> kill window,強(qiáng)行關(guān)閉當(dāng)前的 window
C-a [ -> 進(jìn)入 copy mode,在 copy mode 下可以回滾、搜索、復(fù)制就像用使用 vi 一樣
C-b Backward,PageUp?
C-f Forward,PageDown?
H(大寫) High,將光標(biāo)移至左上角?
L Low,將光標(biāo)移至左下角?
0 移到行首?
$ 行末?
w forward one word,以字為單位往前移?
b backward one word,以字為單位往后移?
Space 第一次按為標(biāo)記區(qū)起點,第二次按為終點?
Esc 結(jié)束 copy mode?
C-a ] -> Paste,把剛剛在 copy mode 選定的內(nèi)容貼上
3.4.5 使用 screen
安裝screen
流行的Linux發(fā)行版(例如Red Hat Enterprise Linux)通常會自帶screen實用程序,如果沒有的話,可以從GNU screen的官方網(wǎng)站下載。
[root@TS-DEV ~]# yum install screen [root@TS-DEV ~]# rpm -qa|grep screen screen-4.0.3-4.el5 [root@TS-DEV ~]#創(chuàng)建一個新的窗口
安裝完成后,直接敲命令screen就可以啟動它。但是這樣啟動的screen會話沒有名字,實踐上推薦為每個screen會話取一個名字,方便分辨:
[root@TS-DEV ~]# screen?-S davidscreen啟動后,會創(chuàng)建第一個窗口,也就是窗口No. 0,并在其中打開一個系統(tǒng)默認(rèn)的shell,一般都會是bash。所以你敲入命令screen之后,會立刻又返回到命令提示符,仿佛什么也沒有發(fā)生似的,其實你已經(jīng)進(jìn)入Screen的世界了。當(dāng)然,也可以在screen命令之后加入你喜歡的參數(shù),使之直接打開你指定的程序,例如:
[root@TS-DEV ~]# screen vi david.txtscreen創(chuàng)建一個執(zhí)行vi david.txt的單窗口會話,退出vi 將退出該窗口/會話。
查看窗口和窗口名稱
打開多個窗口后,可以使用快捷鍵C-a w列出當(dāng)前所有窗口。如果使用文本終端,這個列表會列在屏幕左下角,如果使用X環(huán)境下的終端模擬器,這個列表會列在標(biāo)題欄里。窗口列表的樣子一般是這樣:
0$ bash 1-$ bash 2*$ bash這個例子中我開啟了三個窗口,其中*號表示當(dāng)前位于窗口2,-號表示上一次切換窗口時位于窗口1。
Screen默認(rèn)會為窗口命名為編號和窗口中運行程序名的組合,上面的例子中窗口都是默認(rèn)名字。練習(xí)了上面查看窗口的方法,你可能就希望各個窗口可以有不同的名字以方便區(qū)分了。可以使用快捷鍵C-a A來為當(dāng)前窗口重命名,按下快捷鍵后,Screen會允許你為當(dāng)前窗口輸入新的名字,回車確認(rèn)。
會話分離與恢復(fù)
你可以不中斷screen窗口中程序的運行而暫時斷開(detach)screen會話,并在隨后時間重新連接(attach)該會話,重新控制各窗口中運行的程序。例如,我們打開一個screen窗口編輯/tmp/david.txt文件:
[root@TS-DEV ~]# screen vi /tmp/david.txt之后我們想暫時退出做點別的事情,比如出去散散步,那么在screen窗口鍵入C-a d,Screen會給出detached提示:
暫時中斷會話
半個小時之后回來了,找到該screen會話:
[root@TS-DEV ~]# screen -ls
重新連接會話:
[root@TS-DEV ~]# screen -r 12865一切都在。
當(dāng)然,如果你在另一臺機(jī)器上沒有分離一個Screen會話,就無從恢復(fù)會話了。
這時可以使用下面命令強(qiáng)制將這個會話從它所在的終端分離,轉(zhuǎn)移到新的終端上來:
?
清除dead 會話
如果由于某種原因其中一個會話死掉了(例如人為殺掉該會話),這時screen -list會顯示該會話為dead狀態(tài)。使用screen -wipe命令清除該會話:
關(guān)閉或殺死窗口
正常情況下,當(dāng)你退出一個窗口中最后一個程序(通常是bash)后,這個窗口就關(guān)閉了。另一個關(guān)閉窗口的方法是使用C-a k,這個快捷鍵殺死當(dāng)前的窗口,同時也將殺死這個窗口中正在運行的進(jìn)程。
如果一個Screen會話中最后一個窗口被關(guān)閉了,那么整個Screen會話也就退出了,screen進(jìn)程會被終止。
除了依次退出/殺死當(dāng)前Screen會話中所有窗口這種方法之外,還可以使用快捷鍵C-a :,然后輸入quit命令退出Screen會話。需要注意的是,這樣退出會殺死所有窗口并退出其中運行的所有程序。其實C-a :這個快捷鍵允許用戶直接輸入的命令有很多,包括分屏可以輸入split等,這也是實現(xiàn)Screen功能的一個途徑,不過個人認(rèn)為還是快捷鍵比較方便些。
screen 高級應(yīng)用?
會話共享
還有一種比較好玩的會話恢復(fù),可以實現(xiàn)會話共享。假設(shè)你在和朋友在不同地點以相同用戶登錄一臺機(jī)器,然后你創(chuàng)建一個screen會話,你朋友可以在他的終端上命令:
[root@TS-DEV ~]# screen -x這個命令會將你朋友的終端Attach到你的Screen會話上,并且你的終端不會被Detach。這樣你就可以和朋友共享同一個會話了,如果你們當(dāng)前又處于同一個窗口,那就相當(dāng)于坐在同一個顯示器前面,你的操作會同步演示給你朋友,你朋友的操作也會同步演示給你。當(dāng)然,如果你們切換到這個會話的不同窗口中去,那還是可以分別進(jìn)行不同的操作的。
會話鎖定與解鎖
Screen允許使用快捷鍵C-a s鎖定會話。鎖定以后,再進(jìn)行任何輸入屏幕都不會再有反應(yīng)了。但是要注意雖然屏幕上看不到反應(yīng),但你的輸入都會被Screen中的進(jìn)程接收到。快捷鍵C-a q可以解鎖一個會話。
也可以使用C-a x鎖定會話,不同的是這樣鎖定之后,會話會被Screen所屬用戶的密碼保護(hù),需要輸入密碼才能繼續(xù)訪問這個會話。
發(fā)送命令到screen會話
在Screen會話之外,可以通過screen命令操作一個Screen會話,這也為使用Screen作為腳本程序增加了便利。關(guān)于Screen在腳本中的應(yīng)用超出了入門的范圍,這里只看一個例子,體會一下在會話之外對Screen的操作:
[root@TS-DEV ~]# screen -S sandy -X screen ping www.baidu.com這個命令在一個叫做sandy的screen會話中創(chuàng)建一個新窗口,并在其中運行ping命令。
屏幕分割
現(xiàn)在顯示器那么大,將一個屏幕分割成不同區(qū)域顯示不同的Screen窗口顯然是個很酷的事情。可以使用快捷鍵C-a S將顯示器水平分割,Screen 4.00.03版本以后,也支持垂直分屏,快捷鍵是C-a |。分屏以后,可以使用C-a <tab>在各個區(qū)塊間切換,每一區(qū)塊上都可以創(chuàng)建窗口并在其中運行進(jìn)程。
可以用C-a X快捷鍵關(guān)閉當(dāng)前焦點所在的屏幕區(qū)塊,也可以用C-a Q關(guān)閉除當(dāng)前區(qū)塊之外其他的所有區(qū)塊。關(guān)閉的區(qū)塊中的窗口并不會關(guān)閉,還可以通過窗口切換找到它。
C/P模式和操作
screen的另一個很強(qiáng)大的功能就是可以在不同窗口之間進(jìn)行復(fù)制粘貼了。使用快捷鍵C-a <Esc>或者C-a [可以進(jìn)入copy/paste模式,這個模式下可以像在vi中一樣移動光標(biāo),并可以使用空格鍵設(shè)置標(biāo)記。其實在這個模式下有很多類似vi的操作,譬如使用/進(jìn)行搜索,使用y快速標(biāo)記一行,使用w快速標(biāo)記一個單詞等。關(guān)于C/P模式下的高級操作,其文檔的這一部分有比較詳細(xì)的說明。
一般情況下,可以移動光標(biāo)到指定位置,按下空格設(shè)置一個開頭標(biāo)記,然后移動光標(biāo)到結(jié)尾位置,按下空格設(shè)置第二個標(biāo)記,同時會將兩個標(biāo)記之間的部分儲存在copy/paste buffer中,并退出copy/paste模式。在正常模式下,可以使用快捷鍵C-a ]將儲存在buffer中的內(nèi)容粘貼到當(dāng)前窗口。
更多screen功能
同大多數(shù)UNIX程序一樣,GNU?Screen提供了豐富強(qiáng)大的定制功能。你可以在Screen的默認(rèn)兩級配置文件/etc/screenrc和$HOME/.screenrc中指定更多,例如設(shè)定screen選項,定制綁定鍵,設(shè)定screen會話自啟動窗口,啟用多用戶模式,定制用戶訪問權(quán)限控制等等。如果你愿意的話,也可以自己指定screen配置文件。
以多用戶功能為例,screen默認(rèn)是以單用戶模式運行的,你需要在配置文件中指定multiuser on 來打開多用戶模式,通過acl*(acladd,acldel,aclchg...)命令,你可以靈活配置其他用戶訪問你的screen會話。更多配置文件內(nèi)容請參考screen的man頁。
3.5 定時啟動腳本crontab
1.作用
使用crontab命令可以修改crontab配置文件,然后該配置由cron公用程序在適當(dāng)?shù)臅r間執(zhí)行,該命令使用權(quán)限是所有用戶。
2.格式
crontab [-u user] {-l | -r | -e}
3.主要參數(shù)
-e:執(zhí)行文字編輯器來設(shè)定時程表,內(nèi)空的文字編輯器是vi
-r:刪除目前的時程表
-l列出目前的時程表。
Crontab文件的格式為”M H D m d cmd”。其中,M代表分鐘(0~59),H代表小時(0~23),D代表天(1~31),m代表月(1~12),d代表一星期內(nèi)的天(0~6,0為星期天)。Cmd表示要運行的程序,它被送入sh執(zhí)行,這個shell只有USER、HOME、SHELL三個環(huán)境變量。
使用cron服務(wù),用server crond status查看cron服務(wù)狀態(tài),如果沒有啟動則service crond start啟動它,cron服務(wù)是一個定時執(zhí)行的服務(wù),可以通過crontab命令添加或編輯需要定時執(zhí)行的任務(wù):
crontab –u //設(shè)定某個用戶的cron服務(wù),一般root用戶在執(zhí)行這個命令的時候需要此參數(shù)
crontab –l //列出某個用戶cron服務(wù)的詳細(xì)內(nèi)容
crontab –r //刪除某個用戶的cron服務(wù)
crontab –e //編輯某個用戶的cron服務(wù)
crontab filename //以filename作為crontab的任務(wù)列表文件并載入
比如說root查看自己的cron設(shè)置:crontab –u root –l
再例如,root想刪除fred的cron設(shè)置:crontab –u fred –r
在編輯cron服務(wù)時,編輯的內(nèi)容有一些格式和約定,輸入:crontab –u root –e
進(jìn)入vi編輯模式,編輯的內(nèi)容一定要符合下面的格式:
*/1?? *???? *???? *???? *???? ls >>/tmp/ls.txt
編輯/etc/crontab文件,在末尾加上一行:30 5 * * * root init 6這樣就將系統(tǒng)配置為每天早上5點30分自動重新啟動。
crontab 文件中的行由6個字段組成,不同字段間用空格或tab鍵分隔。前5個字段指定命令要運行的時間
分鐘(0-59)
小時(0-23)
日期(1-31)
月份(1-12)
星期幾(0-6,其中0代表星期日,好像7也代表星期日)
第6個字段是一個要在適當(dāng)時間執(zhí)行的字符串。
例子:
#MIN????? HOUR???? DAY?????? MONTH? DAYOFWEEK?????? COMMAND
#每天早上6點10分
10??? 6???? *???? *???? *???? date
#每兩個小時
0???? */2?? *???? *???? *???? date
#晚上11點到早上8點之間每兩個小時,早上8點
0???? 23-7/2,8????? *???? *???? *???? date
#每個月的4號和每個禮拜一到禮拜三的早上11點
0???? 11??? 4???? *???? 1-3? date
#1月1日早上4點
0???? 4???? 1???? 1?????? *? date
補(bǔ)充:在使用crontab的時候,要特別注意的是運行腳本中能夠訪問到的環(huán)境變量和當(dāng)前測試環(huán)境中環(huán)境變量未必一致,一個比較保險的做法是在運行的腳本程序中自行設(shè)置環(huán)境變量(export)
(1)先建一個文件crond.txt如下,每天早上5點36分重新啟動
36????? 5???? *???? *???? *???? reboot
(2)上傳到/opt目錄
(3)運行命令
crontab /opt/crond.txt
crontab –l
讓配置文件生效:如果讓配置文件生效,還得重新啟動cron,切記,既然每個用戶下的cron配置文件修改后,也要重新啟動cron服務(wù)器。
在Fedora和Redhat中,我們應(yīng)該用:
/etc/rc.d/crond restart
如果讓crond在開機(jī)時運行,應(yīng)該改變其運行級別:
chkconfig –level 35 crond on
service crond status查看cron服務(wù)狀態(tài),如果沒有啟動則service crond start啟動它,cron服務(wù)是一個定時執(zhí)行的服務(wù),可以通過crontab命令添加或者編輯需要定時執(zhí)行的任務(wù)
3.6?anacron命令
如果我們的Linux主機(jī)是24全天全年的處于開機(jī)狀態(tài),我們只需要atd與crond這兩個服務(wù)即可,如果我們的服務(wù)器并非24小時無間斷的啟動,那么我們就需要anacron的幫助了。
anacron并不能取代cron去運行某項任務(wù),而是以天為單位或者是在啟動后立刻進(jìn)行anacron的動作,它會去偵測停機(jī)期間應(yīng)該進(jìn)行但是并沒有進(jìn)行的crontab任務(wù),并將該任務(wù)運行一遍后,anacron就會自動停止了。
anacron會以一天、七天、一個月周期去偵測系統(tǒng)中未進(jìn)行的crontab任務(wù),因此對于某些特殊的使用環(huán)境非常有幫助。anacron會去會去分析現(xiàn)在的時間與時間記錄檔所記載的上次運行anacron的時間,兩者比較厚若發(fā)現(xiàn)有差異,也就是在某些時刻沒有進(jìn)行crontab,那么此時anacron就會開始執(zhí)行未運行的crontab了。所以anacron也是聽過crontab來運行的,因此anacron運行的時間通常由兩個,一個是系統(tǒng)啟動期間運行,一個是寫入crontab的排程中,這樣才能夠在特定時間分析系統(tǒng)未進(jìn)行的crontab工作。我們可以使用ll? /etc/cron*/*ana*的方式來查看anacron的偵測時間。但是我們仔細(xì)分析該文件的話,發(fā)現(xiàn)它主要是執(zhí)行anacron命令。
anacron命令的語法如下:
(1)-s開始連續(xù)的運行各項工作,會一句時間記錄當(dāng)?shù)臄?shù)據(jù)判斷是否進(jìn)行。
(2)-f強(qiáng)制進(jìn)行,而不去判斷時間登錄檔的時間戳。
(3)-n立即進(jìn)行未進(jìn)行的任務(wù),而不延遲等待時間。
(4)-u僅升級時間記錄當(dāng)?shù)臅r間戳,不進(jìn)行任何工作。
而anacron的配置文件是/etc/anacrontab,而它的很多內(nèi)容則是在/var/spool/anacron里面保存。
當(dāng)anacron下達(dá)anacron? -s? cron.daily時,它會有如下的步驟:
(1)由/etc/anacrontab分析到cron.daily這項工作名稱的天數(shù)為一天。
(2)由/var/spool/anacron/cron.daily取出最近一次運行anacron的時間戳。
(3)把取出的時間戳與當(dāng)前的時間戳相比較,如果差異超過了一天,那么就準(zhǔn)備進(jìn)行命令。
(4)若準(zhǔn)備進(jìn)行命令,根據(jù)/etc/anacrontab的配置,將延遲65分鐘。
(5)延遲時間后,開始運行后續(xù)命令,也就是run-parts? /etc/cron.daily這串命令。
(6)運行完畢后,anacron程序結(jié)束。
最近無意間發(fā)現(xiàn)了兩個很好的Linux命令查詢網(wǎng)站,很全面很細(xì)致,在這里分享給大家:
1.?Linux命令大全;
2. 菜鳥手冊:Linux命令大全。
總結(jié)
以上是生活随笔為你收集整理的[Linux] Linux指令汇总(持续更新中...)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 最大子段和 分治与动态规划
- 下一篇: Linux6.4的FTP参数