Linux是一個基於POSIX和Unix的多用戶、多任務、支持多線程和多CPU的性能穩定的操作系統,可免費使用並自由傳播。
Linux是眾多操作系統之一 , 目前流行的服務器和 PC 端操作系統有 Linux、Windows、UNIX 等
Linux的創始人 Linus Torvalds 林納斯 (同時也是git的開發者)
Linux主要的發行版:
Ubuntu(烏班圖)、RedHat(紅帽)、CentOS、Debain[蝶變]、Fedora、SuSE、OpenSUSE
unix是怎么來的
理查德·斯托曼發起的GNU計划
- 在自由的時代用戶應該免費享有對軟件源代碼閱讀、修改的權利。
- 軟件公司可以靠提供服務和訓練獲得盈利。
Linux和Unix的關系
(Redhat又衍生出兩個版本,redhat和centOS)
Refrences:
- https://www.w3cschool.cn/linux/
- http://c.biancheng.net/linux_...
- 《鳥哥的Linux私房菜》 http://shouce.jb51.net/vbird-...
1.Linux的文件權限
在linux中的每個用戶必須屬於一個組,不能獨立於組外。在linux中每個文件有所有者、所在組、其它組的概念
ls -al(l):
ls -l(別名ll 就可以查看)
從左到又每一列的信息依次為 權限、 連接數、 所有者 、 用戶組 、 文件容量 、 修改日期 、 文件名
第一列的十位字母代表的是文件的類型和權限,第一個字符代表這個文件是“目錄、文件或鏈接文件等”含義:
- d:代表是目錄
- -:代表是文件
- l:代表是連接文件
- b:代表設備文件里可供存儲的接口設備
- c:代表設備文件里面的串行端口設備。如鍵盤,鼠標等
后邊9個字符,每3個字符為一組,“rwx”(可讀、可寫、可執行eXecute)這三個參數的組合,(rwx3者的順序不能改變,換句話說,第一個要么是r,要么啥都沒有,不能是w或者x),三個組合分別代表“文件所有者的權限”、“同用戶組的權限”、“其他非本用戶組的權限”。
權限的重要性:
- 系統保護的功能;
- 團隊開發軟件或數據共享的功能;
改變文件屬性和權限:
-
chgrp: 改變文件所屬用戶組(change group)
chgrp [-R] users 目錄或文件
: 將這個路徑下的文件的用戶組改成“users“- 這個新用戶組一定得是/etc/group下有的,否則會報錯。
- 若最后一個參數是目錄,則表示只將這個目錄下的文件的用戶組改成這個。
- R表示若最后一個參數是目錄,則將當前目錄下的文件連同子目錄下的所有文件的用戶組都改成這個。
-
chown: 改變文件所有者(change owner)
chown [-R] 用戶名 文件或目錄
: 將這個目錄下的所有文件的所有者都改成這個用戶名。- 這個用戶名必須是/etc/passwd下有的才行。
- 這個命令可以既修改文件主又修改用戶組:
chown [-R] 用戶名:用戶組名 目錄/文件
(:和 . 都可以)chown [-R] 用戶名.用戶組名 目錄/文件
- 由於用戶名可以存在小數點,當出現含有小數點的用戶名時,系統會發生誤判,所以我們一般都使用:來連接用戶名和用戶組名。
- 還可以僅修改用戶組名:
chown [-R] .用戶組名 目錄/文件
-
chmod: 改變文件的權限
改變文件的權限有兩種方法:用數字或者符號進行權限的修改
-
用數字進行權限的修改
-
Linux文件的基本權限有9個,分別是owner、group、others三種身份各有自己的read、write、execute 權限。在這種方式中,r=4、w=2、x=1,將每一組的三個值加起來,組成一個三位數即可。例如:
文件主:rwx = 4+2+1=7;
同組用戶:rwx=4+2+1=7;
其他人:---=0+0+0=0;
所以命令如下:
chmod [-R] 770 文件/目錄
- 用符號進行權限的修改
用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 / 你會看到
以下是對這些目錄的解釋:
/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(一頁一頁翻動)
如果文件內容較多,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 鍵盤圖:
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包中所有文件
總結
1、*.tar 用 tar -xvf 解壓
2、*.gz 用 gzip -d或者gunzip 解壓
3、.tar.gz和.tgz 用 tar -xzf 解壓
4、*.bz2 用 bzip2 -d或者用bunzip2 解壓
5、*.tar.bz2用tar -xjf 解壓
6、*.Z 用 uncompress 解壓
7、*.tar.Z 用tar -xZf 解壓
8、*.rar 用 unrar e解壓
9、*.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
/etc/shadow 文件
口令的配置文件
每行的含義:登錄名:加密口令:最后一次修改時間:最小時間間隔:最大時間間隔:警告時間:不活動時間:失效時間:保留
/etc/group文件
組(group)的配置文件,記錄Linux包含的組的信息
每行含義:組名:口令:組標識號:組內用戶列表
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) |
進程線程類
- 在LINUX中,每個執行的程序(代碼)都稱為一個進程。每一個進程都分配一個ID號。
- 每一個進程,都會對應一個父進程,而這個父進程可以復制多個子進程。例如www服務器。
- 每個進程都可能以兩種方式存在的。前台 與后台,所謂前台進程就是用戶目前的屏幕上可以進行操作的。后台進程則是實際在操作,但由於屏幕上無法看到的進程,通常使用后台方式執行[sshd , crond]。
- 一般系統的服務都是以后台進程的方式存在,而且都會常駐在系統中。直到關機才才結束。
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,否則不能正常啟動
開機的流程說明:
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 171 命令 | 每周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