一、Linux目錄結構
你想知道為什么某些程序位于/bin下,或者/sbin,或者/usr/bin,或/usr/sbin目錄下嗎?例如,less命令位于/usr/bin目錄下。為什么沒在/bin中,或/sbin,或/usr/sbin目錄中?所有這些目錄之間有什么不同?
在這篇文章中,讓我們回顧一下Linux的文件系統結構,并理解各上層目錄的含義。
藍色:表示目錄
青色:表示鏈接
黑色:表示文件
?
1、/- 根
每一個文件和目錄從根目錄開始。
只有root用戶具有該目錄下的寫權限。請注意,/root是root用戶的主目錄,這與/.不一樣
?
2、/bin中 - 用戶二進制文件
包含二進制可執行文件。
在單用戶模式下,你需要使用的常見Linux命令都位于此目錄下。系統的所有用戶使用的命令都設在這里。
例如:ps、ls、ping、grep、cp
?
3、/sbin目錄 - 系統二進制文件
就像/bin,/sbin同樣也包含二進制可執行文件。
但是,在這個目錄下的linux命令通常由系統管理員使用,對系統進行維護。例如:iptables、reboot、fdisk、ifconfig、swapon命令
?
4、/etc?- 配置文件
包含所有程序所需的配置文件。
也包含了用于啟動/停止單個程序的啟動和關閉shell腳本。例如:/etc/resolv.conf、/etc/logrotate.conf
hosts:設備名稱(或域名)到ip地址的解析,相當于本地存在的dns功能。見下圖:
?
5、/dev?- 設備文件
包含設備文件。
這些包括終端設備、USB或連接到系統的任何設備。例如:/dev/tty1、/dev/usbmon0
6、/proc?- 進程信息
包含系統進程的相關信息。
這是一個虛擬的文件系統,包含有關正在運行的進程的信息。例如:/proc/{pid}目錄中包含的與特定pid相關的信息。
這是一個虛擬的文件系統,系統資源以文本信息形式存在。例如:/proc/uptime
7、/var?- 變量文件
var代表變量文件。
這個目錄下可以找到內容可能增長的文件。
這包括 - 系統日志文件(/var/log);包和數據庫文件(/var/lib);電子郵件(/var/mail);打印隊列(/var/spool);鎖文件(/var/lock);多次重新啟動需要的臨時文件(/var/tmp);
8、/tmp?- 臨時文件
包含系統和用戶創建的臨時文件。
當系統重新啟動時,這個目錄下的文件都將被刪除。
9、/usr?- 用戶程序
包含二進制文件、庫文件、文檔和二級程序的源代碼。
/usr/bin中包含用戶程序的二進制文件。如果你在/bin中找不到用戶二進制文件,到/usr/bin目錄看看。例如:at、awk、cc、less、scp。
/usr/sbin中包含系統管理員的二進制文件。如果你在/sbin中找不到系統二進制文件,到/usr/sbin目錄看看。例如:atd、cron、sshd、useradd、userdel。
/usr/lib中包含了/usr/bin和/usr/sbin用到的庫。
/usr/local中包含了從源安裝的用戶程序。例如,當你從源安裝Apache,它會在/usr/local/apache2中。
10、/home?- HOME目錄
所有用戶用home目錄來存儲他們的個人檔案。
例如:/home/john、/home/nikita
11、/boot?- 引導加載程序文件
包含引導加載程序相關的文件。
內核的initrd、vmlinux、grub文件位于/boot下。
例如:initrd.img-2.6.32-24-generic、vmlinuz-2.6.32-24-generic
12、/lib?- 系統庫
包含支持位于/bin和/sbin下的二進制文件的庫文件.
庫文件名為 ld*或lib*.so.*
例如:ld-2.11.1.so,libncurses.so.5.7
13、/opt?- 可選的附加應用程序
opt代表可選的。
包含從個別廠商的附加應用程序。
附加應用程序應該安裝在/opt/或者/opt/的子目錄下。
14、/mnt?- 掛載目錄
臨時安裝目錄,系統管理員可以掛載文件系統。
15、/media?- 可移動媒體設備
用于掛載可移動設備的臨時目錄。
舉例來說,掛載CD-ROM的/media/cdrom,掛載軟盤驅動器的/media/floppy;
16、/srv?- 服務數據
srv代表服務。
包含服務器特定服務相關的數據。
例如,/srv/cvs包含cvs相關的數據。
?
【參考】
Linux Filesystem Hierarchy
Source and pre-formatted versions available?1.?Linux Filesystem Hierarchy
- 1.1.?Foreward1.2.?The Root Directory1.3.?/bin1.4.?/boot1.5.?/dev1.6.?/etc1.7.?/home1.8.?/initrd1.9.?/lib1.10.?/lost+found1.11.?/media1.12.?/mnt1.13.?/opt1.14.?/proc1.15.?/root1.16.?/sbin1.17.?/usr1.18.?/var1.19.?/srv1.20.?/tmp
Glossary?A.?UNIX System V Signals?B.?Sources?C.?About the Author?D.?Contributors?E.?Disclaimer?F.?Donations?G.?Feedback?H.?GNU Free Documentation License
- H.1.?PREAMBLEH.2.?APPLICABILITY AND DEFINITIONSH.3.?VERBATIM COPYINGH.4.?COPYING IN QUANTITYH.5.?MODIFICATIONSH.6.?COMBINING DOCUMENTSH.7.?COLLECTIONS OF DOCUMENTSH.8.?AGGREGATION WITH INDEPENDENT WORKSH.9.?TRANSLATIONH.10.?TERMINATIONH.11.?FUTURE REVISIONS OF THIS LICENSEH.12.?ADDENDUM: How to use this License for your documents
二、常用命令
1、命令幫助
2、用戶
3、SHELL
4、顯示硬盤、分區、CPU、內存信息
5、網絡
6、進程
7、文件?
- 1、命令幫助[root@localhost ~]#man ps


