日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

[Linux] Linux指令汇总(持续更新中...)

發(fā)布時間:2024/1/17 linux 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [Linux] Linux指令汇总(持续更新中...) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

寫在前面:

  以前真心沒有玩過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ù)
只要Screen本身沒有終止,在其內(nèi)部運行的會話都可以恢復(fù)。這一點對于遠(yuǎn)程登錄的用戶特別有用——即使網(wǎng)絡(luò)連接中斷,用戶也不會失去對已經(jīng)打開的命令行會話的控制。只要再次登錄到主機(jī)上執(zhí)行screen -r就可以恢復(fù)會話的運行。同樣在暫時離開的時候,也可以執(zhí)行分離命令detach,在保證里面的程序正常運行的情況下讓Screen掛起(切換到后臺)。這一點和圖形界面下的VNC很相似。
  • 多窗口
在Screen環(huán)境下,所有的會話都獨立的運行,并擁有各自的編號、輸入、輸出和窗口緩存。用戶可以通過快捷鍵在不同的窗口下切換,并可以自由的重定向各個窗口的輸入和輸出。Screen實現(xiàn)了基本的文本操作,如復(fù)制粘貼等;還提供了類似滾動條的功能,可以查看窗口狀況的歷史記錄。窗口還可以被分區(qū)和命名,還可以監(jiān)視后臺窗口的活動。
  • 會話共享
screen可以讓一個或多個用戶從不同終端多次登錄一個會話,并共享會話的所有特性(比如可以看到完全相同的輸出)。它同時提供了窗口訪問權(quán)限的機(jī)制,可以對窗口進(jìn)行密碼保護(hù)。

  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 david

  screen啟動后,會創(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.txt

  screen創(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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。