一、Linux簡介
1、什么是Linux
1.1、Linux操作系統:指GUN/Linux,采用Linux內核的GUN操作系統。
1.2、嚴格說的話,Linux不是一個操作系統,Linux只是一個操作系統的內核。內核建立了計算機軟件與硬件之間通訊的平臺,內核提供系統服務,比如文件管理、虛擬內存、設備I/O等。
2、Linux發行版本
(1)、RedHat,(2)、CentOS,(3)、Ubuntu,(4)、SUSE、(5)、Debain
3、遠程登錄
通過ssh服務實現遠程登錄Linux系統,默認ssh服務端口號為22。Windows系統上遠程登錄客戶端有:Xshell、SecureCRT等。
二、Linux基本使用
1、用戶與身份
1.1 root用戶
root用戶的根目錄:/root
1.2普通用戶
普通用戶的家目錄:/home/zfsky
1.3切換用戶:su用戶名
?root到普通用戶:su zfsky無需密碼。
?普通用戶到root:su root需輸入密碼。
1.4查看用戶或用戶組
?whoami:查看當前登錄的用戶名
?groups:查看當前登錄用戶的組內成員
?groups zfsky:查看zfsky用戶所在的組以及組內成員
?cat /etc/passwd:查看系統存在的所有用戶名
格式:root:x:0:0:root:/root:/bin/bash
l第一字段:用戶名
l第二字段:口令,映射到/etc/shadow文件中
l第三字段:UID
l第四字段:GID
l第五字段:用戶名全稱
l第六字段:用戶的主目錄所在位置
l第七字段:用戶所用shell的類型
?cat /etc/groups:查看系統存在的所有用戶組
2、系統目錄結構
2.1 /root
根分區,只有root用戶對此目錄擁有寫權限。
2.2 /bin
用戶可執行文件,此目錄包含二進制可執行文件以及所有用戶的常用命令(如:ls , cp等)。
2.3 /sbin
系統可執行文件,此目錄中的命令主要供系統管理員使用(如:iptables、reboot等)。
2.4 /etc
配置文件,包含所有應用程序的配置文件,也包含啟動、關閉某個特定程序的腳本。
2.5 /dev
設備文件,包含設備文件(在Linux中,一切都被看做文件:終端設備、USB、磁盤等等都被看做文件)。
2.6 /proc
進程信息,所有系統進程的信息都包含在/proc目錄中。
2.7 /var
變量文件,/var是一個可增長的目錄,包含變量文件(如,/var/log系統日志、/var/mail郵件)。
2.8 /usr
用戶程序,為用戶應用程序存放可執行文件、源代碼和文檔。
2.9 /home
用戶主目錄,用于存放用戶的私人文件。
2.10 /boot
啟動加載文件,系統啟動時需要加載的文件。
2.11 /lib
系統庫文件,/bin和/sbin中的可執行文件需要/lib中庫文件的支持,庫文件通常以"ld"或"ld*.so"的形式命名。
2.12 /opt
可選應用,用于安裝獨立軟件商的可選應用。
2.13 /mnt
掛載目錄,系統管理員可用于臨時掛載文件系統。
2.14 /media
可移動媒體設備,掛載可移動媒體設備。
2.15 /src
3、目錄的基本操作
?ls命令:列出目錄的內容
l語法:ls [選項] [目錄或文件夾]
l顏色含義:
2藍色:目錄
2綠色:可執行文件
2紅色:壓縮文件
2淺藍色:鏈接文件
2灰色:其他文件
?cd命令:改變工作目錄
l語法:cd [
directory ]
?pwd命令:顯示當前工作目錄的絕對路徑
l語法:pwd
?mkdir命令:創建目錄
語法:mkdir [選項] dirname
?rmdir命令:刪除空目錄
l語法:rmdir [選項] dirname
4、文件的基本操作
?文件的移動:mv命令
l功能:為文件或目錄改名或將文件或目錄由一個目錄移到另一個目錄。
l語法:mv [選項]源文件或目錄目標文件或目錄
?文件的復制:cp命令
l功能:將給出的文件或目錄拷貝到另一個文件或目錄中。
l語法:cp [選項]源文件或目錄目標文件或目錄
?文件的刪除:rm命令
l功能:刪除一個目錄中的一個或多個文件或目錄,它也可以將某個目錄及其下所有文件及子目錄均刪除。
l語法:rm [選項]文件...
5、文件操作權限
?每個文件或目錄的操作權限都有三組,每組用三位表示:文件屬主的讀、寫和執行權限;屬主同組用戶的讀、寫和執行權限;系統中其他用戶的讀、寫和執行權限。
?chmod命令:改變文件或目錄的操作權限
l兩種用法:一種是包含字母和操作符表達式的文字設定法,一種是包含數字的數字設定法。
l具體的權限:【1】可讀r:4;【2】可寫w:2;【3】可執行x:1。
6、更改文件或目錄的屬主/組
?文件與目錄的歸屬是指文件與目錄的所有者與所屬的組。
?chgrp命令:改變文件或目錄所屬的組。
l語法:chgrp [選項] group
filename
?chown命令:改變文件或目錄屬主和屬組。
l語法:chmod [選項]用戶或組文件
三、文件管理
1、目錄操作
?cd切換目錄
2、文件操作
?創建文件夾:mkdir
lmkdir文件夾名:創建當前目錄下的文件夾
lmkdir a b c:同時創建多個并列文件夾
lmkdir -p /usr/local/zff創建指定路徑下的文件夾(如果創建的文件夾的父目錄不存在,連同父目錄一塊創建)
?刪除文件夾:rmdir
lrmdir文件夾名:刪除單個文件夾
lrmdir dirname1 dirname2 :刪除多個文件夾
lrmdir /usr/local/dirname刪除目錄層級下的文件夾
lrmdir -p /usr/local/dirname刪除帶層級的全部目錄
?創建文件:vi/touch
lvi/vim/touch file.txt:創建/編輯文件
?刪除文件:rm -rf
lrm -rf filename
?文件查找:find——根據文件的屬性進行查找,如文件名,文件大小,所有者,所屬組,是否為空,訪問時間,修改時間等。
lfind / -name "test":查找系統中以test命名的文件或文件夾
lfind /home -name a*.log -o -name b*:查找home目錄下以a或b開頭的文件
lfind /home -user root:查找home目錄下屬主為root的文件或文件夾
l按照文件的更改時間來查找文件,-n表示文件更改時間距現在n時間以內,+n表示文件更改時間距現在n時間以前
?查看文件
lcat:一次性查看文本,適用于文本內容比較少
2cat filename:一次性查看文本的全部內容
2cat filename1 filename2:一次性查看多個文本的內容
2cat -n filename:查看文本,并對輸出的所有行編號
2cat -b filename:查看文本,并對輸出的非空行編號
lmore:用于分頁顯示文本,適用于文本內容較多
2more -num filename:制定屏幕的行數
2more +num filename:從行號num開始顯示
2more +/pattern filename:從字串(pattern)第一次出現行的前兩行開始顯示
2more -s filename:重復的空行壓縮成一個空行
注:SPACE:顯示接下來的k行文本
Q/q:退出
lless:用于分頁顯示文本,適用于文本內容較多
2less -N fileneme:顯示每行的行號
2less -s filename:顯示連續空行為一行
2less -i filename:忽略搜索時的大小寫
2less -m filename:顯示類似more命令的百分比
2less運行時可以輸入的命令有:
u空白鍵:向下翻動一頁
u[pagedown]:向下翻動一頁
u[pageup]:向上翻動一頁
u/字串:向下搜尋『字串』
u?字串:向上搜尋『字串』
un:重復前一個搜尋(與/或?有關)
uN:反向的重復前一個搜尋(與/或?有關)
uq:離開less這個程序
lhead:用于顯示文件文字區塊
2head filename:默認顯示文件前10行
2head -v filename:顯示文件名
2head -q filename:隱藏文件名
2head -n num filename:顯示前num行文字
2head -n -num filename:顯示除了文件最后num行外的所有內容
2head -c num filename:顯示文件前num個字節的內容
2head -c -num filename:顯示除了文件最后num個字節外的所有內容
ltail:用于顯示文件文字區塊
2tail filename:默認顯示文件尾部10行
2tail -num filename/tail -n num filename:顯示尾部num行
2tail -100f filename:動態顯示最新100行內容
注:tail常被用來查看最新的日志信息,我們就可以用tail -f來實時查看日志信息。
lgrep:根據文件的內容進行查找,會對文件的每一行按照給定的模式(patter)進行匹配查找。
2grep 'mysql' my.cnf:在my.cnf中查找含有mysql的字段
2grep -n 'mysql' my.cnf:在my.cnf中查找含有mysql的字段,同時顯示出行號
lcut:選取命令,就是:將一段數據經過分析,取出我們想要的內容。一般來說,選取信息通常是針對“行”來進行分析的,并不是整篇信息分析。
2cut命令從文件的每一行剪切字節、字符和字段并將這些字節、字符和字段寫至標準輸出。
如果不指定File參數,cut命令將讀取標準輸入。必須指定-b、-c或-f標志之一。
2cut命令參數:
u-b:以字節為單位進行分割。這些字節位置將忽略多字節字符邊界,除非也指定了-n標志。
u-c:以字符為單位進行分割。
u-d:自定義分隔符,默認為制表符。
u-f:與-d一起使用,指定顯示哪個區域。
u-n:取消分割多字節字符,僅和-b標志一起使用。如果字符的最后一個字節落在由-b標志的List參數指示的
范圍之內,該字符將被寫出;否則,該字符將被排除。
2cut常用命令:
uhttp://www.cnblogs.com/dong008259/archive/2011/12/09/2282679.html
l注意:Linux中head、tail、grep、cut、wc、sort等命令
四、用戶和用戶組管理
1、用戶管理
?新增用戶
luseradd :添加用戶
lpasswd :設置用戶密碼
?刪除用戶
luserdel :僅刪除用戶
luserdel -r :刪除用戶及用戶的目錄文件
?查看用戶:cat
/etc/passwd
2、用戶組管理
?添加用戶組
lgroupadd :添加用戶組
lpasswd :設置用戶組密碼
?刪除用戶組
lgroupdel
?設定用戶組密碼
lgpasswd
?取消用戶組密碼
lgpasswd -r
?添加用戶組成員
lgpasswd -a :添加的要存在
?刪除用戶組成員
lgpasswd -d
?查看用戶組
lcat /etc/group
五、系統管理
1、進程管理
?ps命令:Process Status,用來顯示當前進程的狀態,通過ps命令可以確定有哪些進程正在運行和運行的狀態、進程是否結束、進程有沒有僵死、哪些進程占用了過多的資源等。
llinux上進程有5種狀態:
2運行(正在運行或在運行隊列中等待),狀態碼:R
2中斷(休眠中,受阻,在等待某個條件的形成或接受到信號),狀態碼:S
2不可中斷(收到信號不喚醒和不可運行,進程必須等待直到有中斷發生),狀態碼:D
2僵死(進程已終止,但進程描述符存在,直到父進程調用wait4()系統調用后釋放),狀態碼:Z
2停止(進程收到SIGSTOP,
SIGSTP, SIGTIN, SIGTOU信號后停止運行運行):T
lps [參數]
2a顯示所有進程
2-A/-e顯示所有進程
2c顯示進程的真實名稱
2f顯示程序間的關系
2u指定用戶的所有進程
2-au顯示較詳細的資訊
2-aux顯示所有包含其他使用者的進程
2--lines<行數>每頁顯示的行數
lps常用命令:
2ps -A:顯示所有進程信息
2ps - ef:顯示所有進程信息,連同命令行
2ps u root:顯示指定用戶信息
2ps -ef | grep mysql:ps與grep組合用法,查找特定進程
2ps aux:列出目前所有的正在內存當中的程序
uUSER:該process所屬的使用者
uPID:該process的編號
u%CPU:該process使用掉的CPU資源百分比
u%MEM:該process所占用的物理內存百分比
uVSZ:該process使用掉的虛擬內存量(Kbytes)
uRSS:該process占用的固定的內存量(Kbytes)
uTTY:該process是在哪個終端機上面運作,若與終端機無關,則顯示?,另外,tty1-tty6是本機上面的登入者程序,若為pts/0等,則表示為由網絡連接進主機的程序。
uSTAT:該程序目前的狀態
uSTART:該process被觸發啟動的時間
uTIME:該process實際使用CPU運作的時間
uCOMMAND:該程序的實際指令
2根據CPU使用來升序排序:ps aux --sort -pcpu
2根據內存使用來升序排序:ps aux --sort -pmem
2ps與head、less等組合:ps aux |
head -n 20、ps aux | less
2如果想要查看現在有誰登入了服務器:ps -eo pid,user,args,參數-e顯示所有進程信息,-o參數控制輸出。Pid,User和Args參數顯示PID,運行應用的用戶和該應用。
2我們可以將ps命令和watch命令結合起來,動態顯示系統進程信息。這么種情況:
watch -n 1 ‘ps -aux --sort -pmem, -pcpu,通過CPU和內存的使用率來篩選進程,并且希望結果能夠每秒刷新一次。這樣與top相比,使用ps的好處是你能夠定義顯示的字段,你能夠選擇你想查看的字段。
?top命令:實時顯示系統中各個進程的資源占用狀況,包括進程ID、內存占用率、CPU占用率等
ltop
[參數]
2-d
<時間>:設置間隔時間
2-u <用戶名>:指定用戶名
2-p <進程號>:指定進程
2-n <次數>:循環顯示的次數
ltop常用命令:
2top
2top -d 5 / top -u root /top -p 22 /top -n 10
2top交互命令:
uk終止一個進程
uq退出程序
us改變兩次刷新之間的延遲時間(單位為s)。如果有小數,就換算成ms。輸入0值則系統將不斷刷新,默認值是5?s
uM根據駐留內存大小進行排序
uP根據CPU使用百分比大小進行排序
uT根據時間/累計時間進行排序
?kill命令:結束進程
lkill pid:結束進程
lkill -9 pid:強制結束進程
?netstat:用于顯示各種網絡相關信息
netstat的輸出結果可以分為兩個部分:
一個是Active Internet connections,稱為有源TCP連接,其中"Recv-Q"和"Send-Q"指的是接收隊列和發送隊列。這些數字一般都應該是0。如果不是則表示軟件包正在隊列中堆積。這種情況只能在非常少的情況見到。
一個是Active UNIX domain sockets,稱為有源Unix域套接口(和網絡套接字一樣,但是只能用于本機通信,性能可以提高一倍)。Proto顯示連接使用的協議,RefCnt表示連接到本套接口上的進程號,Types顯示套接口的類型,State顯示套接口當前的狀態,Path表示連接到套接口的其它進程使用的路徑名。
lnetstat命令常用參數:
2-a:顯示所有選項,默認不顯示LISTEN相關
2-t:僅顯示tcp相關選項
2-u:僅顯示udp相關選項
2-n:拒絕顯示別名,能顯示數字的全部轉化成數字。
2-l:僅列出有在Listen (監聽)的服務狀態
2-p:顯示建立相關鏈接的程序名
2-s:按各個協議進行統計
2-c:每隔一個固定時間,執行該netstat命令。
2提示:LISTEN和LISTENING的狀態只有用-a或者-l才能看到
lnetstat常用命令:
2列出所有端口:netstat -a
2列出所有tcp/udp端口:netstat -at /netstat -ut
2只顯示監聽端口:netstat -l
2netstat輸出中顯示PID和進程名稱:netstat-p
2持續輸出netstat信息:netstat -c :默認每秒更新1次
2找出程序運行的端口:netstat -ap | grep ssh
2找出運行在指定端口的進程:netstat -apn |grep 80/netstat -apn | grep ':80'
l舉例場景:服務器上Tomcat 8080端口起不來,老提示端口已經被占用
2第一步:ps -aux | grep tomcat
發現并沒有8080端口的Tomcat進程。
2第二步:使用命令:netstat –apn
查看所有的進程和端口使用情況:最后一欄是PID/Program
name,發現8080端口被PID為9658的Java進程占用。
2第三步:使用:ps -aux | grep java或者直接使用:ps -aux | grep pid查看,就可以明確知道8080端口是被哪個程序占用了!最后判斷是否使用KILL命令干掉!參見:http://www.cnblogs.com/benio/archive/2010/09/15/1826728.html
lnetstat參見:http://www.cnblogs.com/ggjucheng/archive/2012/01/08/2316661.html
?sync:強制將內存中的文件緩沖內容寫到磁盤
lLinux/Unix系統中,在文件或數據處理過程中一般先放到內存緩沖區中,等到適當的時候再寫入磁盤,以提高系統的運行效率。sync命令則可用來強制將內存緩沖區中的數據立即寫入磁盤中。用戶通常不需執行sync命令,系統會自動執行update或bdflush操作,將緩沖區的數據寫入磁盤。只有在update或bdflush無法執行或用戶需要非正常關機時,才需手動執行sync命令。
llinux系統為了提高讀寫磁盤的效率,會先將數據放在一塊buffer中。在寫磁盤時并不是立即將數據寫到磁盤中,而是先寫入這塊buffer中了。此時如果重啟系統,就可能造成數據丟失。sync命令用來flush文件系統buffer,這樣數據才會真正的寫到磁盤中,并且buffer才能夠釋放出來,flush就是用來清空buffer。sync命令會強制將數據寫入磁盤中,并釋放該數據對應的buffer,所以常常會在寫磁盤后輸入sync命令來將數據真正的寫入磁盤。如果不去手動的輸入sync命令來真正的去寫磁盤,linux系統也會周期性的去sync數據。
2、磁盤管理
?磁盤管理:df查看磁盤使用情況,du查看目錄/文件大小
ldf:用來檢查linux服務器的文件系統的磁盤空間占用情況。我們可以利用該命令來獲取硬盤被占用了多少空間,目前還剩下多少空間等信息。
2df -a:顯示所有文件系統的磁盤使用情況
2df -h:以人類易讀的格式輸出
2df -h /dev/sda1:顯示特定文件系統已使用的空間
2df -T:顯示所有文件系統的類型
2df -k:按塊大小輸出文件系統磁盤使用情況
2df -h --total:顯示所有文件系統的磁盤使用情況匯總
2df -t ext4:顯示特定文件系統類型的信息
2df -x ext4:用來在輸出中排出某些文件系統類型
2參考:https://linux.cn/article-6466-1.html
ldu:檢查目錄或者文件所占空間
du與df命令不同的不同du命令是查看當前指定文件或目錄(會遞歸顯示子目錄)占用磁盤空間大小。
2du?all.log:顯示指定文件所占空間
2du /zff/installpkg:查看指定目錄的所占空間
2du -ah log:文件和目錄都顯示
2du?log1.tar.gz?log2.tar.gz:顯示多個文件所占空間
2du?-c /var/log /usr/local:顯示幾個文件或目錄各自占用磁盤空間的大小,還統計它們的總和
2du -s:只顯示總和的大小
2du | sort?-nr | more:按照空間大小排序
2du?-h??--max-depth=1:輸出當前目錄下各個子目錄所使用的空間