一、Linux簡介
1、什么是Linux
1.1、Linux操作系統(tǒng):指GUN/Linux,采用Linux內(nèi)核的GUN操作系統(tǒng)窄刘。
1.2、嚴格說的話钩述,Linux不是一個操作系統(tǒng)项戴,Linux只是一個操作系統(tǒng)的內(nèi)核。內(nèi)核建立了計算機軟件與硬件之間通訊的平臺肤无,內(nèi)核提供系統(tǒng)服務先蒋,比如文件管理、虛擬內(nèi)存宛渐、設備I/O等竞漾。
2、Linux發(fā)行版本
(1)窥翩、RedHat业岁,(2)、CentOS寇蚊,(3)笔时、Ubuntu,(4)仗岸、SUSE允耿、(5)借笙、Debain
3、遠程登錄
通過ssh服務實現(xiàn)遠程登錄Linux系統(tǒng)较锡,默認ssh服務端口號為22业稼。Windows系統(tǒng)上遠程登錄客戶端有: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:查看當前登錄用戶的組內(nèi)成員
?groups zfsky:查看zfsky用戶所在的組以及組內(nèi)成員
?cat /etc/passwd:查看系統(tǒng)存在的所有用戶名
格式:root:x:0:0:root:/root:/bin/bash
l第一字段:用戶名
l第二字段:口令,映射到/etc/shadow文件中
l第三字段:UID
l第四字段:GID
l第五字段:用戶名全稱
l第六字段:用戶的主目錄所在位置
l第七字段:用戶所用shell的類型
?cat /etc/groups:查看系統(tǒng)存在的所有用戶組
2君编、系統(tǒng)目錄結(jié)構(gòu)
2.1 /root
根分區(qū)跨嘉,只有root用戶對此目錄擁有寫權(quán)限。
2.2 /bin
用戶可執(zhí)行文件吃嘿,此目錄包含二進制可執(zhí)行文件以及所有用戶的常用命令(如:ls , cp等)祠乃。
2.3 /sbin
系統(tǒng)可執(zhí)行文件,此目錄中的命令主要供系統(tǒng)管理員使用(如:iptables兑燥、reboot等)亮瓷。
2.4 /etc
配置文件,包含所有應用程序的配置文件降瞳,也包含啟動嘱支、關閉某個特定程序的腳本。
2.5 /dev
設備文件挣饥,包含設備文件(在Linux中除师,一切都被看做文件:終端設備、USB扔枫、磁盤等等都被看做文件)汛聚。
2.6 /proc
進程信息,所有系統(tǒng)進程的信息都包含在/proc目錄中短荐。
2.7 /var
變量文件倚舀,/var是一個可增長的目錄,包含變量文件(如忍宋,/var/log系統(tǒng)日志痕貌、/var/mail郵件)。
2.8 /usr
用戶程序糠排,為用戶應用程序存放可執(zhí)行文件舵稠、源代碼和文檔。
2.9 /home
用戶主目錄,用于存放用戶的私人文件柱查。
2.10 /boot
啟動加載文件廓俭,系統(tǒng)啟動時需要加載的文件。
2.11 /lib
系統(tǒng)庫文件唉工,/bin和/sbin中的可執(zhí)行文件需要/lib中庫文件的支持研乒,庫文件通常以"ld"或"ld*.so"的形式命名。
2.12 /opt
可選應用淋硝,用于安裝獨立軟件商的可選應用雹熬。
2.13 /mnt
掛載目錄,系統(tǒng)管理員可用于臨時掛載文件系統(tǒng)谣膳。
2.14 /media
可移動媒體設備竿报,掛載可移動媒體設備。
2.15 /src
src表示服務继谚,用于服務器的所有服務數(shù)據(jù)存儲在此目錄中烈菌。
3、目錄的基本操作
?ls命令:列出目錄的內(nèi)容
l語法:ls [選項] [目錄或文件夾]
l顏色含義:
2藍色:目錄
2綠色:可執(zhí)行文件
2紅色:壓縮文件
2淺藍色:鏈接文件
2灰色:其他文件
?cd命令:改變工作目錄
l語法:cd [
directory ]
?pwd命令:顯示當前工作目錄的絕對路徑
l語法:pwd
?mkdir命令:創(chuàng)建目錄
語法:mkdir [選項] dirname
?rmdir命令:刪除空目錄
l語法:rmdir [選項] dirname
4花履、文件的基本操作
?文件的移動:mv命令
l功能:為文件或目錄改名或?qū)⑽募蚰夸浻梢粋€目錄移到另一個目錄芽世。
l語法:mv [選項]源文件或目錄目標文件或目錄
?文件的復制:cp命令
l功能:將給出的文件或目錄拷貝到另一個文件或目錄中。
l語法:cp [選項]源文件或目錄目標文件或目錄
?文件的刪除:rm命令
l功能:刪除一個目錄中的一個或多個文件或目錄诡壁,它也可以將某個目錄及其下所有文件及子目錄均刪除济瓢。
l語法:rm [選項]文件...
5、文件操作權(quán)限
?每個文件或目錄的操作權(quán)限都有三組妹卿,每組用三位表示:文件屬主的讀旺矾、寫和執(zhí)行權(quán)限;屬主同組用戶的讀夺克、寫和執(zhí)行權(quán)限箕宙;系統(tǒng)中其他用戶的讀、寫和執(zhí)行權(quán)限懊直。
?chmod命令:改變文件或目錄的操作權(quán)限
l兩種用法:一種是包含字母和操作符表達式的文字設定法扒吁,一種是包含數(shù)字的數(shù)字設定法。
l具體的權(quán)限:【1】可讀r:4室囊;【2】可寫w:2;【3】可執(zhí)行x:1魁索。
6融撞、更改文件或目錄的屬主/組
?文件與目錄的歸屬是指文件與目錄的所有者與所屬的組。
?chgrp命令:改變文件或目錄所屬的組粗蔚。
l語法:chgrp [選項] group
filename
?chown命令:改變文件或目錄屬主和屬組尝偎。
l語法:chmod [選項]用戶或組文件
三、文件管理
1、目錄操作
?cd切換目錄
2致扯、文件操作
?創(chuàng)建文件夾:mkdir
lmkdir文件夾名:創(chuàng)建當前目錄下的文件夾
lmkdir a b c:同時創(chuàng)建多個并列文件夾
lmkdir -p /usr/local/zff創(chuàng)建指定路徑下的文件夾(如果創(chuàng)建的文件夾的父目錄不存在肤寝,連同父目錄一塊創(chuàng)建)
?刪除文件夾:rmdir
lrmdir文件夾名:刪除單個文件夾
lrmdir dirname1 dirname2 :刪除多個文件夾
lrmdir /usr/local/dirname刪除目錄層級下的文件夾
lrmdir -p /usr/local/dirname刪除帶層級的全部目錄
?創(chuàng)建文件:vi/touch
lvi/vim/touch file.txt:創(chuàng)建/編輯文件
?刪除文件:rm -rf
lrm -rf filename
?文件查找:find——根據(jù)文件的屬性進行查找,如文件名抖僵,文件大小鲤看,所有者,所屬組耍群,是否為空义桂,訪問時間,修改時間等蹈垢。
lfind / -name "test":查找系統(tǒng)中以test命名的文件或文件夾
lfind /home -name a*.log -o -name b*:查找home目錄下以a或b開頭的文件
lfind /home -user root:查找home目錄下屬主為root的文件或文件夾
l按照文件的更改時間來查找文件慷吊,-n表示文件更改時間距現(xiàn)在n時間以內(nèi),+n表示文件更改時間距現(xiàn)在n時間以前
?查看文件
lcat:一次性查看文本曹抬,適用于文本內(nèi)容比較少
2cat filename:一次性查看文本的全部內(nèi)容
2cat filename1 filename2:一次性查看多個文本的內(nèi)容
2cat -n filename:查看文本溉瓶,并對輸出的所有行編號
2cat -b filename:查看文本,并對輸出的非空行編號
lmore:用于分頁顯示文本谤民,適用于文本內(nèi)容較多
2more -num filename:制定屏幕的行數(shù)
2more +num filename:從行號num開始顯示
2more +/pattern filename:從字串(pattern)第一次出現(xiàn)行的前兩行開始顯示
2more -s filename:重復的空行壓縮成一個空行
注:SPACE:顯示接下來的k行文本
Q/q:退出
lless:用于分頁顯示文本嚷闭,適用于文本內(nèi)容較多
2less -N fileneme:顯示每行的行號
2less -s filename:顯示連續(xù)空行為一行
2less -i filename:忽略搜索時的大小寫
2less -m filename:顯示類似more命令的百分比
2less運行時可以輸入的命令有:
u空白鍵:向下翻動一頁
u[pagedown]:向下翻動一頁
u[pageup]:向上翻動一頁
u/字串:向下搜尋『字串』
u?字串:向上搜尋『字串』
un:重復前一個搜尋(與/或?有關)
uN:反向的重復前一個搜尋(與/或?有關)
uq:離開less這個程序
lhead:用于顯示文件文字區(qū)塊
2head filename:默認顯示文件前10行
2head -v filename:顯示文件名
2head -q filename:隱藏文件名
2head -n num filename:顯示前num行文字
2head -n -num filename:顯示除了文件最后num行外的所有內(nèi)容
2head -c num filename:顯示文件前num個字節(jié)的內(nèi)容
2head -c -num filename:顯示除了文件最后num個字節(jié)外的所有內(nèi)容
ltail:用于顯示文件文字區(qū)塊
2tail filename:默認顯示文件尾部10行
2tail -num filename/tail -n num filename:顯示尾部num行
2tail -100f filename:動態(tài)顯示最新100行內(nèi)容
注:tail常被用來查看最新的日志信息,我們就可以用tail -f來實時查看日志信息赖临。
lgrep:根據(jù)文件的內(nèi)容進行查找胞锰,會對文件的每一行按照給定的模式(patter)進行匹配查找。
2grep 'mysql' my.cnf:在my.cnf中查找含有mysql的字段
2grep -n 'mysql' my.cnf:在my.cnf中查找含有mysql的字段兢榨,同時顯示出行號
lcut:選取命令嗅榕,就是:將一段數(shù)據(jù)經(jīng)過分析,取出我們想要的內(nèi)容吵聪。一般來說凌那,選取信息通常是針對“行”來進行分析的,并不是整篇信息分析吟逝。
2cut命令從文件的每一行剪切字節(jié)帽蝶、字符和字段并將這些字節(jié)、字符和字段寫至標準輸出块攒。
如果不指定File參數(shù)励稳,cut命令將讀取標準輸入。必須指定-b囱井、-c或-f標志之一驹尼。
2cut命令參數(shù):
u-b:以字節(jié)為單位進行分割。這些字節(jié)位置將忽略多字節(jié)字符邊界庞呕,除非也指定了-n標志新翎。
u-c:以字符為單位進行分割程帕。
u-d:自定義分隔符,默認為制表符地啰。
u-f:與-d一起使用愁拭,指定顯示哪個區(qū)域。
u-n:取消分割多字節(jié)字符亏吝,僅和-b標志一起使用岭埠。如果字符的最后一個字節(jié)落在由-b標志的List參數(shù)指示的
范圍之內(nèi),該字符將被寫出顺呕;否則枫攀,該字符將被排除。
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
五、系統(tǒng)管理
1鳖粟、進程管理
?ps命令:Process Status社裆,用來顯示當前進程的狀態(tài),通過ps命令可以確定有哪些進程正在運行和運行的狀態(tài)向图、進程是否結(jié)束泳秀、進程有沒有僵死、哪些進程占用了過多的資源等榄攀。
llinux上進程有5種狀態(tài):
2運行(正在運行或在運行隊列中等待)嗜傅,狀態(tài)碼:R
2中斷(休眠中,受阻,在等待某個條件的形成或接受到信號),狀態(tài)碼:S
2不可中斷(收到信號不喚醒和不可運行,進程必須等待直到有中斷發(fā)生)檩赢,狀態(tài)碼:D
2僵死(進程已終止,但進程描述符存在,直到父進程調(diào)用wait4()系統(tǒng)調(diào)用后釋放)吕嘀,狀態(tài)碼:Z
2停止(進程收到SIGSTOP,
SIGSTP, SIGTIN, SIGTOU信號后停止運行運行):T
lps [參數(shù)]
2a顯示所有進程
2-A/-e顯示所有進程
2c顯示進程的真實名稱
2f顯示程序間的關系
2u指定用戶的所有進程
2-au顯示較詳細的資訊
2-aux顯示所有包含其他使用者的進程
2--lines<行數(shù)>每頁顯示的行數(shù)
lps常用命令:
2ps -A:顯示所有進程信息
2ps - ef:顯示所有進程信息,連同命令行
2ps u root:顯示指定用戶信息
2ps -ef | grep mysql:ps與grep組合用法贞瞒,查找特定進程
2ps aux:列出目前所有的正在內(nèi)存當中的程序
uUSER:該process所屬的使用者
uPID:該process的編號
u%CPU:該process使用掉的CPU資源百分比
u%MEM:該process所占用的物理內(nèi)存百分比
uVSZ:該process使用掉的虛擬內(nèi)存量(Kbytes)
uRSS:該process占用的固定的內(nèi)存量(Kbytes)
uTTY:該process是在哪個終端機上面運作偶房,若與終端機無關,則顯示?憔狞,另外蝴悉,tty1-tty6是本機上面的登入者程序,若為pts/0等瘾敢,則表示為由網(wǎng)絡連接進主機的程序。
uSTAT:該程序目前的狀態(tài)
uSTART:該process被觸發(fā)啟動的時間
uTIME:該process實際使用CPU運作的時間
uCOMMAND:該程序的實際指令
2根據(jù)CPU使用來升序排序:ps aux --sort -pcpu
2根據(jù)內(nèi)存使用來升序排序:ps aux --sort -pmem
2ps與head、less等組合:ps aux |
head -n 20簇抵、ps aux | less
2如果想要查看現(xiàn)在有誰登入了服務器:ps -eo pid,user,args庆杜,參數(shù)-e顯示所有進程信息,-o參數(shù)控制輸出碟摆。Pid,User和Args參數(shù)顯示PID晃财,運行應用的用戶和該應用。
2我們可以將ps命令和watch命令結(jié)合起來典蜕,動態(tài)顯示系統(tǒng)進程信息断盛。這么種情況:
watch -n 1 ‘ps -aux --sort -pmem, -pcpu,通過CPU和內(nèi)存的使用率來篩選進程愉舔,并且希望結(jié)果能夠每秒刷新一次钢猛。這樣與top相比,使用ps的好處是你能夠定義顯示的字段轩缤,你能夠選擇你想查看的字段命迈。
?top命令:實時顯示系統(tǒng)中各個進程的資源占用狀況,包括進程ID火的、內(nèi)存占用率壶愤、CPU占用率等
ltop
[參數(shù)]
2-d
<時間>:設置間隔時間
2-u <用戶名>:指定用戶名
2-p <進程號>:指定進程
2-n <次數(shù)>:循環(huán)顯示的次數(shù)
ltop常用命令:
2top
2top -d 5 / top -u root /top -p 22 /top -n 10
2top交互命令:
uk終止一個進程
uq退出程序
us改變兩次刷新之間的延遲時間(單位為s)。如果有小數(shù)馏鹤,就換算成ms征椒。輸入0值則系統(tǒng)將不斷刷新,默認值是5?s
uM根據(jù)駐留內(nèi)存大小進行排序
uP根據(jù)CPU使用百分比大小進行排序
uT根據(jù)時間/累計時間進行排序
?kill命令:結(jié)束進程
lkill pid:結(jié)束進程
lkill -9 pid:強制結(jié)束進程
?netstat:用于顯示各種網(wǎng)絡相關信息
netstat的輸出結(jié)果可以分為兩個部分:
一個是Active Internet connections湃累,稱為有源TCP連接勃救,其中"Recv-Q"和"Send-Q"指的是接收隊列和發(fā)送隊列。這些數(shù)字一般都應該是0脱茉。如果不是則表示軟件包正在隊列中堆積剪芥。這種情況只能在非常少的情況見到。
一個是Active UNIX domain sockets琴许,稱為有源Unix域套接口(和網(wǎng)絡套接字一樣税肪,但是只能用于本機通信,性能可以提高一倍)榜田。Proto顯示連接使用的協(xié)議,RefCnt表示連接到本套接口上的進程號,Types顯示套接口的類型,State顯示套接口當前的狀態(tài),Path表示連接到套接口的其它進程使用的路徑名益兄。
lnetstat命令常用參數(shù):
2-a:顯示所有選項,默認不顯示LISTEN相關
2-t:僅顯示tcp相關選項
2-u:僅顯示udp相關選項
2-n:拒絕顯示別名箭券,能顯示數(shù)字的全部轉(zhuǎn)化成數(shù)字净捅。
2-l:僅列出有在Listen (監(jiān)聽)的服務狀態(tài)
2-p:顯示建立相關鏈接的程序名
2-s:按各個協(xié)議進行統(tǒng)計
2-c:每隔一個固定時間,執(zhí)行該netstat命令辩块。
2提示:LISTEN和LISTENING的狀態(tài)只有用-a或者-l才能看到
lnetstat常用命令:
2列出所有端口:netstat -a
2列出所有tcp/udp端口:netstat -at /netstat -ut
2只顯示監(jiān)聽端口:netstat -l
2netstat輸出中顯示PID和進程名稱:netstat-p
2持續(xù)輸出netstat信息:netstat -c :默認每秒更新1次
2找出程序運行的端口:netstat -ap | grep ssh
2找出運行在指定端口的進程:netstat -apn |grep 80/netstat -apn | grep ':80'
l舉例場景:服務器上Tomcat 8080端口起不來蛔六,老提示端口已經(jīng)被占用
2第一步:ps -aux | grep tomcat
發(fā)現(xiàn)并沒有8080端口的Tomcat進程荆永。
2第二步:使用命令:netstat –apn
查看所有的進程和端口使用情況:最后一欄是PID/Program
name,發(fā)現(xiàn)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:強制將內(nèi)存中的文件緩沖內(nèi)容寫到磁盤
lLinux/Unix系統(tǒng)中骂删,在文件或數(shù)據(jù)處理過程中一般先放到內(nèi)存緩沖區(qū)中,等到適當?shù)臅r候再寫入磁盤四啰,以提高系統(tǒng)的運行效率宁玫。sync命令則可用來強制將內(nèi)存緩沖區(qū)中的數(shù)據(jù)立即寫入磁盤中。用戶通常不需執(zhí)行sync命令柑晒,系統(tǒng)會自動執(zhí)行update或bdflush操作欧瘪,將緩沖區(qū)的數(shù)據(jù)寫入磁盤。只有在update或bdflush無法執(zhí)行或用戶需要非正常關機時敦迄,才需手動執(zhí)行sync命令恋追。
llinux系統(tǒng)為了提高讀寫磁盤的效率,會先將數(shù)據(jù)放在一塊buffer中罚屋。在寫磁盤時并不是立即將數(shù)據(jù)寫到磁盤中苦囱,而是先寫入這塊buffer中了。此時如果重啟系統(tǒng)脾猛,就可能造成數(shù)據(jù)丟失撕彤。sync命令用來flush文件系統(tǒng)buffer,這樣數(shù)據(jù)才會真正的寫到磁盤中猛拴,并且buffer才能夠釋放出來羹铅,flush就是用來清空buffer。sync命令會強制將數(shù)據(jù)寫入磁盤中愉昆,并釋放該數(shù)據(jù)對應的buffer职员,所以常常會在寫磁盤后輸入sync命令來將數(shù)據(jù)真正的寫入磁盤。如果不去手動的輸入sync命令來真正的去寫磁盤跛溉,linux系統(tǒng)也會周期性的去sync數(shù)據(jù)焊切。
2、磁盤管理
?磁盤管理:df查看磁盤使用情況芳室,du查看目錄/文件大小
ldf:用來檢查linux服務器的文件系統(tǒng)的磁盤空間占用情況专肪。我們可以利用該命令來獲取硬盤被占用了多少空間,目前還剩下多少空間等信息堪侯。
2df -a:顯示所有文件系統(tǒng)的磁盤使用情況
2df -h:以人類易讀的格式輸出
2df -h /dev/sda1:顯示特定文件系統(tǒng)已使用的空間
2df -T:顯示所有文件系統(tǒng)的類型
2df -k:按塊大小輸出文件系統(tǒng)磁盤使用情況
2df -h --total:顯示所有文件系統(tǒng)的磁盤使用情況匯總
2df -t ext4:顯示特定文件系統(tǒng)類型的信息
2df -x ext4:用來在輸出中排出某些文件系統(tǒng)類型
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:顯示幾個文件或目錄各自占用磁盤空間的大小,還統(tǒng)計它們的總和
2du -s:只顯示總和的大小
2du | sort?-nr | more:按照空間大小排序
2du?-h??--max-depth=1:輸出當前目錄下各個子目錄所使用的空間