Linux運維入門初步—第一周
Linux 運維 Linux入門
寫作:N27_李偉 2017-7-4
Linux入門之計算機硬件系統組成
Linux是一種計算機操作系統,操作系統簡單講是控制計算機硬件系統和人類進行交互、反饋的重要界面層。通過操作系統的處理,將人的信息通過操作系統界面轉換為機器可以理解和執行的機器語言代碼,然后交由機器進行處理運算。再通過操作系統的處理,將機器運算結果轉換成人類可以理解的信息:如文字、圖像、聲音,通過顯示器等硬件設備反饋給人類。如果沒有操作系統,計算機的使用會變得不可想象。
既然操作系統和計算機硬件緊密關聯,就需要對計算機的組成有所了解。亦有助于對操作系統的學習。
計算機硬件的組成體系
現代計算機依然遵守約翰.馮.諾依曼所制定的體系。
– 使用二進制數字來表示數據和指令;既“0”和“1”的組合來表示各種信息和指令
-
計算機硬件由運算器、存儲器、控制器、輸入設備、輸出設備五大部分組成
-
將指令和數據存放在存儲器中,計算機自動地逐條取出指令和數據進行分析、處理和執行; 即存儲程序的計算機工作原理設計思想。存儲程序思想是指把解決問題的程序和需要加工處理的原始數據存入存儲器中,這是計算機能夠自動、連續工作的先決條件。
-
運算器的功能:又稱算術邏輯單元,是計算機對數據進行加工處理的部件,它的主要功能是對二進制數碼進行加、減、乘、除等算術運算和與、或、非等基本邏輯運算,實現邏輯判斷。
-
控制器的功能:用來處理計算機各部分協調工作,并使整個處理過程有序進行。其基本功能是從內存中取指令和執行指令,根據該指令的功能向有關部件發出控制命令,執行指令。同時也接收部件提供的反饋信息。
-
存儲器的功能:具有記憶功能,可以記憶存儲信息。如指令、數據、運算結果。計算器內部采取二進制來表示信息,既一系列的“0”和“1”的組合,計算機不能識別其他的信息表示方式。規定每一個“1”或“0”稱為一位bit,bit是計算機內最小的數據單位。但是每一個單獨的位是沒有意義的,必須組合起來才有意義。對于存儲器來說,最小的存儲單元是字節,既規定每8個bit為一個字節byte,每1024個字節byte為1KB。
-
輸入和輸出設備:簡稱I/O設備,用戶通過輸入設備將信息輸入計算機,通過輸出設備來獲取計算機對信息處理的結果。常見的輸入設備有鍵盤、鼠標,輸出設備有顯示器、打印機。
Linux的歷史演進和之間的關系
第一臺電子計算機誕生于1946年。1946年2月15日在美國賓西法尼亞大學的試驗室投入使用。但是早期的計算機并沒有操作系統這個概念。用戶是獨立的占有計算機,使用紙帶、打孔機使用機器語言來向計算機來輸入程序,計算機也是通過指示燈、打孔紙帶等方式輸出二進制的信息。
顯然,這種方式操作難度極大,隨著計算機硬件的不斷發展,功能越來越強大,就出現了一種整合了機器底層硬件驅動讓人可以比較簡單的和機器進行交互的軟件界面。它通常具有的功能是可以驅動硬件、進行進程管理、內存管理、文件系統等。稱之為Operating System,簡稱”OS”。
早期的操作系統都是使用微碼語言編寫,既使用機器語言或匯編語言編寫,各家計算機生產商都有各自的操作系統且不相兼容。但是隨著小型機和個人計算機的出現,操件系統也在不斷向標準化、易用化發展。
一、UNIX的出現
1969年,unix在AT&T的貝爾實驗室誕生。unix操作系統來源于1965年貝爾實驗室參于的一項和通用電氣(General Electric)和麻省理工學院(MIT)合作
的計劃。該項目要建立一套多使用者、多任務、多層次(multi-user、multi-processor、multi-level)的MULTICS操作系統。
直到1969年,因MULTICS計劃的工作進度太慢,該計劃被停了下來。當時,技術大牛Ken Thompson(后被稱為UNIX之父)為了開發其名為一星際旅行的游戲,在一臺廢棄的PDP-7的機器上開發完成UNIX第一版。
1973年,Ken Thompson 與Dennis Ritchie感到用匯編語言做移植太過于頭痛,改用B語言編寫。后來Dennis Ritchie覺得B語言還是不能滿足要求,于是就改良了B語言,這就是今天的大名鼎鼎的C語言。使用C編寫了Unix的第三版內核。至此,Unix這個操作系統修改、移植相當便利,為Unix日后的普及打下了堅實的基礎。而Unix和C完美地結合成為一個統一體,C與Unix很快成為世界的主導。
1974年Ken Thompson 與Dennis Ritchie發表了論文向外界介紹了Unix,引起學術界極大興趣。由于早期Unix完全免費,也就成為各個大學操作系統的主要教學范例,于是開始其廣為流行。
但是AT&T公司開始逐漸的重視Unix商業價植,到1979年,AT&T公司開始禁止免費使用Unix,既使是大學中用于教學也不行。由于Unix的高昂的使用費也促使了GNU/GPL開源軟件的思想和組織的興起,也帶來Linux的誕生。
二、Linux的出現和發展
1991年8月,芬蘭大學生Linux Torvalds宣布成立Linux項目。他在一個用于教學目的簡單的類Unix操作系統MINIX系統的基礎上,進一步強化了MINIX的功能,針對intel 80386處理器優化,并且將大量的GNU軟件進行了移植,比如gcc、bash等。
到了1991 年的10 月5 日 ,Linus 在comp.os.minix 新聞組上發布消息,正式向外宣布Linux 內核系統的誕生(Free minix-like kernel sources for 386-AT)。這段消息可以稱為Linux 的誕生宣言,并且一直廣為流傳。因此10 月5 日對Linux社區來說是一個特殊的日子,許多后來Linux 的新版本發布時都選擇了這個日子。
三、Linux主流版本
由于Linux是基于GNU的GPL協議,因此其是一個免費、開放源碼的操作系統。但是,Linux只提供了源代碼,用戶想要使用,就需要自己來編譯成可執行的二進制文件??上Σ僮飨到y源碼的編譯是非常復雜的,普通用戶還是難以使用。
為此,就出現了一些組織或是商業公司給人們提供已經編譯好的Linux系統。這稱之為發行版。由于Linux源代碼開放的原因,任何一個有能力的組織或個人都可以發行自己編譯好的Linux系統,也造成了今天市面上存在著數百種的Linux版本。但是常用的基本分為三大系列:
1. Debian:三大主流版本之一,唯一的社區版。使用難度較大,但是系統比較輕巧。
– ubuntu:二次發行版
– knopix:安全性高,短小。
2. SLACKware :二次開發版S.U.S.E和opensuse,以界面華麗著稱,在歐洲很流行。
3. REDhat: 主要分布于美國、中國,在互聯網上的文檔也比較多。
– redhat enterprise:企業版,收費版本,提供服務。每18個月更新一次
– Centos: 二次開發版,社區版,使用redheat enterprise的源碼編譯,免費
– Fedora core: 個人桌面版,每6個月更新一次。
4. 除了以上幾個版本外,還有Gentoo和LFS。這兩個版本使用難度均較大,Gentoo需要邊編譯邊安裝,LFS則是完全沒有二進制文件,僅提供了Linux的源代碼和編譯指導,需要用戶自己完成代碼的編譯和安裝。
5. 三個流行版本的區別不僅是發行商的不同,重要的是其使用的包管理器也不相同。Debian的包管理器是DEB格式,Slackware、Redhat是rpm格式(也是Linux的工業標準),Redhat還有自己的Yum格式,后期準備升級為DNF格式。
四、 Linux的哲學思想
關于哲學思想,我認為也可以理解為Linux的設計思想。主要包括以下幾點:
- 一切皆文件的思想。在Linux中,文件不僅是指計算機中存儲的信息,而是把計算機的硬件設備、通信接口等等也都看作文件來管理。好處是可以將接口標準化。
- 由眾多功能單一的程序組成,既一個程序只做一件事情,并且要做好。完成復雜任務是能通過組合小程序來完成的。功能單一的小程序也使得系統的負擔減小,使得內核的運行更高效。復雜任務由眾多的高效的小程序組成,從而保證了復雜程序也是高效的。
- 盡量不與用戶交互:易于用編程的方式來完成自動化任務。
- 使用文本文件來保存配置信息,這樣可以方便高效的對計算機的配置進行修改,而且查看和保存都很方便。
五、Linux系統上命令
ifconfig
~]# ifconfig
獲得當前系統的網絡配置信息。在Centos6.5中,eth0代表網卡名稱,inet addr表示機器的IP地址(IPV4),inet6 addr代表IPV6的地址
[root@loong ~]# ifconfig eth0 Link encap:Ethernet HWaddr 00:0C:29:D8:3F:1E inet addr:192.168.31.115 Bcast:192.168.31.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fed8:3f1e/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:42 errors:0 dropped:0 overruns:0 frame:0 TX packets:48 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:5917 (5.7 KiB) TX bytes:6565 (6.4 KiB) Interrupt:19 Base address:0x2000 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
tty
外部命令,顯示出連接到當前標準輸入的終端設備文件名。終端指的是鍵盤加顯示器所構成的一組設備。來自Unix的多用戶的概念。每個用戶視為一個終端設備。當計算機啟動時,稱為物理終端(/dev/console),也叫控制臺。啟動后,顯示的界面為虛擬終端(/dev/tty#(1~6)),Linux中共有6個,可以用Ctrl+ALT+F1~F6來切換,Ctrl+ALT+F7是切換到圖形終端。圖形界面中打開的終端稱為偽終端(/dev/pts)。
例如,在Xshell遠程連接中執行tty
[root@loong ~]# tty /dev/pts/0
在Centos下執行tty
[root@loong ~]# tty /dev/tty1
echo
顯示文本,將輸入的字符串送往標準輸出顯示。輸出的字符串間以空白字符隔開,并在最后加上換行符號。
echo: echo [-neE] [arg …]
選項: -n代表不在輸出后換行
例如:
[root@loong ~]# echo -n "hello Linux" hello Linux[root@loong ~]# (命令提示符在一行中出現) [root@loong ~]# echo "hello Linux" hello Linux (輸出后換行) [root@loong ~]#
選項:-e 使字符中的轉義字符生效
例如:hello Linux中加入\n,表示顯示hello后換行輸出Linux.如不加-e參數則無效。
[root@loong ~]# echo -e "hello \nLinux" hello Linux [root@loong ~]# [root@loong ~]# echo "hello \nLinux" hello \nLinux [root@loong ~]#
startx
啟動x windows圖形界面。一般后不加參數,但如啟動第二個x windows時可以加”–:1″,也可以用”–vt8″的形式,指定要在哪個虛擬終端啟動。
enport
設置或顯示環境變量。在shell中執行程序時,shell會提供一組環境變量。export可以新增、修改、刪除環境變量,供后續程序使用。exprot的修改僅對本次登錄有效。
選項:-p 列出所有shell賦于程序的環境變量
-n 刪除指定變量。實際并末刪除,只是不會輸出到后續命令的執行環境中
例如
[root@loong ~]# export -p declare -x CVS_RSH="ssh" declare -x DISPLAY="localhost:10.0" declare -x G_BROKEN_FILENAMES="1" declare -x HISTCONTROL="ignoredups" declare -x HISTSIZE="1000" declare -x HOME="/root" declare -x HOSTNAME="loong" declare -x LANG="zh_CN.UTF-8" declare -x LESSOPEN="|/usr/bin/lesspipe.sh %s" declare -x LOGNAME="root" declare -x LS_COLORS="rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.tbz=01;31:*.tbz2=01;31:*.bz=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:" declare -x MAIL="/var/spool/mail/root" declare -x OLDPWD declare -x PATH="/usr/lib/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin" declare -x PWD="/root" declare -x QTDIR="/usr/lib/qt-3.3" declare -x QTINC="/usr/lib/qt-3.3/include" declare -x QTLIB="/usr/lib/qt-3.3/lib" declare -x SELINUX_LEVEL_REQUESTED="" declare -x SELINUX_ROLE_REQUESTED="" declare -x SELINUX_USE_CURRENT_RANGE="" declare -x SHELL="/bin/bash" declare -x SHLVL="1" declare -x SSH_CLIENT="192.168.31.225 49247 22" declare -x SSH_CONNECTION="192.168.31.225 49247 192.168.31.115 22" declare -x SSH_TTY="/dev/pts/0" declare -x TERM="xterm" declare -x USER="root"
pwd
輸出當前工作目錄的絕對路徑。
[root@loong ~]# pwd /root [root@loong ~]# cd /etc/sysconfig [root@loong sysconfig]# pwd /etc/sysconfig [root@loong sysconfig]#
history
列出之前使用過的命令。這些信息默認存儲在使用者根目錄的.bash_history文件中,默認存儲1000條命令。
常用選項:-a:在History文件中加上記錄
-r:僅讀取,不加上記錄
-w:覆蓋原有的History文件
N: 顯示最近N次輸入的記錄,!N為執行第N條記錄
例如:
[root@loong sysconfig]# history 1 ifconfig 2 man ifconfig 3 cd /etc 4 whereis dir 5 type dir 6 dir --help 7 tty 8 cd /etc 9 cd sysconfig 10 ls 11 cd network-scripts 12 ls 13 vi ifcfg-eth0 14 service network restart 15 ifconfig 16 ssh -n 17 ssh
顯示最近的10條命令,并執行其中一條
[root@loong ~]# history 10 53 clear 54 pwd 55 cd /etc/sysconfig 56 pwd 57 help history 58 history 59 cd- 60 cd - 61 ls 62 history 10 [root@loong ~]# !61 ls anaconda-ks.cfg install.log install.log.syslog [root@loong ~]#
shutdown
系統關機命令。這是一種安全的關機方式。所有用戶將收到警告信息,新的用戶登錄被阻止。
常用選項
-f:重啟時不執行fsck
-F:重啟時執行fsck
-h:關機后關閉電源
-c:取消關機。對于”shutdown -h 11:20 &”的形式將shutdown放入后臺執行的情況,要先使用”shutdown -c”將前一個關機命令取消。
-r:關機后重新開機(重啟)
hh:mm:指定時間關機,也可以用+M的說明M分鐘后關機
-t<秒數>:送出關機警告信息后多少秒關機
例如:5分鐘后關機、關閉電源,并顯示”goodbye everyone”
[root@loong /]# shutdown -h +5 "goodbye everyone" Broadcast message from root@loong (/dev/pts/0) at 5:16 ... The system is going down for halt in 5 minutes! goodbye everyone
poweroff
Usage: poweroff [OPTION]…
立既關閉系統,關閉系統電源
Options:
-n, –no-sync 關閉系統時不執行SYNC操作
-f, –force 強制關機或重啟,不調用Shutdown
-p, –poweroff 關機后關閉電源
-w, –wtmp-only 不實際執行關機操作,僅將記錄寫入/var/log/wtmp
[root@loong ~]# poweroff -w (并末關機) [root@loong ~]# [root@loong ~]#
reboot
Usage: reboot [OPTION]…
重新啟動系統
Options:
-n, –no-sync 重啟時不檢查是否有末結束的程序
-f, –force 強制重啟,不調用Shutdow
-w, –wtmp-only 不實際執行關機操作,僅將記錄寫入/var/log/wtmp
hwclock
顯示和設置硬件時鐘
Usage: hwclock [function] [options…]
funtion:
-s | –hctosys:把硬件時鐘設定給系統時鐘
-w | –systohc:把系統時間設定給硬件時鐘
設置硬件時鐘日期和時間 [root@loong ~]# hwclock --set --date "7/10/2017 16:05:00" [root@loong ~]# hwclock 2017年07月10日 星期一 16時05分06秒 -1.039608 seconds 顯示硬件時間和系統時間,并把硬件時間設定給系統時間 [root@loong ~]# hwclock 顯示硬件時間 2017年07月10日 星期一 17時27分34秒 -0.989145 seconds [root@loong ~]# date 顯示系統時間 2015年 06月 07日 星期日 07:29:02 CST [root@loong ~]# hwclock -s 把硬件時間設定給系統時間 [root@loong ~]# date 系統時間顯示已調整為硬件時間 2017年 07月 10日 星期一 17:28:06 CST [root@loong ~]# hwclock 2017年07月10日 星期一 17時28分22秒 -0.129154 seconds [root@loong ~]#
date
顯示和設定系統的日期和時間
顯示時間和時間:date [OPTION]… [+FORMAT]
設定日期和時間:date [MMDDhhmm[[CC]YY][.ss]]
+FORMAT:指格式符
%H 小時(00-23)
%I 小時(00-12)
%j 按年計的日期(001-366)
%k 時(0-23)
%l 時(1-12)
%m 月份(01-12)
%M 分(00-59)
%n 換行
%N 納秒(000000000-999999999)
%p 當前locale 下的”上午”或者”下午”,未知時輸出為空
%P 與%p 類似,但是輸出小寫字母
%r 當前locale 下的 12 小時時鐘時間 (如:11:11:04 下午)
%R 24 小時時間的時和分,等價于 %H:%M
%s 自UTC 時間 1970-01-01 00:00:00 以來所經過的秒數
%S 秒(00-60)
%d 按月計的日期(例如:01)
%D 按月計的日期;等于%m/%d/%y
%e 按月計的日期,添加空格,等于%_d
%F 完整日期格式,等價于 %Y-%m-%d
例如:
自1970-1-1 00:00:00到現時經過的秒數(時間戳) [root@loong ~]# date +%s 1499676946 [root@loong ~]# 顯示年月日時分秒 [root@loong ~]# date +"%Y-%m-%d %H:%M:%S" 2017-07-10 17:01:12 [root@loong ~]# 設置指定的日期和時間 [root@loong ~]# date +"%Y-%m-%d %H:%M:%S" 2017-07-10 17:01:12 當前系統時間 [root@loong ~]# date 060707102015.23 指定為2015-6-7 7:10:23 2015年 06月 07日 星期日 07:10:23 CST [root@loong ~]# date 顯示系統時間,已經更改 2015年 06月 07日 星期日 07:10:28 CST [root@loong ~]# hwclock 系統硬件時間還是2017年時間 2017年07月10日 星期一 17時09分14秒 -0.581742 seconds [root@loong ~]#
六、Linux中獲取幫助信息
Linux中分為外部命令和內部命令兩種。外部命令是外加的程序,具有路徑,而內部命令是shell的內嵌命令。一般可以用type、whereis查看區分。
[root@loong ~]# type history
history is a shell builtin
表示history是一個內嵌命令
[root@loong ~]# type tty
tty is /usr/bin/tty
顯示出tty程序的路徑,則是外部命令。
獲取命令幫助的方式
1.對于內部命令使用help command格式獲得簡易幫助
[root@loong ~]# help pwd pwd: pwd [-LP] Print the name of the current working directory. Options: -L print the value of $PWD if it names the current working directory -P print the physical directory, without any symbolic links By default, `pwd' behaves as if `-L' were specified. Exit Status: Returns 0 unless an invalid option is given or the current directory cannot be read. [root@loong ~]#
2. 對于外部命令使用 --help參數來獲得簡易幫助
[root@loong ~]# tty --help 用法:tty [選項]... 顯示出連接到當前標準輸入的終端設備文件名。 -s, --silent, --quiet 什么也不顯示,只返回退出狀態值 --help 顯示此幫助信息并退出 --version 顯示版本信息并退出 請向bug-coreutils@gnu.org 報告tty 的錯誤 GNU coreutils 項目主頁:http://www.gnu.org/software/coreutils/ GNU 軟件一般性幫助:http://www.gnu.org/gethelp/ 請向http://translationproject.org/team/zh_CN.html 報告tty 的翻譯錯誤 要獲取完整文檔,請運行:info coreutils 'tty invocation' [root@loong ~]#
3. 使用man命令獲得詳細幫助
語法:man [-acdfFhkKtwW] [–path] [-m system] [-p string] [-C config_file] [-M pathlist] [-P pager] [-B browser] [-H htmlpager] [-S section_list] [section] name …符號標記說明
[ ]:可選內容; < >:必須提供的內容; a|b|c..:多項內容選一;
…:同類內容可以有多個; { }:分組man文檔的章節分類
man幫助文檔的路徑一般在/usr/share/man下,根據man文檔的不同章節內容又分別保存在/man/man1/man2…等目錄下。
man1:用戶命令說明;
man2:系統調用說明;
man3:c庫調用;
man4:設備文件和特殊文件說明;
man5:配置文件格式;
man6:游戲的說明;
man7:雜項說明;
man8:管理工具及守護進行;常用man文檔操作
查看指定的章節:例如:]#man 5 命令
幫助手冊列表: ~]# whatis command
建立whatis數據庫:makewhatis進入man文檔后的操作
空格:翻屏,向文件尾部翻屏;
b: 向文件首部翻屏;
ctrl+d:向文件尾部翻半屏;
ctrl+u:向文件首部翻半屏;
回車鍵:向文件尾部翻一行;
k: 向文件首部翻一行;
g: 到最后一行;
ng: 到指定行數,n指數字;
/keyword:在man文檔中搜索;
?keyword:在man文檔中搜索;
4. 程序自帶的幫助文檔,在/usr/share/doc/
5. 獲取命令的在線文檔,info 命令名稱Linux發行版的基礎目錄和功能
1、Linux的設計思想是一切皆文件,Linux將計算機的硬件、軟件的一切資源視為不同的文件。因此,Linux對計算機的管理實際上通過一套方件系統來管理的。這個文件系統必定有一個啟點,系統由此啟動,而后系統將不同的硬件資源\軟件映射成不同的文件或目錄來掛載到該文件系統的啟點上,形成一個完整的文件系統供用戶訪問使用。這個啟點稱為/(根)分區,Linux系統必須具備/分區,否則系統無法啟動。各種的設備或者軟件作為/下的不同的目錄或者文件被用戶訪問或被系統所調用。
但由于Linux是源碼開發的自由軟件,可以眾多不同的版本。而且,每個發行版之間都可以自定義,但是這樣的話必然會導致Linux版本間的混亂和不規范,不利于Linux的普及和使用。為了規范不同發行商之間、不同發行版本之間的Linux文件系統的標準,由LSB定義了Linux發行版基礎目錄名稱命名法則和功用規定,該標準稱為FHS(Filesystem Hierarchy Standard),中文名為文件系統層次化標準。
FHS采用樹形結構組織文件。FHS定義了系統中每個區域的用途、所需要的最小構成的文件和目錄,同時還給出了例外處理與矛盾處理。如下圖:
FHS定義了兩層規范,第一層是, / 下面的各個目錄應該要放什么文件數據,例如/etc應該要放置設置文件,/bin與/sbin則應該要放置可執行文件等等。
第二層則是針對/usr及/var這兩個目錄的子目錄來定義。例如/var/log放置系統登錄文件、/usr/share放置共享數據等等。2、Linux基礎目錄的名稱和功能說明
如果查看/下的文件會看到一系列的目錄,既便是不同版本的系統,其目錄都遵守FHS標準,要具有以下標準目錄結構。
/bin: 供所有用戶使用的基本命令程序文件
/sbin: 供系統管理員使用的命令程序
/boot: 引導加載器所用到的靜態文件。如kernel,initramfs,grub等。
/dev: 硬件設備文件或特殊文件
/etc: 系統的靜態配置文件,不能為二進制文件。其也為層級結構
/home: 普通用戶的家目錄的集中位置。層級結構。不是必須的
/lib: 基本的共享庫和內核模塊(和啟動有關)。64位系統還有/lib64
– libc.so.* 動態鏈接庫文件;
– ld*:運行時鏈接器/加載器;
– /modules:存放內核模塊
/media 為便攜式設備提供掛載點
/mnt 其他文件系統提供的臨時掛載點
/opt 附加程序的安裝位置,可選路徑
/root 管理員的家目錄,可選
/srv 當前主機為服務提供的數據
/tmp 為產生臨時文件的程序提供的存儲臨時文件的目錄,所有用戶都可以使用。
/usr(層級)全局共享的只讀數據路徑;也包括bin,sbin,lib,lib64,share,includ(c程序頭文件),share(命令手冊、命令自帶說明),local系統管理員安裝應用程序用
/var(層級)存儲經常變化的數據原創文章,作者:N27_loong,如若轉載,請注明出處:http://www.www58058.com/79413
總結的非常好的,下了功夫的,希望您能牢記這些基礎知識,加油?。?!
@馬哥教育:^_^謝謝老師了。就是排版不知道怎么回事,顯示程序執行命令的行間距忒寬了。在其他的編輯器上顯示正常。放這個網站上就變寬了。