初探Linux系統

前言

linux是一個很強大開源的系統,筆者作爲一個嵌入式Linux學習者,同樣被Linux的開源文化深深的吸引着。對於大部分職業可能Windows已經夠好了,但是在程序員眼裏,Linux開源的文化纔是歸屬地。對對對,就是喜歡內核裏面有着各種各樣騷操作的代碼,喜歡着基於Linux內核的各種各樣的開源軟件。而被Linux深深吸引的我,爲了系統的學習Linux系統,所以我和大家一起學習這個牛逼的不行的系統,有什麼意見或建議可以私信我,也可以留言評論,大家一起學習,一起進步。

學習的框架

基本shell指令
管理Linux系統
Makefile
簡單的shell腳本
  1. 基本shell指令和腳本語言可以參考帖子博客,也可以跟着我一起學習,沒有推薦的書籍,但筆者這裏有一本《Linux命令行與shell腳本編程大全(第3版)》和《鳥哥的Linux私房菜-基礎篇(第四版)》網絡評價不錯,我會上傳到我的博客,有需要的可以去下載。
  2. Makefile的學習可以參考《GNU Make》和《跟我一起寫Makefile》評價不錯,我也上傳到我的博客中。

認識Linux系統

       與Windows不同,Windows是可視化窗口界面,安裝軟件,存放文件,卸載什麼的,都是鼠標點點,硬盤分區更是把各種文件歸了類,非常清晰明瞭。在Linux中,有一句話,基本上每個人都會說,那就是一切皆文件,對於熟悉Linux的人來說,這些都是很清晰的,但是對於不熟悉的人來說,卻會說“很麻煩,不好用”之類的話。其實,Linux和Windows一樣清晰,存放文件是以文件樹的形式體現的,而操作是以終端窗口體現的。

文件樹流圖

/
bin
sbin
etc
rc passwd fdprm...
dev
makedev.local console hd sd fd...
proc
var
lib local lock log...
tmp
usr
bin man info include...
home
boot
lib
module...
opt
mnt
media
srv

文件樹結構釋義:

