第九章 Linux目錄結構
一、Linux一級目錄結構
1、/bin常用二進制可執行命令for allusers
2、/dev設備特殊文件
/dev/null 是系統的空設備(也就是黑洞)
3、/etc系統管理和配置文件
/etc/init.d 啓動命令
/etc/rc.d 啓動的配置文件和腳本
/etc/motd 客戶連接時顯示的內容
echo "ABC's Linux, ip is 192.168.58.85" > /etc/motd
cat /etc/motd
ssh登錄
Last login: Fri Jan 612:44:45 2017 from 192.168.18.239
ABC's Linux, ip is 192.168.58.85
4、/home普通用戶主目錄的基點,比如用戶user的主目錄就是/home/user,可以用~user表示
5、/lib標準程序設計庫,又叫動態鏈接共享庫,作用類似windows裏的.dll文件
6、/sbin系統管理命令,這裏存放的是系統管理員使用的管理程序
7、/tmp公用的臨時文件存儲點
8、/root系統管理員的主目錄
9、/mnt系統提供這個目錄是讓用戶臨時掛載其他的文件系統。
10、/lost+found這個目錄平時是空的,系統非正常關機而留下“無家可歸”的文件(windows下叫什麼.chk)就在這裏
11、/proc虛擬的目錄,是系統內存的映射。可直接訪問這個目錄來獲取系統信息。
cat /proc/meminfo 查看內存信息
cat /proc/cpuinfo 查看CPU信息
cat /proc/loadavg 查看系統負載
cat /proc/filesystems 查看文件系統信息
cat /proc/devices 查看運行內核所配置的所有設備清單
cat /proc/dma 查看正在使用的DMA通道
cat /proc/interrupts 查看正在使用的中斷和曾經有多少箇中斷
cat /proc/ioports 查看正在使用的I/O端口
12、/var某些大文件的溢出區,比方說各種服務的日誌文件
/var/log/messages 系統日誌文件
/var/log/secure 系統安全日誌文件
13、/usr最龐大的目錄,要用到的應用程序和文件幾乎都在這個目錄。其中包含:
/usr/X11R6 存放Xwindow的目錄
/usr/bin 衆多的應用程序
/usr/sbin 超級用戶的一些管理程序
/usr/doc linux文檔
/usr/include linux下開發和編譯應用程序所需要的頭文件
/usr/lib 常用的動態鏈接庫和軟件包的配置文件
/usr/man 幫助文檔
/usr/src 源代碼,linux內核的源代碼就放在/usr/src/linux裏
/usr/local/bin 本地增加的命令
/usr/local/lib 本地增加的庫
二、Linux重要子目錄
1、/etc/sysconfig/network-scripts/: 網卡目錄
cat/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0#網卡設備名稱
ONBOOT=yes#啓動時是否激活 yes | no
BOOTPROTO=static#協議類型 dhcp bootp none
IPADDR=192.168.1.90#網絡IP地址
NETMASK=255.255.255.0#網絡子網地址
GATEWAY=192.168.1.1#網關地址
BROADCAST=192.168.1.255#廣播地址
HWADDR=00:0C:29:FE:1A:09#網卡MAC地址
TYPE=Ethernet#網卡類型爲以太網
/etc/init.d/networkrestart : 重啓所有網卡 (stop |reload)
ifdowneth0 && ifup eth0 : 重啓eth0網卡
ifdowneth0 :關閉eth0網卡
ifupeth0 : 打開eth0網卡
2、/etc/resolv.conf: 本地客戶端DNS文件
cat/etc/resolv.conf
#Generated by NetworkManager
domainopenstacklocal
searchopenstacklocal
nameserver192.168.90.161
nameserver192.168.58.2
3、/etc/hosts: 設定用戶IP與名字(或域名)的對應解析表,相當於本地局域網的DNS文件
cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4localhost4.localdomain4
::1 localhost localhost.localdomain localhost6localhost6.localdomain6
192.168.8.198 study.linux.rhel
192.1468.8.198 localhost
4、/etc/fstab: 記錄啓動時自動mount文件系統的文件
(1)查看/etc/fstab內容
cat /etc/fstab
/dev/mapper/vg_study-lv_root/ ext4 defaults 1 1
UUID=a05b6248-af32-49aa-bdf9-26b239b76e42/boot ext4 defaults 1 2
/dev/mapper/vg_study-lv_swapswap swap defaults 0 0
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
(2)/etc/fstab的格式
fs_spec fs_file fs_type fs_options fs_dump fs_pass
fs_spec :該字段定義希望加載的文件系統所在的設備或遠程文件系統。
fs_file :該字段描述希望的文件系統加載的目錄點,對於swap設備,該字段爲none;對於加載目錄名包含空格的情況,用40來表示空格。描述文件系統的載入點,對於交換分區(swap),這個字段定義爲none,如果在載入點的路徑中包含空格符,可以用“\040”來替代空格符。
fs_type :定義了該設備上的文件系統,一般常見的文件類型爲ext2 (Linux設備的常用文件類型)、vfat(Windows系統的fat32格式)、NTFS、iso9600等.
fs_options :指定加載該設備的文件系統是需要使用的特定參數選項,多個參數是由逗號分隔開來。
參數:
ro:以只讀模式加載該文件系統
sync:不對該設備的寫操作進行緩衝處理,這可以防止在非正常關機時情況下破壞文件系統,但降低速度
user:允許普通用戶加載該文件系統
quota:強制在該文件系統上進行磁盤定額限制
noauto:不再使用mount -a命令(例如系統啓動時)加載該文件系統
fs_dump - 該選項被"dump"命令使用來檢查一個文件系統應該以多快頻率進行轉儲,0表示不備份,1表示備份。若不需要轉儲就設置該字段爲0.文件系統頻率(fs_freq),被dump程序使用來確定哪個文件系統需要dump,如果最後一個字段沒有設置,系統將認爲其值爲0,而dump程序則認爲此文件系統無需dump。
fs_pass- 該字段被fsck命令用來決定在啓動時需要被掃描的文件系統的順序,根文件系統"/"對應該字段的值應該爲1,其他文件系統應該爲2。若該文件系統無需在啓動時掃描則設置該字段爲0.被fsck程序所使用來確定進行在系統重啓進行文件系統檢查時的順序,對於根系統/這個值應設爲1,其它文件系統可以設爲2,在同一個物理硬盤內的文件系統應該被順序檢測,而不同硬盤中的文件系統則應該同時檢測以充分利用系統的並行性。如果最後一個字段值爲0或沒有設置,fsck程序裝跳過此文件系統的檢測。在linux編程中可以用getmntent過程來訪問這個文件的內容。
5、/etc/rc.local: 存放開機自啓動程序命令的文件
rc.local就是在一切初始化工作後,Linux留給用戶進行個性化的地方
類似chkconfig,是在系統開機之後登錄之前要運行的程序,chkconfig只能管理yum/rpm安裝的程序的啓動服務
Linux開機流程:
第一步:加載BIOS
BIOS中包含了CPU的相關信息、設備啓動順序信息、硬盤信息、內存信息、時鐘信息、PnP特性等等
第二步:讀取MBR
硬盤上第0磁道第一個扇區被稱爲MBR,也就是Master Boot Record,即主引導記錄,它的大小是512字節,存放預啓動信息、分區表信息。
系統找到BIOS所指定的硬盤的MBR後,就會將其複製到0×7c00地址所在的物理內存中。複製的內容就是Boot Loader,而具體到你的電腦,那就是lilo或者grub了。
第三步:Boot Loader
Boot Loader 就是在操作系統內核運行之前運行的一段小程序。初始化硬件設備、建立內存空間的映射圖,爲最終調用操作系統內核做好一切準備。
Boot Loader有若干種,其中Grub、Lilo和spfdisk是常見的Loader。
第四步:加載內核
根據grub設定的內核映像所在路徑,系統讀取內存映像,並進行解壓縮操作。系統將解壓後的內核放置在內存之中,
並調用start_kernel()函數來啓動一系列的初始化函數並初始化各種設備,完成Linux核心環境的建立。
第五步:用戶層init依據inittab文件來設定運行等級
內核被加載後,第一個運行的程序便是/sbin/init,該文件會讀取/etc/inittab文件,並依據此文件來進行初始化工作。
第六步:init進程執行rc.sysinit
Linux系統執行的第一個用戶層文件就是/etc/rc.d/rc.sysinit腳本程序,它做的工作非常多,
包括設定PATH、設定網絡配置(/etc/sysconfig/network)、啓動swap分區、設定/proc等等
第七步:啓動內核模塊
依據/etc/modules.conf文件或/etc/modules.d目錄下的文件來裝載內核模塊。
第八步:執行不同運行級別的腳本程序
根據運行級別的不同,系統會運行rc0.d到rc6.d中的相應的腳本程序,來完成相應的初始化工作和啓動相應的服務。
第九步:執行/etc/rc.d/rc.local
第十步:執行/bin/login程序,進入登錄狀態
cat /etc/rc.local
#!/bin/sh
#
#This script will be executed *after* all the other init scripts.
#You can put your own initialization stuff in here if you don't
#want to do the full Sys V style init stuff.
touch/var/lock/subsys/local
serviceiptables stop
/etc/inittab : 設定系統啓動時init進程將把系統設置成相應的runlevel及加載相關啓動文件設置
cat /etc/inittab
#inittab is only used by upstart for the default runlevel.
#
#ADDING OTHER CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
#
#System initialization is started by /etc/init/rcS.conf
#
#Individual runlevels are started by /etc/init/rc.conf
#
#Ctrl-Alt-Delete is handled by /etc/init/control-alt-delete.conf
#
#Terminal gettys are handled by /etc/init/tty.conf and /etc/init/serial.conf,
#with configuration in /etc/sysconfig/init.
#
#For information on how to write upstart event handlers, or how
#upstart works, see init(5), init(8), and initctl(8).
#
#Default runlevel. The runlevels used are:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3,if you do not have networking)
# 3 - Full multiuser mode
# 4 - unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)
#
id:3:initdefault:
6、/etc/exports: 設定NFS網絡文件系統的配置文件
cat /etc/exports
7、/etc/init.d: 存放系統以System v模式啓動的腳本
ll /etc/init.d
cd /etc/init.d
8、/etc/profile: 系統全局環境變量配置文件
cat /etc/profile
9、/etc/profile.d: 加載系統登錄程序的目錄,可以存放命令和文件
10、/etc/issue: 記錄用戶登錄前顯示的信息
11、/etc/motd客戶連接時顯示的內容
echo"ABC's Linux, ip is 192.168.58.85" > /etc/motd
cat/etc/motd
ssh登錄
Lastlogin: Fri Jan 6 12:44:45 2017 from 192.168.18.239
ABC'sLinux, ip is 192.168.58.85
12、/etc/redhat-release: 顯示系統版本(lsb_release-a)
cat/etc/redhat-release
CentOS release 6.5 (Final)
13、/etc/group: 用戶的組名信息文件
cat/etc/group
14、/etc/gshadow: 組密碼文件
cat/etc/gshadow
15、/etc/passwd: 用戶名信息文件
cat/etc/passwd
16、/etc/shadow: 用戶密碼文件
cat /etc/shadow
useradd username這個命令會在/etc下的group、gshadow、passwd、shadow4個文件中加入相關內容
17、/etc/sudoers: sudo的配置文件
一般用visudo來設置/etc/sudoers,因爲visudo檢查語法,vi /etc/sudoers不檢查語法
18、/etc/securetty: 設定哪些終端可以讓root登錄
19、/etc/login.defs: 所有用戶登錄時的缺省配置
20、/etc/modprobe.conf: 內核模塊額外參數配置
21、/etc/rsyslog.conf: 日誌設置文件(CentOS5.X版本爲syslog.conf)
22、/usr/local: 用戶自編譯安裝軟件的存放目錄,一般是通過源碼安裝。相當於c:\program files
23、/usr/src: 內核源碼的存放目錄
24、/var/log: 各種系統日誌存放目錄
25、/var/log/messages: 系統日誌,按周循環
26、/var/log/secure: 存放系統登錄信息(系統安全的日誌文件)
27、/var/log/wtmp: 記錄系統登陸者的信息文件。
last: 查看wtmp的內容(still logged in表示正在登錄)
root pts/0 192.168.158.1 Sat Jan 7 12:06 still logged in
root pts/0 192.168.158.1 Sat Jan 7 11:10 - 12:06 (00:56)
reboot system boot 2.6.32-431.el6.i Sat Jan 7 11:09- 12:07 (00:57)
lastlog: 查看用戶是否登錄過
Username Port From Latest
root pts/0 192.168.158.1 Sat Jan 7 12:06:40 +0800 2017
bin **Never logged in**
daemon **Never logged in**
ftp **Never logged in**
28、/var/spool/cron/[Username] : 定時任務crontab默認路徑。按用戶名命名文件
/var/spool/cron/root
/var/spool/cron/oracle
crontab -l
29、/var/spool/clientmqueue: sendmail臨時郵件文件目錄,有時候該目錄下有許多小文件,將磁盤空間或文件inode的佔滿
定時清理:
echo"/var/spool/clientmqueue/sendmail/ -type f | xargs rm -f" > 30、/server/scripts/del_sys_file.sh
echo "00 00 * * * /bin/sh/server/scripts/del_sys_file.sh > /del/null 2>&1" >>/var/spool/cron/root
30、/proc/version: 系統版本
cat /proc/version
31、/proc/sys/kernel: 系統內核所在的目錄
cd /proc/sys/kernel
ll /proc/sys/kernel
修改文件/etc/sysctl.conf中的內容後,sysctl -p生效,實際上就是修改/proc目錄下的相關文件
也可以直接修改/proc下的文件內容達到系統調優的目的,只是重啓後失效。
可以將命令放在/etc/rc.local中達到長期有效的目的。
vi/etc/sysctl
net.ipv4.tcp_tw_reuse = 1
sysctl-p
等同於
echo1 > /proc/sys/net/ipv4/tcp_tw_reuse
virc.local
echo 1 > /proc/sys/net/ipv4/tcp_tw_reuse