第2部-重要目錄結構詳解html
/dev/ 設備目錄linux
/etc/ 系統配置及服務配置文件,啓動命令的目錄nginx
/proc 顯示內核及進程信息的虛擬文件系統面試
/tmp 臨時文件目錄,公共廁所,客廳正則表達式
/home 普通用戶家目錄,大臣的家apache
/root 超級管理員的家目錄,皇宮windows
/var 變化的目錄,通常是日誌文件,cache的目錄安全
/usr 用戶程序,及數據、幫助文件、二進制命令等的目錄服務器
/bin和/sbin和/usr/sbin 用戶命令的目錄網絡
省略……
必需要掌握的Linux目錄路徑知識
/etc/sysconfig/network-scripts/ifcfg-eth0 配置網絡地址及GW等
/etc/init.d/network restart 重啓網卡生效(影響全部網卡)
ifdown eth0&&ifup eth0 只針對eth0網卡
經過setupà」network configuration」 修改網卡配置文件就是在改這個文件
4. Linux服務器客戶端dns重要配置文件及實戰詳解
/etc/resolv.conf 設置Linux本地的客戶端DNS的配置文件,能夠實現域名和IP的互相解析(網卡配置優先此配置文件)
Setupà「network configuration」à「DNS configuration」==/etc/resolv.conf配置
上述設置其實是修改/etc/resolv.conf這個文件
負責域名和IP互相解析的服務就是DNS(domain name system)
不要在網卡配置文件裏配置DNS,而是在/etc/resolv.conf裏配。
小結:
建議:工做環境中在網卡配置文件中進行設置
5. Linux服務器主機名解析重要文件
# hostname /etc/hosts 查看主機名
# vi /etc/hosts 配置主機文件名
#tail -l /etc/hosts 查看IP地址和主機名
在互聯網中可經過訪問主機名或域名去訪問IP,在hosts文件中配置號IP對應的主機名便可。
例:可把任一個IP(192.168.100.11)與www.baidu.com解析在一塊兒,訪問百度則去了IP對應的網站。
總結:/etc/hosts : 局域網、主機名和IP解析,至關於局域網的DNS工具。
⑴ host文件在企業裏的做用
a. 開發、產品、測試等人員,用於經過正式的域名測試產品。
b.服務器之間的調用能夠用域名(內部的DNS),方便遷移。
⑵ /etc/sysconfig/network 可修改機器名及網卡啓動,網關等配置
a. vi /etc/sysconfig/network network也可配置網管,是主機名的配置文件,更改後永久生效。
b. hostname 主機名 同時修改在運行中的服務器,用此命令更改後,當前生效。
c. cat /etc/sysconfig/network 查看network文件內容。
#df -h 磁盤掛載分區信息
fstab做用: 設置文件系統掛載信息的文件,使得開機可以自動掛載磁盤分區。
man fstab 查看fstab文件幫助信息。
例:
要被掛載的設備(磁盤分區) | 掛載點(要掛載到哪一個目錄) | 文件類型 | 掛載選項(只讀、可寫) | 是否備份(0不備份;1備份) | 文件系統有問題,是否檢查(0不檢查;1檢查) |
tmpfs | /dev/shm | tmpfs | defaults | 0 | 0 |
devpts | /dev/pts | devpts | gid=5,mode=620 | 0 | 0 |
sysfs | /sys | sysfs | defaults | 0 | 0 |
proc | /proc | proc | defaults | 0 | 0 |
例:
# mount -t ext4 -o loop,noatime,noexec /dev/sdb/ /mnt
# mount -t ext4 -o noexec /dev/sda /mnt 手動掛載
先格式化:mkfs. ext4 /dev/sdb/
查看掛載分區: df -h
卸載掛載分區:umount /mnt
/dev/sdb /mnt ext4 loop,noatime,noexec 0 0
測試手動掛載:
1. 建立了一個虛擬的塊設備。
dd if=/dev/zero of=/dev/sdb/ bs=4906 count=100
2. 格式化
mkfs. ext4 /dev/sdb
3. 掛載
mount -t ext4 -o loop,noatime,noexec /dev/sdb/ /mnt
fsck -A磁盤檢查(不要檢查好磁盤,可能壞掉),卸載狀態檢查。
第一列掛載的設備,能夠是設備或UUID,或磁盤標籤。
fstab出問題修復:
1. 開機提示,輸入密碼,修復。
2. 救援模式:rescure rescue
若是/etc/fstab 爲只讀狀態,用mount -o rw,remount / 修改後再編寫
讓一個程序開機啓動
1. chkconfig (/etc.int.d/sshd)
2. 把程序放入 /etc/rc.local (若是沒有特別要求,選擇rc.local啓動)
mount掛載和fstab的區別:
NFS網絡文件系統掛載時,網卡還沒起,就已經加載fstab了,網絡文件系統只能用rc.local 啓動,不適合fstab .
/etc/inittab做用:設定系統啓動時init進程把系統設置成什麼樣的runlevel運行級別及加載相關級別對應啓動文件設置。
cat /etc/inittab 查看運行級別
/etc/init.d (yum/rpm安裝的軟件服務都在該目錄下)
/etv/profile (定義變量,包括系統的和自定義的)
/etc/profile.d (該目錄放程序和腳本,重啓後便執行)
/etc/motd (該目錄存放啓動執行的字符串)
cat /etc/redhat-release 查看Linux版本號
/etc/group 設定用戶的組名與相關信息
/etc/passwd 帳號信息文件
/etc/shadow 密碼信息文件
/etc/sudoers 能夠執行使用sudo命令的配置文件
/etc/securetty 設定哪些終端可讓root登錄
/etc/login.defs 全部用戶登錄時的缺省配置
/etc/modprobe.conf 內核模塊額外參數設定
* /etc/syslog.conf 日誌設置文件 限Centos 5.x
* /etc/rsyslog.conf 日誌設置文件 限Centos 6.x
* /usr/local 這個目錄通常是用來存放用戶自編譯安裝軟件的存儲目錄。經過源碼包安裝的軟件,若是沒有特別指定安裝目錄,便安裝在這個目錄中。
至關於windows中c:\program files文件夾。
/usr/src 內核源碼存放目錄,好比下面有內核源碼目錄,好比:Linux-2.xxx.xx目錄等。
1. rpm -ivh 包名.rpm
2. yum install 包名 (yum update 包名 更新軟件包)
/var 日誌文件
/var/log 各類系統日誌存放地
* /var/log/messages 系統信息默認日誌文件,很是重要。按周自動輪循。
/var/log/secure 安全日誌,SSH鏈接日誌
/var/spool/cron/root 定時任務crond配置文件。
/pro 下的重要路徑知識
* /pro 虛擬目錄,是內存的映射,內核和進程的虛擬文件系統的信息
* /pro/version 內核版本
* /pro/sys/kernel 系統內核功能
* /pro/cpuinfo 關於處理器的信息。如類型、廠家、型號和性能等。
* /pro/meminfo 系統內存信息,free -m
/proc/devices 當前運行內核所配置的全部設備清單
/proc/dma 當前正在使用的DMA通道
* /proc/filesystems 當前運行內核所配置的文件系統
/pro/interrupts 正在使用的中斷,和曾經有多少箇中斷。
/proc/ioports 當前正在使用的I/O端口
* /pro/loadavg 系統負載平均值信息
** 有關目錄結構的總結: http://yangrong.blog.51cto.com/6945369/1288072
1. 學會總結是學好運維的重要前提。
2. 經過案例或例子來總結一個技術點或者命令。
3. 畫一張邏輯圖,形象的卡通記憶這個知識技術點。
4. 經過管道過濾數據時,最好先輸出結果,而後回退再使用管道看看結果過濾。
學習博客資源:
1. 億圖(專業原理圖)基本技巧分享:http://v.youku.com/v.show/id_XOTEZOTKZMjMz.html
2. 2015 年學習方法分享:(密碼:oldboy) http://v.youku.com/v_show/id_XOTEwNTYyMjQw.html
3. 學會使用搜索引擎查找內容: http://www.tudou.com/programs/view/clnRk05L5hk/
考題: 如何過濾出已知當前目錄下 raymond 中的全部一級目錄(提示:不包含raymond目錄下面目錄子目錄及隱藏目錄,即只能是一級目錄)
答案:a. ls -l | grep "^d" (^表示以xxx開頭,^raymond,以raymond開頭)
b. ls -lf | grep /
c. ls -lf | grep "1$" (1$以"1"結尾的)
ls -lF (F給不一樣的文件類型加標識號,例*,/,@,=)
以16節考題爲例的 tfind方法:
1. find / -maxdepth | -type d 2. find /raymond -maxdepth 1 -type d ! -name "raymond"
以16節考題爲例的 tfind方法: tree -L 1 -d
運維思想:當一個命令的輸出,含有咱們須要的內容的時候,咱們要想到這個命令可能會有對應的參數直接顯示,咱們須要的內容。
awk,sed的過濾
1. ls -lF | awk '/^d/'
2. ls -lF | sed -n '/^d/p'
(cd - 切換到更改前的上一目錄)(cd . 當前目錄 )(cd .. 上級目錄)(cd ~ 返回家目錄)
(ls -p 給目錄加斜線;-r reverse反轉排序;-他按修改時間排序) (ls,grep) --color = auto 給輸出的不一樣類型文件加不一樣顏色。
企業面試題:已知apache服務的訪問日誌按天記錄在服務器本地目錄/opt/logs下,因爲磁盤空間如今要求只能保留最近7天。訪問日誌!請問如何解決?請給出解決辦法或配置
或處理。 提示:能夠從apache服務配置上着手,也能夠從生成出來的日誌上着手。
find /oldboy/test -type f -name "access *.log" -mtime +7 | xargs rm -f (-exec rm -f { } \ ;)
find -ctime 按文件修改時間查找 -atime 按文件訪問時間查找
tail -f /var/log/message 跟蹤一個文件結尾的變化
tailf /var/log/message
tail -F /var/log/message
例:打印配置文件nginx.conf內容的行號及內容,該如何作?
1. cat -n oldboy.txt
2. nl oldboy.txt
3. grep -n "." nginx.conf grep -n 「abc」 oldboy.txt 把匹配abc字符串的行號打印出來。
4. less -N nginx.conf
5. awk '{print NR, $0}' message NR表示行號,$0表示整行內容
6. sed '=' /etc/rsyslog.conf
反覆看視頻
chkconfig 管理腳本的要求
1. 執行/etc/init.d/oldboy restart 格式正常服務
2. 腳本里開頭增長以下:
#chkconfig: 35 56 24
#description:oldboy linux test
特別注意:
/etc/init.d/oldboy start 讓程序當前運行
chkconfig是管理是否開機自啓動
二者沒有什麼關係 (反覆看視頻)
Linux系統運行級別通常爲0-6,下面爲每一個級別的含義:
0 :關機模式
1 :單用戶模式(綠色)
2 : 無NFS的多用戶模式(NFS網絡文件系統)
3 :文本模式(完整的多用戶模式)
4 : 未使用的
5 : 圖形模式
6 : 重啓模式
提示:綠色爲重要的須要有限記住的。查看當前運行級別的命令爲:
#runlevel
中文亂碼解決: # ./etc/sysconfig/i/8n #echo $LANG 顯示的字符集和secureCRT軟件設置要一致便可。
如何優化Linux系統?共13條。 博客優化:http://oldboy.blog.51cto.com/2561410/988726
案例:/etc/目錄爲Linux系統的默認的配置文件及服務啓動命令的目錄
a. 請用tar打包/etc整個目錄(打包及壓縮)
b. 請用tar打包/etc整個目錄(打包及壓縮。但須要排除/etc/services文件)
c. 請把a點命令的壓縮包,解壓到/tmp指定目錄下(最好只用tar命令實現)
a. 解答:# tar zcvf etc.tar.gz /etc
打包總結:儘可能切換到打包目錄的上級目錄,而後用相對路徑打包。 tar zcvf [路徑隨意] / 匡 [相對路徑] 一堆蘋果
b. # tar zcvf etc.tar.gz --exclude = /etc/services /etc
c. # tar xf a.tar.gz -C /tmp/ (解壓到指定目錄 -C) (不加-C,默認解壓到當前目錄)
# tar jcvf test.tar.bz ./test (bz打包命令)
#tar jxvf test.tar.bz
還有 gzip/unzip zip
案例:打包oldboy目錄下全部文件
1. # find /oldboy/ -type f | xargs tar zcvf oldboy.tar.gz
2. # tar zcvf /root/oldboy.tar.gz ' find /oldboy -type f '
案例:# echo "I am oldboy myqq is 4900048">>oldboy.txt
# cat oldboy.txt
顯示: I am oldboy myqq is 49000448 取出字符串oldboy和4900048
解答1:# awk '{print $3 " " $6}' oldboy.txt (-f 取第幾列)
解答2:# cut -d " " -f 3,6 oldboy.txt (-d 指定分隔符)
解答3:# cut -c 6-11,20- oldboy (-c 從字符排序位數截取字符串)
例:I am oldboy,myqq is 49000448 取字符串oldboy,4900048
#awk -F "[, ]" '{print $3 " " $6}' oldboy.txt
顯示:oldboy 49000448
awk博客:深刻淺出三劍客之awk,sed必殺技一例 (老男孩博客搜索)
awk (http://oldboy.bolg.51cto.com/256141/950730)
sed (http://oldboy.blog.51cto.com/2561410/949365)
例:如何查看/etc/services文件有多少行?
解答:a. wc -l /etc/services 查看文件行數
b. 全部查行號的均可以相似cat -n file | tail -1
c. # awk '{print NR $0}' /etc/services/tail -1
d. # grep -n "." /etc/services/tail -1
e. # sed -n '$=' /etc/services
wc -lcmL a.txt ( b:行數;c:字符數 m:字符數 L:?)
wc 打印行數,字節,字符數等。重要參數-l (企業案例用的多)
例:過濾出/etc/services文件包含3306或1521兩數的行的內容
解答:1. # grep -E "3306|1521" /etc/services
2. # egrep --color=auto "3306|1521" /etc/services