根文件目錄 主文件目錄 子文件目錄 解釋
/ bin 系統文件和目錄 包含了引導啓動所需的命令或普通用戶可能用的命令(可能在引導啓動後).這些命令都是二進制文件的可執行程序,多是系統中重要的系統文件
sbin 系統文件和目錄 系統管理命令,存放管理員需要的程序和一些重要的二進制文件,一般不給普通用戶使用
etc 系統文件和目錄 系統管理和配置文件,包含了用戶信息,系統初始化文件
/etc/rc或/etc/rc.d或/etc/rc?.d 啓動、或改變運行級時運行的腳本或腳本的目錄
/etc/passwd 用戶數據庫,其中的域給出了用戶名、真實姓名、用戶起始目錄、加密口令和用戶的其他信息
/etc/fdprm 軟盤參數表,用以說明不同的軟盤格式.可用setfdprm 進行設置
/etc/fstab 指定啓動時需要自動安裝的文件系統列表.也包括用swapon -a啓用的swap區的信息
/etc/group 組信息,包括組的各種數據
/etc/inittab 初始化的配置文件
/etc/issue 包括用戶在登錄提示符前的輸出信息,通常包括系統的一段說明或歡迎信息,具體內容由系統管理員確定
/etc/magic “file”的配置文件,包含不同文件的格式說明,“file”基於它猜測文件類型
/etc/motd motd是message of the day的縮寫,用戶成功登錄後自動輸出,內容由系統管理員確定,常用於通告信息,如計劃關機時間的警告等
/etc/mtab 當前安裝的文件系統列表,由腳本初始化,並由 mount 命令自動更新,當需要一個當前安裝的文件系統的列表時使用(例如 df 命令)
/etc/shadow 在安裝了影子(shadow)口令軟件的系統上的影子口令文件,影子口令文件將/etc/passwd文件中的加密口令移動到/etc/shadow中,而後者只對超級用戶(root)可讀,這使破譯口令更難,以此增加系統的安全性
/etc/login.defs login命令的配置文件
/etc/termcap 終端性能數據庫,說明不同的終端用什麼“轉義序列”控制,寫程序時不直接輸出轉義序列(這樣只能工作於特定品牌得終端),而是從/etc/termcap中查找要做的工作的正確序列。這樣,多數的程序可以在多數的終端上運行
/etc/profile、/etc/csh.login、/etc/csh.cshrc 登錄或啓動時bourne或C shell執行的文件,這允許系統管理員爲所有用戶建立全局缺省環境
/etc/printcap 針對打印機,類似termcap,但語法不同
/etc/securetty 確認安全終端,即哪個終端允許超級用戶(root)登錄,一般只列出虛擬控制檯,這樣就不可能(至少很困難)通過調制解調器或網絡闖入系統並獲得超級用戶權限
/etc/shells 列出可以使用的shell.chsh命令允許用戶在本文件指定範圍內改變登錄的shell 提供一臺機器ftp服務的服務進程ftpd檢查用戶shell是否列在/etc/shells文件中,如果不是,將不允許該用戶登錄
dev 設備文件 設備特殊文件,即設備驅動程序生成的設備節點,用戶可以通過訪問外部設備,設備文件用特殊的約定命名,這在設備列表中有說明,設備文件在安裝時有系統產生,以後可以用/dev/makedev/描述
/dev/makedev.local 是系統管理員爲本地設備文件(或連接)寫的描述文稿(即一些非標準設備驅動,不是標準makedev的一部分)
/dev/console 系統控制檯,直接和系統連接的監視器也就是電腦屏幕
/dev/hd IDE硬盤驅動程序接口,如/dev/hd是指第一個硬盤,hda1是/dev/hda1的第一個分區
/dev/sd SCSI磁盤驅動程序接口,如有系統有SCSI硬盤,就不會訪問/dev/hda而會訪問/dev/sda
/dev/fd 軟盤設備驅動程序
/dev/st SCSI磁盤驅動器驅動程序
/dev/tty 虛擬控制檯支持,tty1就是第一個虛擬控制檯
/dev/pty 遠程登錄僞終端支持,進行Telnet登錄時就要用到
/dev/ttys 計算機串口,對於DOS來說就是COM口
/dev/cua 串口,與調制解調器一起使用的設備
/dev/null 黑洞,所有寫入該設備的信息都將消失,例如:當想要將屏幕上的輸出信息隱藏起來時,只要將輸出信息輸入到/dev/null中即可。
proc 系統文件或目錄 是系統內存的映射,可直接訪問這個目錄來獲取系統信息,這些信息是由系統自己產生,該目錄的內容不再硬盤上而在內存上
var 系統文件或目錄 包含系統一般運行時要改變的數據,通常這些數據所在的目錄的大小是要經常變化的或擴充的,每個系統是特定的,不通過網絡和其它計算機共享,系統產生的不可自動銷燬的緩存文件、日誌記錄。(系統和程序運行後產生的數據、不對外提供服務、只能用戶手動清理)(包括mail、數據庫文件、日誌文件)
/var/catman 包括了格式化過的幫助( man )頁.幫助頁的源文件一般存在/usr/man/man中;有些man頁可能有預格式化的版本,存在/usr/man/cat中,而其他的man頁在第一次看時都需要格式化,格式化完的版本存在/var/man中,這樣其他人再看相同的頁時就無須再格式化了,/var/catman 經常被清除,就像清除臨時目錄一樣
/var/lib 存放系統正常運行時要改變的文件
/var/local 存放系統正常運行時要改變的文件
/var/lock 鎖定文件.許多程序遵循在/var/lock中產生一個鎖定文件的約定,以用來支持他們正在使用某個特定的設備或文件,其他程序注意到這個鎖定文件時,就不會再使用這個設備或文件
/var/log 各種程序的日誌( log )文件,尤其是login (/var/log/wtmp log紀錄所有到系統的登錄和註銷)和syslog (/var/log/messages 紀錄存儲所有核心和系統程序信息),/var/log 裏的文件經常不確定地增長,應該定期清除
/var/run 保存在下一次系統引導前有效的關於系統的信息文件,例如:/var/run/utmp 包含當前登錄的用戶的信息
/var/spool 放置“假脫機( spool )”程序的目錄,如mail、news、打印隊列和其他隊列工作的目錄
tmp 公用的臨時文件存儲點,保存在使用完畢後可隨時銷燬的緩存文件。(有可能是由系統或程序產生、也有可能是用戶主動放入的臨時數據、系統會自動清理)
usr 系統或個人 所有的程序安裝在usr目錄裏,一般爲系統發行時自帶相當於Windows下的C:\Program files
/usr/bin 集中了幾乎所有用戶命令,是系統的軟件庫,另有些命令在/bin 或/usr/local/bin中
/usr/sbin 包括了根文件系統不必要的系統管理命令,例如多數服務程序
/usr/man、/ usr/info、/usr/doc 這些目錄包含所有手冊頁、gnu信息文檔和各種其他文檔文件.每個聯機手冊的“節”都有兩個子目錄,例如: / usr/man/man1中包含聯機手冊第一節的源碼(沒有格式化的原始文件),/usr/man/cat1包含第一節已格式化的內容.l聯機手冊分爲以下九節:內部命令、系統調用、庫函數、設備、文件格式、遊戲、宏軟件包、系統管理和核心程序
/usr/include 包含了c語言的頭文件,這些文件多以.h結尾,用來描述c語言程序中用到的數據結構、子過程和常量,爲了保持一致性,這實際上應該放在/usr/lib下,但習慣上一直沿用了這個名字
/usr/lib 包含了程序或子系統的不變的數據文件,包括一些site-wide配置文件,名字lib來源於庫(library);編程的原始庫也存在/usr/lib裏,當編譯程序時,程序便會和其中的庫進行連接,也有許多程序把配置文件存入其中
/usr/local 本地安裝的軟件和其他文件放在這裏,這與/usr類似,用戶可能會在這發現一些比較大的軟件包,如tex、emacs等!
home 用戶 用戶自己的目錄,可以在此存儲自己文件,資料等!
boot 系統文件或目錄 引導加載文件以及映像文件等
lib 程序庫文件 根文件系統上的程序所需的共享庫,存放了根文件系統程序運行所需的共享文件,這些文件包含了可被許多程序共享的代碼,以避免每個程序都包含有相同的子程序的副本,故可以使得可執行文件變得更小,節省空間
/lib/modules 目錄包含系統核心,可加載各種模塊,尤其是那些在恢復損壞的系統時重新引導系統所需的模塊(例如網絡和文件系統驅動).
opt 三方軟件安裝文件夾,相當於Windows下的除C盤外的其它盤
mnt 用戶臨時掛載點
media 有些linux的發行版使用這個目錄來掛載那些usb接口的移動硬盤(包括U盤)、CD/DVD驅動器等等
srv 主要用來存儲本機或本服務器提供的服務或數據(用戶主動生產的數據、對外提供服務)

       由上面可以知道,紅字部分都是重要文件夾,有時候會根據自己的需要修改一些文件,根文件夾下的home文件夾使我們自己可以配置的,三方軟件一般要安裝到opt文件夾裏面。我們可以在home裏面新建DEFGH當做我們的盤作爲區分,三方軟件安裝在opt文件夾下,可以把運行腳本建立軟連接到home的一個文件夾內,相當於Windows下的快捷方式。這樣一看其實結構也是很清晰的。

電子書鏈接

可以加入羣聊:667039215找羣主獲取
Linux命令行與shell腳本編程大全第三版
鳥哥的Linux私房菜-基礎篇》第四版
跟我一起寫Makefile 高清無碼文檔
GNU make中文手冊

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章