1. Linux下的shell
現(xiàn)在的Linux發(fā)行版都以bash作為默認(rèn)的shell。shell是一個(gè)以C語(yǔ)言編寫(xiě)的程序题涨,是用戶和操作系統(tǒng)內(nèi)核之間的通信橋梁。為了加快命令的運(yùn)行,shell中定義了一些內(nèi)置命令服傍。cd、pwd骂铁、exit吹零、echo等都是屬于bash內(nèi)置命令。當(dāng)用戶登錄后拉庵,shell以及內(nèi)置命令就被裝載到內(nèi)存灿椅。除內(nèi)置命令外,Linux系統(tǒng)上還有很多可執(zhí)行文件名段。放在/bin/ls中阱扬。這些命令只有被調(diào)用時(shí),才由系統(tǒng)裝入內(nèi)存執(zhí)行伸辟。
shell執(zhí)行命令解釋的具體過(guò)程為:用戶輸入命令提交后麻惶,shell程序首先檢測(cè)它是否為內(nèi)置命令,如果是信夫,就通過(guò)shell內(nèi)部的解釋器將命令解釋為系統(tǒng)調(diào)用窃蹋,然后提交給內(nèi)核執(zhí)行;如果不是静稻,shell會(huì)按照用戶給出的路徑或者根據(jù)系統(tǒng)環(huán)境變量的配置信息在硬盤(pán)尋找對(duì)應(yīng)的命令警没,然后將其調(diào)入內(nèi)存,最后再將其解釋為系統(tǒng)調(diào)用振湾,提交給內(nèi)核執(zhí)行杀迹。
- shell通配符
1). *:匹配任意一個(gè)或多個(gè)字符
2). ?:匹配任意一個(gè)字符
3). []:匹配任何包括在方括號(hào)內(nèi)的單字符 - shell重定向
Linux系統(tǒng)打開(kāi)3個(gè)文件,即標(biāo)準(zhǔn)輸入(鍵盤(pán))押搪、標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤輸出(屏幕)树酪。重定向就是不使用系統(tǒng)默認(rèn)的標(biāo)準(zhǔn)輸入/輸出浅碾。
1). 輸入重定向 <與<<
# 用wc命令統(tǒng)計(jì)輸入給它的文件的行數(shù)、單詞數(shù)和字符數(shù)
wc < /etc/shadow
2). 輸出重定向 >與>>
# 將ps -ef輸出的進(jìn)程信息全部輸入到ps.txt文件而不是屏幕
ps -ef > ps.txt
# 用more命令查看ps.txt文件(不想覆蓋文件续语,可以使用\>\>)
more file1 file2 file3 > file
3). 錯(cuò)誤重定向---2>
# 解壓過(guò)程出錯(cuò)輸出錯(cuò)誤消息到error.txt文件
tar zxvf text.tar.gz 2> error.txt
- shell管道---將前一個(gè)命令的輸出作為后一個(gè)命令的輸入
# 將/etc目錄及子目錄下的所有文件分屏顯示
ls -al /etc/* |more
2. 系統(tǒng)管理與維護(hù)
- ls命令---列出文件及目錄
# 來(lái)處當(dāng)前目錄下的所有文件及目錄(包括隱藏文件)
ls -a
# 除文件名外垂谢,列出權(quán)限、使用者和大小等詳細(xì)信息
ls -l
# 列出home目錄下的文件及目錄
ls -l /home
# 列出所有文件及其詳細(xì)信息
ls -al
- pwd---獲取當(dāng)前工作目錄的絕對(duì)路徑
- cd---改變當(dāng)前工作目錄
- passwd---修改密碼
- su---改變用戶身份
#普通用戶成為超級(jí)用戶
$su -
- clear---清除屏幕信息
- man---顯示指定幫助信息
- who---顯示當(dāng)前登錄到系統(tǒng)的用戶
- w---顯示登錄到系統(tǒng)的用戶信息
- uname---顯示操作系統(tǒng)相關(guān)信息
選項(xiàng) | 說(shuō)明 |
---|---|
-a | 顯示操作系統(tǒng)全部信息 |
-m | 顯示CPU類(lèi)型是32位還是64位 |
-n | 顯示操作系統(tǒng)主機(jī)名 |
-s | 顯示操作系統(tǒng)類(lèi)型 |
-r | 顯示操作系統(tǒng)內(nèi)核版本 |
- uptime---輸出系統(tǒng)任務(wù)隊(duì)列信息
# 輸出當(dāng)前系統(tǒng)時(shí)間疮茄、開(kāi)機(jī)到現(xiàn)在運(yùn)行時(shí)間滥朱、目前有多少用戶在線和系統(tǒng)平均負(fù)載等
uptime
16:03:08 up 4days, 1:49, 2 users, load average: 0.12, 0.20, 0.17
系統(tǒng)時(shí)間是16:03:08,運(yùn)行已經(jīng)4天1小時(shí)49分力试,有2個(gè)用戶在線徙邻,1分鐘、5分鐘懂版、15分鐘前到現(xiàn)在的平均負(fù)載為0.12鹃栽、0.20、0.17
- free---顯示內(nèi)存狀態(tài)
- ps---顯示進(jìn)程動(dòng)態(tài)
常用選項(xiàng)組合ps -ef躯畴、ps aux - top---包括了uptime命令的信息民鼓、進(jìn)程和CPU狀態(tài)統(tǒng)計(jì)山林,以及進(jìn)程詳情
3. 文件管理與編輯
- mkdir---創(chuàng)建目錄
# 遞歸創(chuàng)建目錄
mkdir -p /home/user1/user2
- more---文件內(nèi)容分屏顯示
# 分屏顯示Makefile
more Makefile
# 分屏顯示Makefile,每屏10行焕阿,清除前一屏信息
more Makefile -c -10 Makefile
Enter鍵:逐行追加到屏幕,空格鍵:顯示下一屏
- cat---輸出文件內(nèi)容
- grep---文本過(guò)濾
grep根據(jù)指定的字符串枣申,對(duì)文件的每一行進(jìn)行搜索嚷缭,如果找到了這個(gè)字符串饮亏,就輸出該行的內(nèi)容。
格式:grep [選項(xiàng)] 字符串 文件名
選項(xiàng) | 說(shuō)明 |
---|---|
-A NUM | 除了列出符合條件的行外阅爽,同時(shí)列出行后NUM行 |
-c | 只顯示符合條件的行數(shù) |
-f file | 事先將要搜索的樣式寫(xiě)入文件路幸,每行一個(gè)樣式,然后以這個(gè)文件作為條件進(jìn)行搜索 |
-i | 搜索時(shí)忽略大小寫(xiě) |
-n | 在搜索結(jié)果中顯示行號(hào) |
-B NUM | 與選項(xiàng)-A相反付翁,除列出符合條件的行外简肴,同時(shí)列出前NUM行 |
# 列出install.log文件中含有RPM字符串的行
grep RPM install.log
# 列出install.log文件中含有rpm字符串的行,忽略大小寫(xiě)百侧,并標(biāo)識(shí)出每行的具體行號(hào)
grep -ni rpm install.log
- rm---刪除文件或目錄
選項(xiàng) | 說(shuō)明 |
---|---|
-r | 遞歸刪除砰识,不指定,rm將無(wú)法刪除目錄 |
-f | 不用給出提示 |
-i | 刪除前進(jìn)行確認(rèn) |
rm -rf的使用要慎重佣渴,一旦被刪就不能恢復(fù)辫狼。必要時(shí)使用rm -ri來(lái)逐個(gè)確認(rèn)要?jiǎng)h除的文件。
- touch---創(chuàng)建文件辛润,或改變文件的訪問(wèn)和修改時(shí)間
- ln---創(chuàng)建鏈接
Linux下有硬鏈接和軟鏈接兩種膨处,硬鏈接如同對(duì)源文件的多個(gè)物理備份,只有所有硬鏈接文件被刪除后,源文件才被刪除真椿。軟鏈接如同Windows中的快捷方式秦叛。
格式:ln [選項(xiàng)] 源文件 目標(biāo)目錄
# 將/etc/inittab文件硬鏈接到/opt/backup目錄下
ln /etc/inittab /opt/backup
ll /opt/backup/inittab
total 8
-rw-r--r-- 2 root root 1666 Jul 19 11:17 /opt/backup/iniitab # 完全感知不到源文件的存在
ll /etc/inittab
-rw-r--r-- 2 root root 1666 Jul 19 11:17 /etc/inittab
# 將/etc/inittab文件軟鏈接到/opt下
ln -s /etc/inittab /opt
ll /opt/inittab
total 4
lrwxrwxrwx 1 root root 12 Jul 20 17:57 /opt/inittab -> /etc/inittab
- file---顯示文件類(lèi)型
- cp--文件目錄拷貝
# 將當(dāng)前目錄下的所有文件復(fù)制到/tmp目錄下
cp -r ./* /tmp
# 將/home/oracle目錄及其子目錄下的全部文件復(fù)制到/home/ixdba下
cp -r /home/oracle /home/ixdba
- find---在指定路徑下查找指定文件
需要多加練習(xí) - split---分割文件為多個(gè)文件
- mv---移動(dòng)文件
格式:mv [-i] 源文件或目錄 目的文件或目錄
4. 壓縮與解壓
- tar---歸檔
# 將/etc目錄下的所有文件打包并壓縮,設(shè)置大報(bào)名為etc.tar.gz瀑粥,同時(shí)保存到/opt目錄下
tar -zcvf /opt/etc.tar.gz /etc # gzip壓縮
tar -jcvf /opt/etc.tar.bz2 /etc # bzip2壓縮
# 排除性打包:打包/home目錄和/etc目錄,排除/home下的ixdba目錄
tar -exclude /home/ixdba -zcvf myfile.tar.gz /home/* /etc
# 查閱壓縮包的內(nèi)容
tar -ztvf /opt/etc.tar.gz
tar -jtvf /opt/etc.tar.bz2
# 解壓壓縮包
tar -zxvf /opt/etc.tar.gz
tar -jxvf /opt/etc.tar.bz2
# 解壓壓縮包中指定文件
tar -zxvf /opt/etc.tar.gz etc/inittab
# 解壓壓縮包中指定目錄
tar -zxvf /opt/etc.tar.gz -C /tmp
-
dd---用指定大小的塊轉(zhuǎn)換或復(fù)制文件三圆,同時(shí)可以對(duì)設(shè)備進(jìn)行備份
格式:
dd if="input_file" of="output_file" bs="block_size" count="number"
bs:指定一個(gè)塊的大小狞换,默認(rèn)512字節(jié)
count:塊的數(shù)量
將/etc/inittab文件備份到/opt/inittab.bak中
dd if=/etc/inittab of=/opt/inittab.bak
3+1 records in
3+1 records out
3+1表示有3個(gè)完整的512字節(jié)的塊,1個(gè)未滿512字節(jié)的塊
將/dev/sda2整個(gè)磁盤(pán)分區(qū)進(jìn)行備份舟肉,保存?zhèn)浞菸募?opt目錄(輸出路徑不能相同修噪,否則怎么都備份不完)
dd if=/dev/sda2 of=/opt/sda2.back
恢復(fù)備份包到相應(yīng)的分區(qū)(要先卸載目標(biāo)分區(qū))
dd if=/opt/sda2.back of=/devl/sda2
###5. 磁盤(pán)管理與維護(hù)
* df---檢查磁盤(pán)空間占用情況
查看當(dāng)前系統(tǒng)磁盤(pán)分區(qū)情況
df -hT
* du---顯示文件或目錄占用的磁盤(pán)空間
顯示當(dāng)前目錄下所有文件的大小
du -sh ./*
顯示Linux系統(tǒng)/etc目錄的總大小
du -sh /etc
sync---強(qiáng)制將內(nèi)存數(shù)據(jù)寫(xiě)回磁盤(pán),以免數(shù)據(jù)丟失(默認(rèn)每個(gè)3秒系統(tǒng)會(huì)自動(dòng)執(zhí)行一次sync)
###6. 網(wǎng)絡(luò)設(shè)置與維護(hù)
* ifconfig---配置網(wǎng)絡(luò)或顯示當(dāng)前網(wǎng)絡(luò)狀態(tài)(root用戶的命令)
命令:ifconfig [選項(xiàng)] [interface] [inet|up|down|netmask|addr|broadcast]
ifconfig命令選項(xiàng)說(shuō)明
|選項(xiàng)|說(shuō)明|
|------|------|
|-a|顯示所有的網(wǎng)絡(luò)接口信息路媚,包括活動(dòng)和非活動(dòng)的|
|-s|僅顯示每個(gè)接口的摘要信息黄琼,是有關(guān)接口活動(dòng)性的,每個(gè)接口顯示一行信息|
|-v|如果某個(gè)網(wǎng)絡(luò)接口出現(xiàn)錯(cuò)誤整慎,將返回錯(cuò)誤信息|
1). interface:網(wǎng)絡(luò)接口名脏款,類(lèi)似于eth0、eth1和lo等(CentOS7.×版本中裤园,為enp0s1撤师、enp0s2),表示第1塊網(wǎng)卡拧揽、第2塊網(wǎng)卡和回環(huán)接口
2). up:激活一個(gè)網(wǎng)絡(luò)接口
3). down:禁用一個(gè)網(wǎng)絡(luò)接口
4). netmask:為一個(gè)指定的網(wǎng)絡(luò)接口指定子網(wǎng)掩碼
5). addr:為網(wǎng)絡(luò)接口指定IP地址
6). broadcast:為指定的接口設(shè)置廣播地址
顯示所有網(wǎng)絡(luò)接口信息
ifconfig
enp03: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.81.232 netmask 255.255.255.0 broadcast 192.168.81.255
inet6 fe80:a00:27ff:fe90:55 prefixlen 64 scopeid 0x20<link>
enter 08:00:27:90:00:55 txqueuelen 1000 (Ethernet)
RX packets 20378 bytes 1845248 (1.7 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 958 bytes 147065 (143.6 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 0 (Local Loopback)
RX packets 4 bytes 336 (336.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 4 bytes 336 (336.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
從上面可以看出以下幾點(diǎn):
第1行:UP代表網(wǎng)卡開(kāi)啟狀態(tài),RUNNING代表網(wǎng)卡上的網(wǎng)線處于連接狀態(tài)剃盾,MULTICAST代表支持組播,MTU:1500代表最大傳輸單元為1500字節(jié)淤袜。
第2行:依次顯示網(wǎng)卡的IP地址痒谴、子網(wǎng)掩碼和廣播地址
第3行:IPv6地址的配置信息
第4行:ether后面表示硬件網(wǎng)卡的MAC地址。Ethernet表示連接類(lèi)型為以太網(wǎng)
第5铡羡、6行:顯示網(wǎng)卡接收數(shù)據(jù)包的統(tǒng)計(jì)信息和接收錯(cuò)誤的統(tǒng)計(jì)信息
第7积蔚、8行:顯示網(wǎng)卡發(fā)送數(shù)據(jù)包的統(tǒng)計(jì)信息和發(fā)送錯(cuò)誤的統(tǒng)計(jì)信息
> 用ifconfig命令配置的網(wǎng)卡信息,在網(wǎng)卡重啟或機(jī)器重啟后蓖墅,所有的配置都會(huì)失效库倘,如果要讓網(wǎng)卡配置永久生效,需要修改網(wǎng)卡的配置文件论矾。
在網(wǎng)卡enp0s3上配置兩個(gè)IP地址教翩,分別為192.168.60.136、192.168.66.138贪壳,子網(wǎng)掩碼為255.255.255.0
ifconfig enp0s3 192.168.60.136 netmask 255.255.255.0
ifconfig enp0s3:0 192.168.66.138 netmask 255.255.255.0
此時(shí)用ifconfig命令查看饱亿,就可以看到兩個(gè)網(wǎng)卡的信息了,分別是enp0s3和enp0s3:0
修改網(wǎng)卡MAC地址為新的MAC地址
ifconfig enp0s3hw enther xx:xx:xx:xx:xx:xx
將網(wǎng)卡enp0s3禁用后再啟用
ifconfig enp0s3 down
ifconfig enp0s3 up
* scp---將文件或目錄從一個(gè)Linux系統(tǒng)復(fù)制到另外一個(gè)Linux系統(tǒng)
將本地文件復(fù)制到遠(yuǎn)程Linux
scp /home/ixdba/etc.tar.gz root@192.168.60.168:/tmp
將遠(yuǎn)程Linux文件復(fù)制到本地
scp root@192.168.60.133:/home/idxdba/etc.tar.gz /tmp
將本地/etc目錄中所有文件及子目錄復(fù)制到遠(yuǎn)程Linux系統(tǒng)root用戶的/opt目錄中
scp -r /etc root@192.168.60.135:/opt
* netstat---顯示本機(jī)運(yùn)行端口和路由表信息
格式:netstat [選項(xiàng)]
|選項(xiàng)|說(shuō)明|
|------|------|
|-a|顯示本機(jī)所有連接和監(jiān)聽(tīng)端口|
|-n|以網(wǎng)絡(luò)IP地址的形式顯示當(dāng)前建立的有效連接和端口|
|-r|顯示路由表信息|
|-s|顯示按協(xié)議的統(tǒng)計(jì)信息。默認(rèn)情況下彪笼,將顯示IP钻注、IPv6、ICMP配猫、ICMPv6幅恋、TCP、TCPv6泵肄、UDP和UDPv6的統(tǒng)計(jì)信息|
|-v|顯示當(dāng)前的有效連接捆交,與-n選項(xiàng)類(lèi)似|
|-t|顯示所有的TCP協(xié)議連接情況|
|-u|顯示所有的UDP協(xié)議連接情況|
|-c<秒數(shù)>|后面跟的秒數(shù),表示每隔幾秒就刷新顯示一次|
|-i|顯示自動(dòng)配置接口的狀態(tài)|
|-l|僅顯示連接狀態(tài)為L(zhǎng)ISTEN的服務(wù)的網(wǎng)絡(luò)狀態(tài)|
|-p|顯示連接對(duì)應(yīng)的PID與程序名|
顯示當(dāng)前系統(tǒng)的路由信息
netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 192.168.81.250 0.0.0.0 UG 0 0 0 enp0s3
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 enp0s3
從上面可以看出腐巢,當(dāng)前系統(tǒng)的默認(rèn)網(wǎng)關(guān)是192.168.81.250品追,對(duì)應(yīng)的網(wǎng)絡(luò)接口為enp0s3
顯示有效的TCP連接
netstat -an
顯示已啟動(dòng)的網(wǎng)絡(luò)連接、端口信息以及對(duì)應(yīng)的進(jìn)程ID和服務(wù)名
netstat -tlnpu
顯示處于連接狀態(tài)的資源信息
netstat -atunp
* traceroute---顯示網(wǎng)絡(luò)數(shù)據(jù)包傳輸至指定主機(jī)的路徑信息冯丙、追蹤傳輸路由狀態(tài)
命令格式:traceroute [選項(xiàng)] [遠(yuǎn)程主機(jī)名或IP地址] [數(shù)據(jù)包大小]
|選項(xiàng)|說(shuō)明|
|------|------|
|-i<網(wǎng)絡(luò)接口>|使用指定的網(wǎng)絡(luò)接口發(fā)送數(shù)據(jù)包|
|-n|直接使用IP地址而不使用主機(jī)名|
|-v|詳細(xì)顯示命令的執(zhí)行過(guò)程|
|-w<超時(shí)秒數(shù)>|設(shè)置等待遠(yuǎn)程主機(jī)回應(yīng)的時(shí)間|
|-x|開(kāi)啟或關(guān)閉對(duì)數(shù)據(jù)包的正確性檢驗(yàn)|
|-s<來(lái)源ip>|設(shè)置本地主機(jī)發(fā)送數(shù)據(jù)包的IP地址|
|-g<網(wǎng)關(guān)地址>|設(shè)置來(lái)源的路由網(wǎng)關(guān)肉瓦,最多可設(shè)置8個(gè)|
跟蹤從本機(jī)到網(wǎng)站www.ixdba.net的數(shù)據(jù)包發(fā)送過(guò)程
traceroute -i eth0 -s 192.168.60.251 -w 10 www.ixdba.net 100
上面指定eth0網(wǎng)絡(luò)接口發(fā)送數(shù)據(jù)包,IP為192.168.60.251胃惜,并設(shè)置超時(shí)時(shí)間為10秒泞莉,最后設(shè)置發(fā)送數(shù)據(jù)包的大小為100kb。輸出可以看到路由迂回蛹疯,每個(gè)路由節(jié)點(diǎn)做3次時(shí)間測(cè)試戒财。
如果在指定的時(shí)間內(nèi),traceroute檢測(cè)不到某個(gè)路由節(jié)點(diǎn)的回應(yīng)捺弦,會(huì)在屏幕上輸出"*"饮寞,表示此節(jié)點(diǎn)無(wú)法通過(guò)。由于traceroute是利用ICMP連接的列吼,有些網(wǎng)絡(luò)設(shè)備(如防火墻)可能會(huì)屏蔽ICMP通過(guò)的權(quán)限幽崩,因此也會(huì)出現(xiàn)節(jié)點(diǎn)沒(méi)有回應(yīng)的狀態(tài),分析網(wǎng)絡(luò)問(wèn)題的需要知道這點(diǎn)寞钥。
* telnet---與遠(yuǎn)程主機(jī)通信或獲取遠(yuǎn)程主機(jī)對(duì)應(yīng)端口的信息
通過(guò)telnet協(xié)議登錄到開(kāi)啟了telnet服務(wù)的遠(yuǎn)程主機(jī)上(不輸入23端口也是可以的慌申,因?yàn)閠elnet默認(rèn)尋找的端口就是23)
telnet 192.168.60.123 23
查看某臺(tái)Linux系統(tǒng)的22和80短偶是否打開(kāi)以及分別開(kāi)啟了什么服務(wù)
telnet 192.168.60.88 22
如果 www.ixdba.net對(duì)應(yīng)的80端口開(kāi)啟,輸入get命令將顯示端口對(duì)應(yīng)的服務(wù)類(lèi)型
telnet www.ixdba.net 80
get
* wget---從網(wǎng)絡(luò)上下載某個(gè)軟件