Javaer換坑指南之Linux

Linux是一個基於POSIX和Unix的多用戶、多任務、支持多線程和多CPU的性能穩定的操做系統,可無償使用並自由傳播。 前端

Linux是衆多操做系統之一 , 目前流行的服務器和 PC 端操做系統有 Linux、Windows、UNIX 等 java

Linux的創始人 Linus Torvalds 林納斯 (同時也是git的開發者)node

linux-creater.png

Linux主要的發行版:mysql

Ubuntu(烏班圖)、RedHat(紅帽)、CentOS、Debain[蝶變]、Fedora、SuSE、OpenSUSElinux

unix是怎麼來的git

unix.png

理查德·斯托曼發起的GNU計劃sql

  • 在自由的時代用戶應該免費享有對軟件源代碼閱讀、修改的權利。
  • 軟件公司能夠靠提供服務和訓練得到盈利。

gnu.png

Linux和Unix的關係shell

linux-unix.png

(Redhat又衍生出兩個版本,redhat和centOS)數據庫

Refrences:apache

1.Linux的文件權限

在linux中的每一個用戶必須屬於一個組,不能獨立於組外。在linux中每一個文件有全部者、所在組、其它組的概念

ls -al(l):

ls -l(別名ll 就能夠查看)

linux-ls.png

從左到又每一列的信息依次爲 權限、 鏈接數、 全部者 、 用戶組 、 文件容量 、 修改日期 、 文件名

第一列的十位字母表明的是文件的類型和權限,第一個字符表明這個文件是「目錄、文件或連接文件等」含義:

  • d:表明是目錄
  • -:表明是文件
  • l:表明是鏈接文件
  • b:表明設備文件裏可供存儲的接口設備
  • c:表明設備文件裏面的串行端口設備。如鍵盤,鼠標等

後邊9個字符,每3個字符爲一組,「rwx」(可讀、可寫、可執行eXecute)這三個參數的組合,(rwx3者的順序不能改變,換句話說,第一個要麼是r,要麼啥都沒有,不能是w或者x),三個組合分別表明「文件全部者的權限」、「同用戶組的權限」、「其餘非本用戶組的權限」。

linux-permission.png

權限的重要性:

  • 系統保護的功能;
  • 團隊開發軟件或數據共享的功能;

改變文件屬性和權限:

  • chgrp: 改變文件所屬用戶組(change group)

    • chgrp [-R] users 目錄或文件 : 將這個路徑下的文件的用戶組改爲「users「
    • 這個新用戶組必定得是/etc/group下有的,不然會報錯。
    • 若最後一個參數是目錄,則表示只將這個目錄下的文件的用戶組改爲這個。
    • R表示若最後一個參數是目錄,則將當前目錄下的文件連同子目錄下的全部文件的用戶組都改爲這個。
  • chown: 改變文件全部者(change owner)

    • chown [-R] 用戶名 文件或目錄 : 將這個目錄下的全部文件的全部者都改爲這個用戶名。
    • 這個用戶名必須是/etc/passwd下有的才行。
    • 這個命令能夠既修改文件主又修改用戶組:
    • chown [-R] 用戶名:用戶組名 目錄/文件(:和 . 均可以)
    • chown [-R] 用戶名.用戶組名 目錄/文件
    • 因爲用戶名能夠存在小數點,當出現含有小數點的用戶名時,系統會發生誤判,因此咱們通常都使用:來鏈接用戶名和用戶組名。
    • 還能夠僅修改用戶組名:chown [-R] .用戶組名 目錄/文件
  • chmod: 改變文件的權限

    改變文件的權限有兩種方法:用數字或者符號進行權限的修改

    1. 用數字進行權限的修改

​ Linux文件的基本權限有9個,分別是owner、group、others三種身份各有本身的read、write、execute 權限。在這種方式中,r=四、w=二、x=1,將每一組的三個值加起來,組成一個三位數便可。例如:

​ 文件主:rwx = 4+2+1=7;

​ 同組用戶:rwx=4+2+1=7;

​ 其餘人:---=0+0+0=0;

​ 因此命令以下:

chmod [-R] 770  文件/目錄
  1. 用符號進行權限的修改

    用u、g、o 表明user、group、others三種身份的權限,a 表明 all,也就是所有的身份。 +(加入),-(除去),=(設置)。

chmod u/g/o/a +/-/= r/w/x 文件/目錄

​ 例子:文件主可以讀、寫、執行;同組用戶和其餘用戶可以讀、執行。

chmod u=rwx,go=rx 文件名

​ 假設原先不知道文件的屬性,如今只想讓全部的人可以執行這個文件,則:

chmod a+x 文件/目錄

​ 假設原先不知道文件的屬性,如今只想讓同組用戶和其餘用戶沒法寫,則:

chmod go-w 文件/目錄

目錄和文件的權限意義:

  • 權限對文件的意義.

    • r:表明可讀取此文件的實際內容
    • w:表明能夠編輯、新增或者修改文件的內容(可是不包含刪除文件)
    • x:表明該文件具備能夠被系統執行的權限。<與windows不一樣,在Linux中判斷一個文件是否能夠執行,不是根據後綴名(如.exe ,.bat,.com),而是和這個文件是否具備「x」權限決定的。>
  • 權限對目錄的意義

    • r:表明具備讀取目錄結構列表的權限(你可使用ls命令將目錄下的全部列表讀出來)
    • w:這個權限對目錄來講但是很強大的,表示你具備更改該目錄結構列表的權限

      主要有:

      • 新建新的文件與目錄
      • 刪除已經存在的文件或者目錄(不管文件的權限是怎樣的)
      • 將已經存在的文件或者目錄重命名
      • 轉移該目錄內的文件、目錄位置
    • x:目錄雖然不能夠被拿來執行,可是目錄的x表明的是用戶可否進入該目錄成爲工做目錄的用途。(所謂工做目錄就是你當下的目錄,也就是時候,若是目錄不具備x權限,那麼你就不能經過cd命令進入到該目錄下工做)。

能不能進入某一目錄,只與該目錄的x 權限有關

Linux的單一文件或者目錄的最大允許文件名爲255個字符,包含完整路徑名記(/)的完整文件名爲4096個字符。


2.Linux系統目錄結構

linux的文件系統是採用級層式的樹狀目錄結構,在此結構中的最上層是根目錄「/」,而後在此目錄下再建立其餘的目錄。在Linux世界裏,一切皆文件

Linux系統目錄結構

登陸系統後,在當前命令窗口下輸入 ls / 你會看到

linux-catalog.png

如下是對這些目錄的解釋:

/bin bin是Binary的縮寫。這個目錄存放着最常用的命令。

/boot 這裏存放的是啓動Linux時使用的一些核心文件,包括一些鏈接文件以及鏡像文件。

/dev dev是Device(設備)的縮寫。該目錄下存放的是Linux的外部設備,在Linux中訪問設備的方式和訪問文件的方式是相同的。

/etc 這個目錄用來存放全部的系統管理所須要的配置文件和子目錄。

/home 用戶的主目錄,在Linux中,每一個用戶都有一個本身的目錄,通常該目錄名是以用戶的帳號命名的。

/lib 這個目錄裏存放着系統最基本的動態鏈接共享庫,其做用相似於Windows裏的DLL文件。幾乎全部的應用程序都須要用到這些共享庫。

/lost+found 這個目錄通常狀況下是空的,當系統非法關機後,這裏就存放了一些文件。

/media linux 系統會自動識別一些設備,例如U盤、光驅等等,當識別後,linux會把識別的設備掛載到這個目錄下。

/mnt 系統提供該目錄是爲了讓用戶臨時掛載別的文件系統的,咱們能夠將光驅掛載在/mnt/上,而後進入該目錄就能夠查看光驅裏的內容了。

/opt 這是給主機額外安裝軟件所擺放的目錄。好比你安裝一個ORACLE數據庫則就能夠放到這個目錄下。默認是空的。

/proc 這個目錄是一個虛擬的目錄,它是系統內存的映射,咱們能夠經過直接訪問這個目錄來獲取系統信息。這個目錄的內容不在硬盤上而是在內存裏,咱們也能夠直接修改裏面的某些文件,好比能夠經過下面的命令來屏蔽主機的ping命令,使別人沒法ping你的機器: echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all。

/root 該目錄爲系統管理員,也稱做超級權限者的用戶主目錄。

/sbin s就是Super User的意思,這裏存放的是系統管理員使用的系統管理程序。