$who?????????????? 顯示當前登陸用戶
$who am I
$su??????????????? 成為root用戶
$sudo command????? 以root用戶身份執行
$passwd??????????? 更改密碼
$alias??????????????????? ? 顯示所有的命令別稱
$alias new_command='command'??? 將命令command別稱為new_command
$env???????????????????????顯示所有的環境變量
$export var=value??? 設置環境變量var為value

$mount partition path???????掛在partition到路徑path
$umount partition????????????卸載partition
$sudo fdisk -l????????????????? 顯示所有的分區
$sudo fdisk device???????????? 為device(比如/dev/sdc)創建分區表。 進入后選擇n, p, w
$sudo mkfs -t ext3 partition?? 格式化分區patition(比如/dev/sdc1)
?????????????????????????????????????? 修改 /etc/fstab,以自動掛載分區。增加行:
?????????????????????????????????????? /dev/sdc1? path(mount point) ext3 defaults 0 0
$arch??????????????????????????? 顯示架構
$cat /proc/cpuinfo??????????顯示CPU信息
$cat /proc/meminfo?????????顯示內存信息
$free???????????????????????????? 顯示內存使用狀況
$ifup eth0???? 運行eth0接口
$ifdown eth0?? 關閉eth0接口
$iwconfig????? 顯示無線網絡接口
$route???????? 顯示路由表。route還可以用于修改路由表
$netstat?????? 顯示當前的網絡連接狀態
$ping IP?????? 發送ping包到地址IP
$traceroute IP 探測前往地址IP的路由路徑
$dhclient????? 向DHCP主機發送DHCP請求,以獲得IP地址以及其他設置信息。
$host domain?? DNS查詢,尋找域名domain對應的IP
$host IP?????? 反向DNS查詢
$wget url????? 使用wget下載url指向的資源
$wget -m url?? 鏡像下載
$ps??????????????? 顯示當前shell下的進程
$ps -lu username?? 顯示用戶username的進程
$ps -ajx?????????? 以比較完整的格式顯示所有的進程
$kill PID????????? 殺死PID進程 (PID為Process ID)
$rm filename?????? 刪除文件
$cp file1 file2??? 復制file1為file2
$ls -l path??????? 顯示文件和文件相關信息
$mkdir dir???????? 創建dir文件夾
$mkdir -p path???? 遞歸創建路徑path上的所有文件夾
$rmdir dir???????? 刪除dir文件夾,dir必須為空文件夾。
$rm -r dir???????? 刪除dir文件夾,以及其包含的所有文件
$file filename???? 文件filename的類型描述
$chown username:groupname filename??? 更改文件的擁有者為owner,擁有組為group
$chmod 755 filename更改文件的權限為755: owner r+w+x, group: r+x, others: r+x?
$od -c filename??? 以ASCII字符顯示文件
$cat filename????? 顯示文件
$cat file1 file2?? 連接顯示file1和file2
$head -1 filename? 顯示文件第一行
$tail -5 filename? 顯示文件倒數第五行
$diff file1 file2? 顯示file1和file2的差別
$sort filename???? 對文件中的行排序,并顯示
$sort -f filename? 排序時,不考慮大小寫
$sort -u filename? 排序,并去掉重復的行
$uniq filename???? 顯示文件filename中不重復的行 (內容相同,但不相鄰的行,不算做重復)
$wc filename?????? 統計文件中的字符、詞和行數
$wc -l filename??? 統計文件中的行數
?