/selinux 這個目錄是Redhat/CentOS所特有的目錄,Selinux是一個安全機制,相似於windows的防火牆,可是這套機制比較複雜,這個目錄就是存放selinux相關的文件的。

/srv 該目錄存放一些服務啓動以後須要提取的數據。

/sys 這是linux2.6內核的一個很大的變化。該目錄下安裝了2.6內核中新出現的一個文件系統 sysfs ,sysfs文件系統集成了下面3種文件系統的信息:針對進程信息的proc文件系統、針對設備的devfs文件系統以及針對僞終端的devpts文件系統。該文件系統是內核設備樹的一個直觀反映。當一個內核對象被建立的時候,對應的文件和目錄也在內核對象子系統中被建立。

/tmp 這個目錄是用來存放一些臨時文件的。

/usr 這是一個很是重要的目錄,用戶的不少應用程序和文件都放在這個目錄下,相似與windows下的program files目錄。

/usr/bin:系統用戶使用的應用程序。

/usr/sbin:超級用戶使用的比較高級的管理程序和系統守護程序。

/usr/src:內核源代碼默認的放置目錄。

/var 這個目錄中存放着在不斷擴充着的東西,咱們習慣將那些常常被修改的目錄放在這個目錄下。包括各類日誌文件。

在linux系統中,有幾個目錄是比較重要的,平時須要注意不要誤刪除或者隨意更改內部文件。/etc: 上邊也提到了,這個是系統中的配置文件,若是你更改了該目錄下的某個文件可能會致使系統不能啓動。/bin, /sbin, /usr/bin, /usr/sbin: 這是系統預設的執行文件的放置目錄,好比 ls 就是在/bin/ls 目錄下的。值得提出的是,/bin, /usr/bin 是給系統用戶使用的指令(除root外的通用戶),而/sbin, /usr/sbin 則是給root使用的指令。 /var: 這是一個很是重要的目錄,系統上跑了不少程序,那麼每一個程序都會有相應的日誌產生,而這些日誌就被記錄到這個目錄下,具體在/var/log 目錄下,另外mail的預設放置也是在這裏。


3.Linux文件與目錄操做

絕對路徑:

路徑的寫法,由根目錄 / 寫起,例如: /usr/share/doc 這個目錄。

相對路徑:

路徑的寫法,不是由 / 寫起,例如由 /usr/share/doc 要到 /usr/share/man 底下時,能夠寫成: cd ../man 這就是相對路徑的寫法啦!

目錄的相關操做

ls(查看文件與目錄)

cd(切換目錄)

pwd(顯示當前所在目錄)

mkdir(建立新目錄)

mkdir 【-mp】目錄名稱

加了-p 參數,能夠自行建立多層目錄, 加了-m,能夠強制設置屬性。

mkdir test
mkdir -p test1/test2/test3/test4*
mkdir -m 711 test2(給予新目錄drwx--x--x的權限)

rmdir(刪除「空」目錄)

rmdir [-p] 目錄名稱(-p 能夠連同上層空目錄一塊兒刪除)

rmdir -p test1/test2/test3/test4

cp(複製文件或目錄)

cp [-adfilprsu] 源文件(source) 目標文件(destination
  • -a:至關於-pdr的意思;
  • -i:若目標文件已經存在且沒法開啓,則刪除後再嘗試一次;
  • -p:連同文件的屬性一塊兒複製過去,而非使用默認屬性(備份經常使用);
  • -r:遞歸持續複製,用於目錄的複製行爲
cp test testtest (將test文件重命名爲testtest)
cp /var/log/wtmp .(複製到當前目錄.)
cp -r /etc/ /tmp(複製etc目錄下的全部內容到/tmp下,權限可能被改變了)

rm(移除文件或目錄)

rm [-fir] 文件或目錄
  • -f:force的意思,忽略不存在的文件,不會出現警告信息;
  • -i:互動模式,在刪除前會詢問用戶是否操做;
  • -r:遞歸刪除,危險
#不能直接刪除目錄,刪除目錄的話須要加-r
rm -r /tmp/test (root用戶默認會加入-i參數,詢問,刪除的是test文件,沒有刪除tmp)
touch  /tmp/aaa (新建空文件aaa)
rm /tmp/aaa(直接刪除文件aaa)

mv(移動文件與目錄,或改名)

mv [-fiu] source destination
  • -f:force強制的意思,若是目標文件已經存在,不會詢問而直接覆蓋;
  • -i:若目標文件已經存在,就會詢問是否覆蓋;
  • -u:若目標文件已經存在,且source比較新,纔會更新;
mv aaa test(將文件aaa移動到目錄test中)
mv test mytest(將test重命名爲mytest)
mv aaa bbb ccc test(將aaa、bbb、ccc多個源文件或目錄所有移動到test目錄中)

文件內容查閱

cat:由第一行開始顯示文件內容;

tac:從最後一行開始顯示,能夠看出tac是cat的倒寫形式;

nl:顯示的時候,順便輸出行號;

more:一頁一頁的顯示文件內容;

less:與more相似,可是能夠往前翻頁;

head:只看開頭幾行;

tail:只看結尾幾行;

od:以二進制的方式讀取文件內容

直接查看文件內容 cat、tac、nl

cat(concatenate)

cat [-AbEnTv] 文件
  • -A:至關於-vET的整合參數,可列出一些特殊字符,而不是空白而已;
  • -b:列出行號,僅針對非空白行作行號顯示,空白行不標行號;
  • -E:將結尾用斷行字符 $ 顯示出來;
  • -n:打印出行號,連同空白行也會有行號,區別於-b;
  • -T:將Tab按鍵以^T顯示出來;
  • -v:列出一些看不出來的特殊字符

cat -n 文件路徑 | tail -n +5 | head -n 6 // 顯示 5 ~ 10 行的內容, 包括5 和10

cat 文件路徑 | head -n 10 | tail -n +5 //同上

tac(反向顯示)

nl(添加行號打印)

nl [-bnw] 文件

可翻頁查看文件內容 more和less

more(一頁一頁翻動)

linux-more.png

若是文件內容較多,more 命令以後,會繼續等到後續操做

  • 空格鍵(Space):向下翻頁;
  • Enter:向下滾動一行;
  • /字符串:在當前顯示內容中,向下查詢該字符串;
  • :f:顯示出文件名以及目前顯示的行數;
  • q:直接離開more,再也不顯示該文件內容;
  • b:往回翻頁,只對文件有用,對管道無用

less(一頁一頁翻動)

less能夠用向上、下按鍵的功能先後翻頁,也能夠向上查詢

  • 空格鍵(Space):向下翻頁;
  • [PageDown]:向下翻動一頁
  • [PageUp]:向上翻動一頁
  • Enter:向下滾動一行;
  • /字符串:向下查詢該字符串;
  • ?字符串:向上查詢該字符串;
  • n:重複前一個查詢(與/或?有關);
  • N:反向重複前一個查詢(與/或?有關);
  • q:直接離開less,再也不顯示該文件內容;

數據選取查看 head和tail

head(取出前面幾行)

head [-n number] 文件(默認顯示十行)
  • -n:後邊接數字,表明顯示幾行的意思;

tail(取出後邊幾行)

tail [-n number] 文件
tail [-f] 文件
  • -f:表示持續監測後邊所接的文件內容,通常用於查看日誌進程,按下[ctrl]+c纔會結束檢測;

touch(修改文件時間或者建立新文件)

touch [-acdmt] 文件
  • -a:僅修改訪問時間;
  • -c:僅修改訪問時間,若該文件不存在則不建立新文件;
  • -d:後面能夠接想要修改的日期而不用目前的日期;
  • -m:僅修改mtime;
  • -t:後面能夠接想要修改的時間而不用目前的時間;

4.vim程序編輯器

在Linux的系統中使用文本編輯器來編輯Linux參數配置文件是一件至關重要的事情,因此至少要熟悉一種文本編輯器。

那爲何必定要學會vim呢。由於:

  • 全部的UNIX Like系統都會內置vi文本編輯器,其它的文本編輯器則不必定存在;
  • 不少軟件的編輯接口都會主動調用vi;
  • vim具備程序編輯的能力,能夠主動以字體顏色辨別語法的正確性,方便程序設計;
  • 程序簡單,編輯速度至關快速。

vim 鍵盤圖:

linux-vim.png

vim其實能夠視爲vi的高級版本。

vi的使用

vi共分爲3種模式,分別是通常模式、編輯模式和命令行模式。

通常模式

以vi打開一個文件就直接進入通常模式(默認的模式)。在這個模式中, 你可使用『上下左右』按鍵來移動光標,你可使用『刪除字符』或『刪除整行』來處理檔案內容, 也可使用『複製、貼上』來處理你的文件數據。

編輯模式

在通常模式中能夠進行刪除、複製、粘貼等等的動做,可是卻沒法編輯文件內容的! 要等到你按下『i, I, o, O, a, A, r, R』等任何一個字母以後纔會進入編輯模式。注意了!一般在 Linux 中,按下這些按鍵時,在畫面的左下方會出現『 INSERT 或 REPLACE 』的字樣,此時才能夠進行編輯。而若是要回到通常模式時, 則必需要按下『Esc』這個按鍵便可退出編輯模式。

命令行模式

在通常模式當中,輸入『 : / ? 』三個中的任何一個按鈕,就能夠將光標移動到最底下那一行。在這個模式當中, 能夠提供你『搜尋資料』的動做,而讀取、存盤、大量取代字符、離開 vi 、顯示行號等等的動做則是在此模式中達成的!

通常模式與編輯模式及命令行模式能夠互相轉換,但編輯模式與命令行模式之間不能夠互相轉換

按鍵說明

  • 第一部份:通常模式可用的按鈕說明,光標移動、複製貼上、搜尋取代等
移動光標的方法
h 或 向左箭頭鍵(←) 光標向左移動一個字符
j 或 向下箭頭鍵(↓) 光標向下移動一個字符
k 或 向上箭頭鍵(↑) 光標向上移動一個字符
l 或 向右箭頭鍵(→) 光標向右移動一個字符
若是你將右手放在鍵盤上的話,你會發現 hjkl 是排列在一塊兒的,所以可使用這四個按鈕來移動光標。 若是想要進行屢次移動的話,例如向下移動 30 行,可使用 "30j" 或 "30↓" 的組合按鍵, 亦即加上想要進行的次數(數字)後,按下動做便可!
[Ctrl] + [f] 屏幕『向下』移動一頁,至關於 [Page Down]按鍵 (經常使用)
[Ctrl] + [b] 屏幕『向上』移動一頁,至關於 [Page Up] 按鍵 (經常使用)
[Ctrl] + [d] 屏幕『向下』移動半頁
[Ctrl] + [u] 屏幕『向上』移動半頁
+ 光標移動到非空格符的下一列
- 光標移動到非空格符的上一列
n<space> 那個 n 表示『數字』,例如 20 。按下數字後再按空格鍵,光標會向右移動這一行的 n 個字符。例如 20<space> 則光標會向後面移動 20 個字符距離。
0 或功能鍵[Home] 這是數字『 0 』:移動到這一行的最前面字符處 (經常使用)
$ 或功能鍵[End] 移動到這一行的最後面字符處(經常使用)
H 光標移動到這個屏幕的最上方那一行的第一個字符
M 光標移動到這個屏幕的中央那一行的第一個字符
L 光標移動到這個屏幕的最下方那一行的第一個字符
G 移動到這個檔案的最後一行(經常使用)
nG n 爲數字。移動到這個檔案的第 n 行。例如 20G 則會移動到這個檔案的第 20 行(可配合 :set nu)
gg 移動到這個檔案的第一行,至關於 1G 啊! (經常使用)
n<Enter> n 爲數字。光標向下移動 n 行(經常使用)
查找與替換
/word 向光標之下尋找一個名稱爲 word 的字符串。例如要在檔案內搜尋 vbird 這個字符串,就輸入 /vbird 便可! (經常使用)
?word 向光標之上尋找一個字符串名稱爲 word 的字符串。
n 這個 n 是英文按鍵。表明『重複前一個搜尋的動做』。舉例來講, 若是剛剛咱們執行 /vbird 去向下搜尋 vbird 這個字符串,則按下 n 後,會向下繼續搜尋下一個名稱爲 vbird 的字符串。若是是執行 ?vbird 的話,那麼按下 n 則會向上繼續搜尋名稱爲 vbird 的字符串!
N 這個 N 是英文按鍵。與 n 恰好相反,爲『反向』進行前一個搜尋動做。 例如 /vbird 後,按下 N 則表示『向上』搜尋 vbird 。
使用 /word 配合 n 及 N 是很是有幫助的!可讓你重複的找到一些你搜尋的關鍵詞!
:n1,n2s/word1/word2/g n1 與 n2 爲數字。在第 n1 與 n2 行之間尋找 word1 這個字符串,並將該字符串取代爲 word2 !舉例來講,在 100 到 200 行之間搜尋 vbird 並取代爲 VBIRD 則: 『:100,200s/vbird/VBIRD/g』。(經常使用)
:1,$s/word1/word2/g 從第一行到最後一行尋找 word1 字符串,並將該字符串取代爲 word2 !(經常使用)
:1,$s/word1/word2/gc 從第一行到最後一行尋找 word1 字符串,並將該字符串取代爲 word2 !且在取代前顯示提示字符給用戶確認 (confirm) 是否須要取代!(經常使用)
刪除、複製和粘貼
x, X 在一行字當中,x 爲向後刪除一個字符 (至關於 [del] 按鍵), X 爲向前刪除一個字符(至關於 [backspace] 亦便是退格鍵) (經常使用)
nx n 爲數字,連續向後刪除 n 個字符。舉例來講,我要連續刪除 10 個字符, 『10x』。
dd 剪切遊標所在的那一行(經常使用)
D 刪除從當前光標到光標所在行尾的所有字符
ndd n 爲數字。刪除光標所在的向下 n 列,例如 20dd 則是刪除 20 列 (經常使用)
d1G 刪除光標所在到第一行的全部數據
dG 刪除光標所在到最後一行的全部數據
d$ 刪除遊標所在處,到該行的最後一個字符
d0 那個是數字的 0 ,刪除遊標所在處,到該行的最前面一個字符
yy 複製遊標所在的那一行(經常使用)
nyy n 爲數字。複製光標所在的向下 n 列,例如 20yy 則是複製 20 列(經常使用)
y1G 複製遊標所在列到第一列的全部數據
yG 複製遊標所在列到最後一列的全部數據
y0 複製光標所在的那個字符到該行行首的全部數據
y$ 複製光標所在的那個字符到該行行尾的全部數據
p, P p 爲將已複製的數據在光標下一行貼上,P 則爲貼在遊標上一行! 舉例來講,我目前光標在第 20 行,且已經複製了 10 行數據。則按下 p 後, 那 10 行數據會貼在本來的 20 行以後,亦即由 21 行開始貼。但若是是按下 P 呢? 那麼本來的第 20 行會被推到變成 30 行。 (經常使用) 粘貼到光標上一行(p),下一行(P)
J 將光標所在列與下一列的數據結合成同一列
c 重複刪除多個數據,例如向下刪除 10 行,[ 10cj ]
u 復原前一個動做。撤銷(經常使用)
[Ctrl]+r 重作上一個動做。(經常使用)
這個 u 與 [Ctrl]+r 是很經常使用的指令!一個是復原,另外一個則是重作一次~ 利用這兩個功能按鍵,你的編輯,嘿嘿!很快樂的啦!
. 不要懷疑!這就是小數點!意思是重複前一個動做的意思。 若是你想要重複刪除、重複貼上等等動做,按下小數點『.』就行了! (經常使用)
  • 第二部份:通常模式切換到編輯模式的可用的按鈕說明
進入插入或替換的編輯模式
i, I 進入插入模式(Insert mode): i 爲『從目前光標所在處插入』, I 爲『在目前所在行的第一個非空格符處開始插入』。 (經常使用)
a, A 進入插入模式(Insert mode): a 爲『從目前光標所在的下一個字符處開始插入』, A 爲『從光標所在行的最後一個字符處開始插入』。(經常使用)
o, O 進入插入模式(Insert mode): 這是英文字母 o 的大小寫。o 爲『在目前光標所在的下一行處插入新的一行』; O 爲在目前光標所在處的上一行插入新的一行!(經常使用)
r, R 進入取代模式(Replace mode): r 只會取代光標所在的那一個字符一次;R會一直取代光標所在的文字,直到按下 ESC 爲止;(經常使用)
上面這些按鍵中,在 vi 畫面的左下角處會出現『--INSERT--』或『--REPLACE--』的字樣。 由名稱就知道該動做了吧!!特別注意的是,咱們上面也提過了,你想要在檔案裏面輸入字符時, 必定要在左下角處看到 INSERT 或 REPLACE 才能輸入喔!
[Esc] 退出編輯模式,回到通常模式中(經常使用)
  • 第三部份:通常模式切換到指令列模式的可用的按鈕說明
進命令行的保存、離開等命令
:w 將編輯的數據寫入硬盤檔案中(經常使用)
:w! 若文件屬性爲『只讀』時,強制寫入該檔案。不過,到底能不能寫入, 仍是跟你對該檔案的檔案權限有關啊!
:q 離開 vi (經常使用)
:q! 若曾修改過檔案,又不想儲存,使用 ! 爲強制離開不儲存檔案。
注意一下啊,那個驚歎號 (!) 在 vi 當中,經常具備『強制』的意思~
:wq 儲存後離開,若爲 :wq! 則爲強制儲存後離開 (經常使用)
ZZ 這是大寫的 Z 喔!若檔案沒有更動,則不儲存離開,若檔案已經被更動過,則儲存後離開!
:w [filename] 將編輯的數據儲存成另外一個檔案(相似另存新檔)
:r [filename] 在編輯的數據中,讀入另外一個檔案的數據。亦即將 『filename』 這個檔案內容加到遊標所在行後面
:n1,n2 w [filename] 將 n1 到 n2 的內容儲存成 filename 這個檔案。
:! command 暫時離開 vi 到指令列模式下執行 command 的顯示結果!例如 『:! ls /home』便可在 vi 當中察看 /home 底下以 ls 輸出的檔案信息!
:set nu 顯示行號,設定以後,會在每一行的前綴顯示該行的行號
:set nonu 與 set nu 相反,爲取消行號!

vim的功能

塊選擇

當咱們按下v或者V或者【Ctrl】+v的時候,光標移動過的地方會開始反白

塊選擇的按鍵意義
v 字符選擇,會將光標通過的地方反白選擇!
V 行選擇,會將光標通過的行反白選擇!
[Ctrl]+v 區塊選擇,能夠用長方形的方式選擇資料
y 將反白的地方複製起來
d 將反白的地方刪除掉

多文件編輯

咱們可使用vim後面同時接好幾個文件來同時打開

多文件編輯的按鍵
:n 編輯下一個檔案
:N 編輯上一個檔案
:files 列出目前這個 vim 的開啓的全部檔案

多窗口功能

多窗口編輯按鍵
:sp [filename] 開啓一個新窗口,若是有加 filename, 表示在新窗口開啓一個新檔案,不然表示兩個窗口爲同一個檔案內容(同步顯示)。
[ctrl]+w+ j[ctrl]+w+↓ 按鍵的按法是:先按下 [ctrl] 不放, 再按下 w 後放開全部的按鍵,而後再按下 j (或向下箭頭鍵),則光標可移動到下方的窗口。
[ctrl]+w+ k[ctrl]+w+↑ 同上,不過光標移動到上面的窗口。
[ctrl]+w+ q 其實就是 :q 結束離開啦! 舉例來講,若是我想要結束下方的窗口,那麼利用 [ctrl]+w+↓ 移動到下方窗口後,按下 :q 便可離開, 也能夠按下 [ctrl]+w+q 啊!

5.linux磁盤管理

Linux磁盤管理好壞管理直接關係到整個系統的性能問題。

Linux磁盤管理經常使用三個命令爲df、du和fdisk。

  • df:列出文件系統的總體磁盤使用量
  • du:檢查磁盤空間使用量
  • fdisk:用於磁盤分區

df

df命令參數功能: 顯示指定磁盤文件的可用空間。若是沒有文件名被指定,則全部當前被掛載的文件系統的可用空間將被顯示 。能夠利用該命令來獲取硬盤被佔用了多少空間,目前還剩下多少空間等信息。

語法:

df [-ahikHTm] [目錄或文件名]

選項與參數:

  • -a :列出全部的文件系統,包括系統特有的 /proc 等文件系統;
  • -k :以 KBytes 的容量顯示各文件系統;
  • -m :以 MBytes 的容量顯示各文件系統;
  • -h :以人們較易閱讀的 GBytes, MBytes, KBytes 等格式自行顯示;
  • -H :以 M=1000K 取代 M=1024K 的進位方式;
  • -T :顯示文件系統類型, 連同該 partition 的 filesystem 名稱 (例如 ext3) 也列出;
  • -i :不用硬盤容量,而以 inode 的數量來顯示

將容量結果以易讀的容量格式顯示出來

[root@www ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/hdc2             9.5G  3.7G  5.4G  41% /
/dev/hdc3             4.8G  139M  4.4G   4% /home
/dev/hdc1              99M   11M   83M  12% /boot
tmpfs                 363M     0  363M   0% /dev/shm

du

Linux du命令也是查看使用空間的,可是與df命令不一樣的是Linux du命令是對文件和目錄磁盤使用的空間的查看,仍是和df命令有一些區別的,這裏介紹Linux du命令。

語法:

du [-ahskm] 文件或目錄名稱

選項與參數:

  • -a :列出全部的文件與目錄容量,由於默認僅統計目錄底下的文件量而已。
  • -h :以人們較易讀的容量格式 (G/M) 顯示;
  • -s :列出總量而已,而不列出每一個各別的目錄佔用容量;
  • -S :不包括子目錄下的總計,與 -s 有點差異。
  • -k :以 KBytes 列出容量顯示;
  • -m :以 MBytes 列出容量顯示;

實例 1

列出目前目錄下的全部文件容量

[root@www ~]# du
8       ./test4     <==每一個目錄都會列出來
8       ./test2
....中間省略....
12      ./.gconfd   <==包括隱藏文件的目錄
220     .           <==這個目錄(.)所佔用的總量

直接輸入 du 沒有加任何選項時,則 du 會分析當前所在目錄的文件與目錄所佔用的硬盤空間。

實例 2

將文件的容量也列出來

[root@www ~]# du -a
12      ./install.log.syslog   <==有文件的列表了
8       ./.bash_logout
8       ./test4
8       ./test2
....中間省略....
12      ./.gconfd
220     .

實例 3

檢查根目錄底下每一個目錄所佔用的容量

[root@www ~]# du -sm /*
7       /bin
6       /boot
.....中間省略....
0       /proc
.....中間省略....
1       /tmp
3859    /usr     <==系統初期最大就是他了啦!
77      /var

通配符 * 來表明每一個目錄。

與 df 不同的是,du 這個命令其實會直接到文件系統內去搜尋全部的文件數據。

fdisk

fdisk 是 Linux 的磁盤分區表操做工具。

語法:

fdisk [-l] 裝置名稱

選項與參數:

  • -l :輸出後面接的裝置全部的分區內容。若僅有 fdisk -l 時, 則系統將會把整個系統內可以搜尋到的裝置的分區均列出來。

磁盤格式化

磁盤分割完畢後天然就是要進行文件系統的格式化,格式化的命令很是的簡單,使用 mkfs(make filesystem) 命令。

語法:

mkfs [-t 文件系統格式] 裝置文件名

選項與參數:

  • -t :能夠接文件系統格式,例如 ext3, ext2, vfat 等(系統有支持纔會生效)

磁盤檢驗

fsck(file system check)用來檢查和維護不一致的文件系統。

若系統掉電或磁盤發生問題,可利用fsck命令對文件系統進行檢查。

語法:

fsck [-t 文件系統] [-ACay] 裝置名稱

選項與參數:

  • -t : 給定檔案系統的型式,若在 /etc/fstab 中已有定義或 kernel 自己已支援的則不需加上此參數
  • -s : 依序一個一個地執行 fsck 的指令來檢查
  • -A : 對/etc/fstab 中全部列出來的 分區(partition)作檢查
  • -C : 顯示完整的檢查進度
  • -d : 打印出 e2fsck 的 debug 結果
  • -p : 同時有 -A 條件時,同時有多個 fsck 的檢查一塊兒執行
  • -R : 同時有 -A 條件時,省略 / 不檢查
  • -V : 詳細顯示模式
  • -a : 若是檢查有錯則自動修復
  • -r : 若是檢查有錯則由使用者回答是否修復
  • -y : 選項指定檢測每一個文件是自動輸入yes,在不肯定那些是不正常的時候,能夠執行 # fsck -y 所有檢查修復。

磁盤掛載與卸除

Linux 的磁盤掛載使用 mount 命令,卸載使用 umount 命令。

磁盤掛載語法:

mount [-t 文件系統] [-L Label名] [-o 額外選項] [-n] 裝置文件名 掛載點

umount [-fn] 裝置文件名或掛載點

選項與參數:

  • -f :強制卸除!可用在相似網絡文件系統 (NFS) 沒法讀取到的狀況下;
  • -n :不升級 /etc/mtab 狀況下卸除。

6.文件與文件系統的壓縮與打包

在linux環境中,壓縮文件的擴展名大可能是.tar, .tar.gz, .tgz, .gz, .Z, .bz2;

Linux支持的壓縮命令不少,且不一樣的命令所用的壓縮技術不一樣,彼此可能沒法相互壓縮/解壓文件。

*.Z         compress 程序壓縮的文件;
*.zip       zip 程序壓縮的文件;
*.gz        gzip 程序壓縮的文件;
*.bz2       bzip2 程序壓縮的文件;
*.xz        xz 程序壓縮的文件;
*.tar       tar 程序打包的數據,並無壓縮過;
*.tar.gz    tar 程序打包的文件,其中而且通過 gzip 的壓縮
*.tar.bz2   tar 程序打包的文件,其中而且通過 bzip2 的壓縮
*.tar.xz    tar 程序打包的文件,其中而且通過 xz 的壓縮

gzip, zcat/zmore/zless/zgrep

gzip [-cdtv#] 文件名 壓縮文件爲 *.gz 的文件,使用gzip壓縮後原始文件就再也不存在了

  • -c :將壓縮的數據輸出到屏幕上,可經過數據流重導向來處理;
  • -d :解壓縮的參數;
  • -t :能夠用來檢驗一個壓縮文件的一致性~看看文件有無錯誤;
  • -v :能夠顯示出原文件/壓縮文件的壓縮比等信息;
  • -# :# 爲數字的意思,表明壓縮等級,-1 最快,可是壓縮比最差、-9 最慢,可是壓縮比最好!默認是 -6

zcat/zmore/zless/zgrep和cat/more等指令相似,查看、查找壓縮文件

gzip test.txt   #壓縮test.txt文件
gcat test.gz   #查看test.gz文件內容
gzip -d test.gz  #解壓文件,和gunzip效果相同
zgrep -n 'http' services.gz  #http 這個關鍵字在哪幾行

gzip -c test > test.gz   #壓縮test,並保留原文件

bzip2, bzcat/bzmore/bzless/bzgrep

bzip2 [-cdkzv#] 文件名 bzip2 則是爲了取代 gzip 並提供更佳的壓縮比而來的,用法和gzip幾乎相同

  • -c :將壓縮的過程產生的數據輸出到屏幕上!
  • -d :解壓縮的參數
  • -k :保留原始文件,而不會刪除原始的文件喔!
  • -z :壓縮的參數 (默認值,能夠不加)
  • -v :能夠顯示出原文件/壓縮文件的壓縮比等信息;
  • -# :與 gzip 一樣的,都是在計算壓縮比的參數, -9 最佳, -1 最快!

tar

tar 打包指令 , 將多個文件或目錄包成一個大文件的指令

  • -c: 創建壓縮檔案
  • -x:解壓
  • -t:查看內容
  • -r:向壓縮歸檔文件末尾追加文件
  • -u:更新原壓縮包中的文件

這五個是獨立的命令,壓縮解壓都要用到其中一個,能夠和別的命令連用但只能用其中一個。下面的參數是根據須要在壓縮或解壓檔案時可選的。

  • -z:有gzip屬性的
  • -j:有bz2屬性的
  • -Z:有compress屬性的
  • -v:顯示全部過程
  • -O:將文件解開到標準輸出
  • -f: 使用檔案名字,切記,這個參數是最後一個參數,且是必須的,後面只能接檔案名。
tar -cf all.tar *.jpg #將全部.jpg的文件打成一個名爲all.tar的包,-c是表示產生新的包,-f指定包的文件名

tar -rf all.tar *.gif   #將全部.gif的文件增長到all.tar的包裏面去。-r是表示增長文件的意思

tar -uf all.tar logo.gif #更新原來tar包all.tar中logo.gif文件

tar -tf all.tar #列出all.tar包中全部文件

tar -xf all.tar #解出all.tar包中全部文件

總結

一、*.tar 用 tar -xvf 解壓

二、*.gz 用 gzip -d或者gunzip 解壓

三、.tar.gz和.tgz 用 tar -xzf 解壓

四、*.bz2 用 bzip2 -d或者用bunzip2 解壓

五、*.tar.bz2用tar -xjf 解壓

六、*.Z 用 uncompress 解壓

七、*.tar.Z 用tar -xZf 解壓

八、*.rar 用 unrar e解壓

九、*.zip 用 unzip 解壓

解壓jdk到指定文件夾:

tar -xzvf jdk-8u131-linux-x64.tar.gz -C /usr/local/java

8.軟件包管理

RPM

RPM概述

RPM(RedHat Package Manager),RedHat軟件包管理工具,相似windows裏面的setup.exe

是Linux這系列操做系統裏面的打包安裝工具,它雖然是RedHat的標誌,但理念是通用的。

RPM包的名稱格式: Apache-1.3.23-11.i386.rpm

  • 「apache」 軟件名稱
  • 「1.3.23-11」軟件的版本號,主版本和此版本
  • 「i386」是軟件所運行的硬件平臺,Intel 32位微處理器的統稱
  • 「rpm」文件擴展名,表明RPM包
RPM查詢命令(rpm -qa)

rpm -qa (功能描述:查詢所安裝的全部rpm軟件包)

因爲軟件包比較多,通常都會採起過濾。rpm -qa | grep rpm軟件包

pm -qa |grep firefox  #查詢firefox軟件安裝狀況
RPM卸載命令(rpm -e)

rpm -e RPM軟件包

rpm -e --nodeps 軟件包

選項 功能
-e 卸載軟件包
--nodeps 卸載軟件時,不檢查依賴。這樣的話,那些使用該軟件包的軟件在此以後可能就不能正常工做了。
rpm -e firefox #卸載firefox軟件
RPM安裝命令(rpm -ivh)

rpm -ivh RPM包全名

選項 功能
-i -i=install,安裝
-v -v=verbose,顯示詳細信息
-h -h=hash,進度條
--nodeps --nodeps,不檢測依賴進度

YUM

YUM概述

YUM(全稱爲Yellow dog Updater, Modified)是一個在Fedora和RedHat以及CentOS中的Shell前端軟件包管理器。基於RPM包管理,可以從指定的服務器自動下載RPM包而且安裝,能夠自動處理依賴性關係,而且一次安裝全部依賴的軟件包,無須繁瑣地一次次下載、安裝。

YUM的經常使用命令

yum [-y] [參數] -y表示對全部提問都回答「yes」

參數 功能
install 安裝rpm軟件包
update 更新rpm軟件包
check-update 檢查是否有可用的更新rpm軟件包
remove 刪除指定的rpm軟件包
list 顯示軟件包信息
clean 清理yum過時的緩存
deplist 顯示yum軟件包的全部依賴關係
修改網絡YUM源

默認的系統YUM源,須要鏈接國外apache網站,網速比較慢,能夠修改關聯的網絡YUM源爲國內鏡像的網站,好比網易163。

9.linux經常使用命令

經常使用快捷鍵 功能
ctrl + c 中止進程
ctrl+l 清屏;完全清屏是:reset
ctrl + q 退出
善於用tab鍵 提示(更重要的是能夠防止敲錯)
上下鍵 查找執行過的命令
ctrl +alt linux和Windows之間切換

幫助命令

man 得到幫助信息

man [命令或配置文件] (功能描述:得到幫助信息)

man ls

help 得到shell內置命令的幫助信息

help 命令 (功能描述:得到shell內置命令的幫助信息)

[root@hadoop101 ~]# help cd

文件目錄類

cd 切換目錄

cd:Change Directory切換路徑

參數 功能
cd 絕對路徑 切換路徑
cd相對路徑 切換路徑
cd ~或者cd 回到本身的家目錄
cd - 回到上一次所在目錄
cd .. 回到當前目錄的上一級目錄
cd -P 跳轉到實際物理路徑,而非快捷方式路徑
mkdir 建立新目錄

mkdir [-p] 要建立的目錄

mkdir test  #建立test目錄
mkfir -p test/starfish   #建立多級目錄
rmdir 刪除空目錄
rmdir test/starfish     #刪除test下的空文件夾starfish
touch 建立空文件
touch test/helloworld.txt   #test文件夾下建立helloworld.txt文件
cp 複製文件或目錄

cp [-r] source dest 複製source文件到dest

cp -r ~/home/sys/tmp/ .    #複製文件夾的全部文件到當前目錄
rm 移除文件或目錄

rm [選項] deleteFile (功能描述:遞歸刪除目錄中全部內容)

選項 功能
-r 遞歸刪除目錄中全部內容
-f 強制執行刪除操做,而不提示用於進行確認。
-v 顯示指令的詳細執行過程
rm -rf dssz/   #遞歸刪除目錄中全部內容
mv 移動文件與目錄或重命名

mv oldNameFile newNameFile (功能描述:重命名)

mv /temp/movefile /targetFolder (功能描述:移動文件)

mv tets.txt test.txt #重命名
mv /home/star/test.txt .  #移動文件到當前目錄
cat 查看文件內容

cat [-n] 要查看的文件 可顯示行號查看文件

more 文件內容分屏查看器

more指令是一個基於VI編輯器的文本過濾器,它以全屏幕的方式按頁顯示文本文件的內容。more指令中內置了若干快捷鍵,詳見操做說明。

more 要查看的文件

操做 功能說明
空白鍵(space) 表明向下翻一頁;
Enter 表明向下翻『一行』;
q 表明馬上離開more ,再也不顯示該文件內容。
Ctrl+F 向下滾動一屏
Ctrl+B 返回上一屏
= 輸出當前行的行號
:f 輸出文件名和當前行的行號
less 分屏顯示文件內容

​ less指令用來分屏查看文件內容,它的功能與more指令相似,可是比more指令更增強大,支持各類顯示終端。less指令在顯示文件內容時,並非一次將整個文件加載以後才顯示,而是根據顯示須要加載內容,對於顯示大型文件具備較高的效率。

less 要查看的文件

操做 功能說明
空白鍵 向下翻動一頁;
[pagedown] 向下翻動一頁
[pageup] 向上翻動一頁;
/字串 向下搜尋『字串』的功能;n:向下查找;N:向上查找;
?字串 向上搜尋『字串』的功能;n:向上查找;N:向下查找;
q 離開less 這個程序;
echo 輸出內容到控制檯

echo [-e] [輸出內容] -e: 支持反斜線控制的字符轉換

控制字符 做用
\ 輸出自己
n 換行符
t 製表符,也就是Tab鍵
[starfish:Technical-Learning$ echo -e "hello\tworld"

hello    world
head 顯示文件頭部內容

head用於顯示文件的開頭部份內容,默認狀況下head指令顯示文件的前10行內容。

head 文件 (功能描述:查看文件頭10行內容)

head -n 5 文件 (功能描述:查看文件頭5行內容,5能夠是任意行數)

tail 輸出文件尾部內容

tail用於輸出文件中尾部的內容,默認狀況下tail指令顯示文件的最後10行內容。

tail 文件 (功能描述:查看文件頭10行內容)

tail -n 5 文件 (功能描述:查看文件頭5行內容,5能夠是任意行數)

tail -f 文件 (功能描述:實時追蹤該文檔的全部更新)

輸出重定向和>> 追加

ls -l>文件 (功能描述:列表的內容寫入文件a.txt中(覆蓋寫))

ls -al >>文件 (功能描述:列表的內容追加到文件aa.txt的末尾)

cat 文件1 > 文件2 (功能描述:將文件1的內容覆蓋到文件2)

echo 「內容」 >> 文件

2.案例實操

ls -l>houge.txt #將ls查看信息寫入到文件中
ls -l>>houge.txt #將ls查看信息寫入到文件中
echo hello>>houge.txt #採用echo將hello單詞追加到文件中
ln 軟連接

軟連接也成爲符號連接,相似於windows裏的快捷方式,有本身的數據塊,主要存放了連接其餘文件的路徑。

ln -s [原文件或目錄] [軟連接名] (功能描述:給原文件建立一個軟連接)

history 查看已經執行過歷史命令

history (功能描述:查看已經執行過歷史命令)

時間日期類

date [OPTION]... [+FORMAT]

選項 功能
-d<時間字符串> 顯示指定的「時間字符串」表示的時間,而非當前時間
-s<日期時間> 設置系統日期時間
參數 功能
<+日期時間格式> 指定顯示時使用的日期時間格式
date 顯示當前時間

date (功能描述:顯示當前時間)

date +%Y (功能描述:顯示當前年份)

date +%m (功能描述:顯示當前月份)

date +%d (功能描述:顯示當前是哪一天)

date "+%Y-%m-%d %H:%M:%S" (功能描述:顯示年月日時分秒)

date -d '1 days ago' (功能描述:顯示前一天時間)

date -d '-1 days ago' (功能描述:顯示明天時間)

cal 查看日曆

cal [具體某一年] (功能描述:不加選項,顯示本月日曆)

cal 2019  #顯示2019年日曆

用戶管理命令

Linux系統是一個多用戶多任務的操做系統,任何一個要使用系統資源的用戶,都必須首先向系統管理員申請一個帳號,而後以這個帳號的身份進入系統。

用戶和組的相關文件

/etc/passwd文件

用戶(user)的配置文件,記錄用戶的各類信息

每行的含義:用戶名:口令:用戶標識號:組標識號:註釋性描述:主目錄:登陸Shell

linux-passwd.png

/etc/shadow 文件

口令的配置文件

每行的含義:登陸名:加密口令:最後一次修改時間:最小時間間隔:最大時間間隔:警告時間:不活動時間:失效時間:保留

linux-shadow.png

/etc/group文件

組(group)的配置文件,記錄Linux包含的組的信息

每行含義:組名:口令:組標識號:組內用戶列表

linux-group.png

useradd 添加新用戶

useradd 用戶名 (功能描述:添加新用戶)

useradd -g 組名用戶名 (功能描述:添加新用戶到某個組)

passwd 設置用戶密碼

passwd 用戶名 (功能描述:設置用戶密碼)

id 查看用戶是否存在

id 用戶名

cat /etc/passwd 查看建立了哪些用戶
cat  /etc/passwd
su 切換用戶

su 用戶名稱 (功能描述:切換用戶,只能得到用戶的執行權限,不能得到環境變量)

su - 用戶名稱 (功能描述:切換到用戶並得到該用戶的環境變量及執行權限)

  • 從權限高的用戶切換到權限低的用戶,不須要輸入密碼,反之須要。
  • 當須要返回到原來用戶時,使用exit指令
  • 若是su – 沒有帶用戶名,則默認切換到root用戶
userdel 刪除用戶

userdel 用戶名 (功能描述:刪除用戶但保存用戶主目錄)

userdel -r 用戶名 (功能描述:用戶和用戶主目錄都刪除,刪除用戶的同時,刪除與用戶相關的全部文件)

who 查看登陸用戶信息

whoami (功能描述:顯示自身用戶名稱)

who am i (功能描述:顯示登陸用戶的用戶名)

sudo 設置普通用戶具備root權限

1.添加sysnc360用戶,並對其設置密碼。

useradd sysnc360
passwd sysnc360

2.修改配置文件

vi /etc/sudoers

修改/etc/sudoers 文件,找到下面一行(91行),在root下面添加一行,以下所示:

## Allow root to run any commands anywhere
root    ALL=(ALL)     ALL
sysnc360   ALL=(ALL)    ALL

或者配置成採用sudo命令時,不須要輸入密碼

## Allow root to run any commands anywhere
root      ALL=(ALL)     ALL
sysnc360   ALL=(ALL)    NOPASSWD:ALL

修改完畢,如今能夠用sysnc360賬號登陸,而後用命令sudo ,便可得到root權限進行操做。

sudo mkdir module  #用普通用戶在/opt目錄下建立一個文件夾
chown atguigu:atguigu module/
usermod 修改用戶

usermod -g 用戶組用戶名

選項 功能
-g 修改用戶的初始登陸組,給定的組必須存在。默認組id是1。
usermod -g root starfish #將用戶加入到用戶組

用戶組管理命令

每一個用戶都有一個用戶組,系統能夠對一個用戶組中的全部用戶進行集中管理。不一樣Linux 系統對用戶組的規定有所不一樣,

如Linux下的用戶屬於與它同名的用戶組,這個用戶組在建立用戶時同時建立。

用戶組的管理涉及用戶組的添加、刪除和修改。組的增長、刪除和修改實際上就是對/etc/group文件的更新。

groupadd 新增組

groupadd 組名

groupdel 刪除組

groupdel 組名

groupmod 修改組

groupmod -n 新組名 老組名

groupmod -n sysnc360 starfish #修改sysnc360組名稱爲starfish
cat /etc/group 查看建立了哪些組
cat  /etc/group

文件權限操做

chmod 改變權限

chmod [{ugoa}{+-=}{rwx}] 文件或目錄

chmod [mode=421 ] [文件或目錄]

經驗技巧

​ u:全部者 g:全部組 o:其餘人 a:全部人(u、g、o的總和)

r=4 w=2 x=1 rwx=4+2+1=7

chmod u+x test.txt #修改文件使其所屬主用戶具備執行權限

chmod g+x test.txt #修改文件使其所屬組用戶具備執行權限

chmod u-x,o+x test.txt #修改文件所屬主用戶執行權限,並使其餘用戶具備執行權限

chmod 777 test.txt #採用數字的方式,設置文件全部者、所屬組、其餘用戶都具備可讀可寫可執行權限

chmod -R 777 test/ #採用數字的方式,設置文件全部者、所屬組、其餘用戶都具備可讀可寫可執行權限
chown 改變全部者

chown [-r] [最終用戶] [文件或目錄] (功能描述:改變文件或者目錄的全部者)

chgrp 改變所屬組

chgrp [最終用戶組] [文件或目錄] (功能描述:改變文件或者目錄的所屬組)

搜索查找類

find 查找文件或者目錄

find指令將從指定目錄向下遞歸地遍歷其各個子目錄,將知足條件的文件顯示在終端。

find [搜索範圍] [選項]

選項 功能
-name<查詢方式> 按照指定的文件名查找模式查找文件
-user<用戶名> 查找屬於指定用戶名全部文件
-size<文件大小> 按照指定的文件大小查找文件。

按文件名:

find opt/ -name *.txt #根據名稱查找/目錄下的filename.txt文件
find opt/ -user test #查找/opt目錄下,用戶名稱爲-user的文件
find /home -size +204800 #在/home目錄下查找大於200m的文件(+n 大於  -n小於   n等於)
locate快速定位文件路徑

locate指令利用事先創建的系統中全部文件名稱及路徑的locate數據庫實現快速定位給定的文件。Locate指令無需遍歷整個文件系統,查詢速度較快。爲了保證查詢結果的準確度,管理員必須按期更新locate時刻。

locate 搜索文件

經驗技巧:因爲locate指令基於數據庫進行查詢,因此第一次運行前,必須使用updatedb指令建立locate數據庫。

updatedb
locate tmp
grep 過濾查找及「|」管道符

管道符,「|」,表示將前一個命令的處理結果輸出傳遞給後面的命令處理

grep [-n] 查找內容源文件(-n可顯示行號)

壓縮和解壓類

gzip/gunzip 壓縮

gzip 文件 (功能描述:壓縮文件,只能將文件壓縮爲*.gz文件)

gunzip 文件.gz (功能描述:解壓縮文件命令)

經驗技巧

  • 只能壓縮文件不能壓縮目錄
  • 不保留原來的文件
zip/unzip 壓縮

zip [選項] XXX.zip 將要壓縮的內容 (功能描述:壓縮文件和目錄的命令)

unzip [選項] XXX.zip (功能描述:解壓縮文件)

zip選項 功能
-r 壓縮目錄
unzip選項 功能
-d<目錄> 指定解壓後文件的存放目錄

經驗技巧

zip 壓縮命令在window/linux都通用,能夠壓縮目錄且保留源文件。

tar 打包

tar [選項] XXX.tar.gz 將要打包進去的內容 (功能描述:打包目錄,壓縮後的文件格式.tar.gz)

選項 功能
-c 產生.tar打包文件
-v 顯示詳細信息
-f 指定壓縮後的文件名
-z 打包同時壓縮
-x 解包.tar文件
tar -zcvf houma.tar.gz aa.txt bb.txt  #壓縮文件aa和bb
tar -zcvf test.tar.gz test/ #壓縮目錄
tar -zxvf test.tar.gz #解壓到當前目錄
tar -zxvf test.tar.gz -C /opt #解壓到指定目錄

磁盤分區類

df 查看磁盤空間使用狀況 df: disk free 空餘硬盤

df 選項(功能描述:列出文件系統的總體磁盤使用量,檢查文件系統的磁盤空間佔用狀況)

選項 功能
-h 以人們較易閱讀的GBytes, MBytes, KBytes 等格式自行顯示;
df -h #查看磁盤使用狀況
du -h /目錄  #查詢指定目錄的磁盤佔用狀況
fdisk 查看分區

fdisk -l (功能描述:查看磁盤分區詳情,該命令必須在root用戶下才能使用)

功能說明

  • Linux分區(類比wins的C,D,E盤)

    • Device:分區序列
    • Boot:引導
    • Start:從X磁柱開始
    • End:到Y磁柱結束
    • Blocks:容量
    • Id:分區類型ID
    • System:分區類型
mount/umount 掛載/卸載

對於Linux用戶來說,不論有幾個分區,分別分給哪個目錄使用,它總歸就是一個根目錄、一個獨立且惟一的文件結構。

Linux中每一個分區都是用來組成整個文件系統的一部分,它在用一種叫作「掛載」的處理方法,它整個文件系統中包含了一整套的文件和目錄,並將一個分區和一個目錄聯繫起來,要載入的那個分區將使它的存儲空間在這個目錄下得到。

mount [-t vfstype] [-o options] device dir(功能描述:掛載設備)

umount設備文件名或掛載點 (功能描述:卸載設備)

參數 功能
-t vfstype 指定文件系統的類型,一般沒必要指定。mount 會自動選擇正確的類型。經常使用類型有:光盤或光盤鏡像:iso9660DOS fat16文件系統:msdosWindows 9x fat32文件系統:vfatWindows NT ntfs文件系統:ntfsMount Windows文件網絡共享:smbfsUNIX(LINUX) 文件網絡共享:nfs
-o options 主要用來描述設備或檔案的掛接方式。經常使用的參數有:loop:用來把一個文件當成硬盤分區掛接上系統ro:採用只讀方式掛接設備rw:採用讀寫方式掛接設備  iocharset:指定訪問文件系統所用字符集
device 要掛接(mount)的設備
dir 設備在系統上的掛接點(mount point)

進程線程類

  1. 在LINUX中,每一個執行的程序(代碼)都稱爲一個進程。每個進程都分配一個ID號。
  2. 每個進程,都會對應一個父進程,而這個父進程能夠複製多個子進程。例如www服務器。
  3. 每一個進程均可能以兩種方式存在的。後臺,所謂前臺進程就是用戶目前的屏幕上能夠進行操做的。後臺進程則是實際在操做,但因爲屏幕上沒法看到的進程,一般使用後臺方式執行[sshd , crond]。
  4. 通常系統的服務都是之後臺進程的方式存在,並且都會常駐在系統中。直到關機才才結束。
ps 查看當前系統進程狀態

ps:process status 進程狀態

ps aux | grep xxx (功能描述:查看系統中全部進程)

ps -ef| grep xxx (功能描述:能夠查看子父進程之間的關係)

選項 功能
-a 選擇全部進程
-u 顯示全部用戶的全部進程
-x 顯示沒有終端的進程

3.功能說明

(1)ps aux顯示信息說明

  • USER:該進程是由哪一個用戶產生的
  • PID:進程的ID號
  • %CPU:該進程佔用CPU資源的百分比,佔用越高,進程越耗費資源;
  • %MEM:該進程佔用物理內存的百分比,佔用越高,進程越耗費資源;
  • VSZ:該進程佔用虛擬內存的大小,單位KB;
  • RSS:該進程佔用實際物理內存的大小,單位KB;
  • TTY:該進程是在哪一個終端中運行的。其中tty1-tty7表明本地控制檯終端,tty1-tty6是本地的字符界面終端,tty7是圖形終端。pts/0-255表明虛擬終端。
  • STAT:進程狀態。常見的狀態有:R:運行、S:睡眠、T:中止狀態、s:包含子進程、+:位於後臺
  • START:該進程的啓動時間
  • TIME:該進程佔用CPU的運算時間,注意不是系統時間
  • COMMAND:啓動進程所用的命令和參數,若是過長會被截斷顯示

(2)ps -ef顯示信息說明

  • UID:用戶ID
  • PID:進程ID
  • PPID:父進程ID
  • C:CPU用於計算執行優先級的因子。數值越大,代表進程是CPU密集型運算,執行優先級會下降;數值越小,代表進程是I/O密集型運算,執行優先級會提升
  • STIME:進程啓動的時間
  • TTY:完整的終端名稱
  • TIME:CPU時間
  • CMD:啓動進程所用的命令和參數

若是想查看進程的CPU佔用率和內存佔用率,可使用aux;

若是想查看進程的父進程ID可使用ef;

ps aux|grep java

ps -ef|grep tomcat
kill 終止進程

kill [-9] 進程號 (功能描述:經過進程號殺死進程,-9表示強迫進程當即中止)

killall 進程名稱 (功能描述:經過進程名稱殺死進程,也支持通配符,這在系統因負載過大而變得很慢時頗有用)

pstree 查看進程樹

pstree [選項]

選項 功能
-p 顯示進程的PID
-u 顯示進程的所屬用戶
Pstree -p #用樹狀的形式顯示進程的pid 
Pstree –u #用樹狀的形式進程的用戶id

服務管理

服務(service) 本質就是進程,可是是運行在後臺的,一般都會監聽某個端口,等待其它程序的請求,好比(mysql , sshd 防火牆等),所以咱們又稱爲守護進程

service管理指令:

service 服務名 [start | stop | restart | reload | status]

在CentOS7.0後 再也不使用service ,而是 systemctl

service iptables status #查看當前防火牆的情況
service  iptables  stop #關閉或者啓用防火牆後,當即生效(臨時生效,重啓後恢復)
service iptables start

服務的運行級別(runlevel):

查看或者修改默認級別: vi /etc/inittab

Linux系統有7種運行級別(runlevel):經常使用的是級別3和5

  • 運行級別0:系統停機狀態,系統默認運行級別不能設爲0,不然不能正常啓動
  • 運行級別1:單用戶工做狀態,root權限,用於系統維護,禁止遠程登錄
  • 運行級別2:多用戶狀態(沒有NFS),不支持網絡
  • 運行級別3:徹底的多用戶狀態(有NFS),登錄後進入控制檯命令行模式
  • 運行級別4:系統未使用,保留
  • 運行級別5:X11控制檯,登錄後進入圖形GUI模式
  • 運行級別6:系統正常關閉並重啓,默認運行級別不能設爲6,不然不能正常啓動

開機的流程說明:

linux-runlevel.png

chkconfig指令

經過chkconfig命令能夠給每一個服務的各個運行級別設置自啓動/關閉

基本語法

1) 查看服務 chkconfig --list|grep xxx

2) chkconfig 服務名 --list

3) chkconfig --level 5 服務名 on/off [能夠指定某個服務,某各個運行級別,開啓或關閉]

chkconfig –level 1 sshd off/on #sshd 服務在 1 運行級別 off

4) chkconfig 服務名 on/off

chkconfig iptables off #  iptables 完全關閉 ,無論是哪一個級別都關閉

chkconfig --list   #顯示當前系統全部服務的各個運行級別的運行狀態
top 查看系統健康狀態

top與ps命令很類似。它們都用來顯示正在執行的進程。top與ps最大的不一樣之處,在於top在執行一段時間能夠更新正在運行的的進程(默認每3秒變化一次)

top [選項]

選項 功能
-d 秒數 指定top命令每隔幾秒更新。默認是3秒在top命令的交互模式當中能夠執行的命令:
-i 使top不顯示任何閒置或者僵死進程。
-p 經過指定監控進程ID來僅僅監控某個進程的狀態。
操做 功能
P 以CPU使用率排序,默認就是此項
M 之內存的使用率排序
N 以PID排序
q 退出top
查詢結果字段解釋

第一行信息爲任務隊列信息

內容 說明
12:06:46 系統當前時間
up 1 day, 13:32 系統的運行時間,本機已經運行1天13小時32分鐘
2 users 當前登陸了兩個用戶
load average: 0.00, 0.00, 0.00 系統在以前1分鐘,5分鐘,15分鐘的平均負載。通常認爲小於1時,負載較小。若是大於1,系統已經超出負荷。

第二行爲進程信息

Tasks: 95 total 系統中的進程總數
1 running 正在運行的進程數
94 sleeping 睡眠的進程
0 stopped 正在中止的進程
0 zombie 殭屍進程。若是不是0,須要手工檢查殭屍進程

第三行爲CPU信息

Cpu(s): 0.1%us 用戶模式佔用的CPU百分比
0.1%sy 系統模式佔用的CPU百分比
0.0%ni 改變過優先級的用戶進程佔用的CPU百分比
99.7%id 空閒CPU的CPU百分比
0.1%wa 等待輸入/輸出的進程的佔用CPU百分比
0.0%hi 硬中斷請求服務佔用的CPU百分比
0.1%si 軟中斷請求服務佔用的CPU百分比
0.0%st st(Steal time)虛擬時間百分比。就是當有虛擬機時,虛擬CPU等待實際CPU的時間百分比。

第四行爲物理內存信息

Mem: 625344k total 物理內存的總量,單位KB
571504k used 已經使用的物理內存數量
53840k free 空閒的物理內存數量,咱們使用的是虛擬機,總共只分配了628MB內存,因此只有53MB的空閒內存了
65800k buffers 做爲緩衝的內存數量

第五行爲交換分區(swap)信息

Swap: 524280k total 交換分區(虛擬內存)的總大小
0k used 已經使用的交互分區的大小
524280k free 空閒交換分區的大小
409280k cached 做爲緩存的交互分區的大小
top -d 1
top -i
top -p 2575

# 執行上述命令後,能夠按P、M、N對查詢出的進程結果進行排序。
netstat 顯示網絡統計信息和端口占用狀況

netstat -anp |grep 進程號(功能描述:查看該進程網絡信息)

netstat -nlp | grep 端口號 (功能描述:查看網絡端口號佔用狀況)

選項 功能
-an 按必定順序排列輸出
-p 表示顯示哪一個進程在調用
netstat -anp | grep java #經過進程號查看該進程的網絡信息

netstat -nlp | grep 20670 #查看某端口號是否被佔用

crond 系統定時任務

crond 服務管理
service crond restart #從新啓動crond服務
crontab 定時任務設置

crontab [選項]

選項 功能
-e 編輯crontab定時任務,會打開vim編輯你的工做
-l 查詢crontab任務
-r 刪除當前用戶全部的crontab任務
項目 含義 範圍
第一個「*」 一小時當中的第幾分鐘 0-59
第二個「*」 一天當中的第幾小時 0-23
第三個「*」 一個月當中的第幾天 1-31
第四個「*」 一年當中的第幾月 1-12
第五個「*」 一週當中的星期幾 0-7(0和7都表明星期日)
特殊符號 含義
* 表明任什麼時候間。好比第一個「*」就表明一小時中每分鐘都執行一次的意思。
表明不連續的時間。好比「0 8,12,16 * 命令」,就表明在天天的8點0分,12點0分,16點0分都執行一次命令
- 表明連續的時間範圍。好比「0 5 1-6命令」,表明在週一到週六的凌晨5點0分執行命令
*/n 表明每隔多久執行一次。好比「/10 * 命令」,表明每隔10分鐘就執行一遍命令
時間 含義
45 22 * 命令 在22點45分執行命令
0 17 1 命令 每週1 的17點0分執行命令
0 5 1,15 命令 每個月1號和15號的凌晨5點0分執行命令
40 4 1-5 命令 每週一到週五的凌晨4點40分執行命令
/10 4 命令 天天的凌晨4點,每隔10分鐘執行一次命令
0 0 1,15 * 1 命令 每個月1號和15號,每週1的0點0分都會執行命令。注意:星期幾和幾號最好不要同時出現,由於他們定義的都是天。很是容易讓管理員混亂。

FAQ

  • 統計/home文件夾下文件的個數
    ls –l /home/ | grep 「^-」 | wc -l
  • 統計/home文件夾下目錄的個數
    ls –l /home/ | grep 「^d」 | wc -l
  • 統計/home文件夾下文件的個數,包括子文件夾裏的
    ls –lR /home/ | grep 「^-」 | wc -l
  • 統計/home文件夾下目錄的個數,包括子文件夾裏的
    ls –lR /home/ | grep 「^d」 | wc -l
  • 如何查看當前系統都有哪些進程

    ps -aux 或者ps -elf

  • 如何查看系統都開啓了哪些端口?

    netstat -lnp

  • 平時用到哪些Linux命令

    ps、grep、tar、touch、pwd

相關文章
相關標籤/搜索