实验楼 linux内核原理与分析,《Linux内核原理与分析》第一周作业 20189210
實驗一 Linux系統簡介
這一節主要學習了Linux的歷史,Linux有關的重要人物以及學習Linux的方法,Linux和Windows的區別。其中學到了LInux中的應用程序大都為開源自由的軟件,用戶可以修改定制再發布;內核是實現多任務運行和硬件管理的基礎;在我們使用應用程序時,在背后支持軟件服務的是成千上萬個Linux服務器主機。
實驗二 Linux基礎概念及操作
這一節首先學習了實驗樓環境、終端的概念、和shell命令以及相關小技巧和快捷鍵。其中Shell是一種中間程序,即是用戶交互的界面,也是控制系統的腳本語言。
其次在實踐中又學習了shell通配符以及批量創建文件。
實驗三 用戶文件管理
1. Linux用戶管理
首先學習了 who命令, su命令 , sudo命令。了解了user、用戶組等相關概念。
并且除了root自己外,其他sudo里的用戶要使用root權限必須在命令前加上sudo,而且只有將用戶添加到sudo組里才能使用root權限。
這里 cat 命令用于讀取指定文件的內容并打印到終端輸出,后面會詳細講它的使用。 | sort 表示將讀取的文本進行一個字典排序再輸出
2. 文件權限
Unix/Linux系統除了對用戶權限作了嚴格的界定外,還在用戶身份認證、訪問控制、傳輸安全、文件讀寫權限等方面作了周密的控制
一個目錄同時具有讀權限和執行權限才可以打開并查看內部文件,而一個目錄要有寫權限才允許在其中創建其它文件,這是因為目錄文件實際保存著該目錄里面的文件的列表等信息。
ls 加上 -lh 參數來更直觀的查看文件的大小。
g、o 還有 u 分別表示 group、others 和 user,+ 和 - 分別表示增加和去掉相應的權限。
3. 創建新用戶和新文件,并使新用戶獲得該文件的讀寫權限:
u
發現:在shiyanlou中用sudo創建的文件forloutest的User和用戶組都是root,所以一開始使用教程里的"chmod go+"命令沒有權限,在命令前加了sudo才達到效果,最后使得這個文件對所有用戶都有讀寫權限。
實驗四 Linux目錄結構及文件基本操作
Windows 一直是以存儲介質為主的;Linux 是以樹形目錄結構的形式來構建整個系統的,可以理解為樹形目錄是一個用戶可操作系統的骨架。
FHS(英文:Filesystem Hierarchy Standard 中文:文件系統層次結構標準),多數 Linux 版本采用這種文件組織形式,FHS 定義了系統中每個區域的用途、所需要的最小構成的文件和目錄同時還給出了例外處理與矛盾處理。
使用-p 參數創建父目錄
使用-r 參數遞歸復制文件夾
rename 來實現批量重命名,不過它要用 perl 正則表達式來作為參數
cat參數:
-b : 指定添加行號的方式,主要有兩種:
-b a:表示無論是否為空行,同樣列出行號("cat -n"就是這種方式)
-b t:只列出非空行的編號并列出(默認為這種方式)
-n : 設置行號的樣式,主要有三種:
-n ln:在行號字段最左端顯示
-n rn:在行號字段最右邊顯示,且不加 0
-n rz:在行號字段最右邊顯示,且加 0
-w : 行號字段占用的位數(默認為 6 位)
cat正序打印文件內容到標準輸出
創建1-10txt文件,再刪除其中1-5txt文件。
實驗五 環境變量與文件查找
Shell 的環境變量作用于自身和它的子進程。在所有的 UNIX 和類 UNIX 系統中,每個進程都有其各自的環境變量設置,且默認情況下,當一個進程被創建時,除了創建過程中明確指定的話,它將繼承其父進程的絕大部分環境設置。
通常我們會涉及到的變量類型有三種:
1. 當前 Shell 進程私有用戶自定義變量,如上面我們創建的 tmp 變量,只在當前 Shell 中有效。
2. Shell 本身內建的變量。
3. 從自定義變量導出的環境變量。
當我們在 Shell 中執行一個命令時,系統就會按照 PATH 中設定的路徑按照順序依次到目錄中去查找,如果存在同名的命令,則執行先找到的那個。
如何做到像使用系統命令一樣執行自己創建的腳本文件或者程序呢?那就要將命令所在路徑添加到 PATH 環境變量。但是實踐結果又出現找不到文件
在將命令所在路徑添加到 PATH 中后,shell在PATH中便可以找到/mybin,故可直接執行hello_shell.sh:
確保每次啟動 Shell 時自動執行上面添加自定義路徑到 PATH 的命令:
上述命令中?>>?表示將標準輸出以追加的方式重定向到一個文件中,注意前面用到的?>是以覆蓋的方式重定向到一個文件中,使用的時候一定要注意分辨。
2. 搜索文件
與搜索相關的命令常用的有?whereis,which,find?和?locate?。
作業:搜索/e t c中所有.list結尾的文件
實驗六 文件打包與壓縮
1. zip和unzip
-r 參數表示遞歸打包包含子目錄的全部內容,-q 參數表示為安靜模式,即不向屏幕輸出信息,-o,表示輸出文件,需在其后緊跟打包輸出文件名。壓縮級別 -[1-9],1 表示最快壓縮但體積大,9 表示體積最小但耗時最久。路徑必須為絕對路徑:
2.tar
-c 表示創建一個 tar 包文件,-f 用于指定創建的文件名,文件名必須緊跟在 -f 參數之后。解包一個文件(-x 參數)到指定路徑的已存在目錄(-C 參數):
實驗七 文件系統操作與磁盤管理
硬件的設備驅動(如硬盤)和特殊設備文件(如/dev/zero和/dev/random)都像普通文件一樣,只是在各自的驅動程序中實現了對應的功能,dd 也可以讀取文件或寫入這些文件。
用戶在 Linux/UNIX 的機器上打開一個文件以前,包含該文件的文件系統必須先進行掛載的動作,此時用戶要對該文件系統執行 mount 的指令以進行掛載。該指令通常是使用在 USB 或其他可移除存儲設備上,而根目錄則需要始終保持掛載的狀態。
使用 mount 命令掛載磁盤到目錄樹
用戶在 Linux/UNIX 的機器上打開一個文件以前,包含該文件的文件系統必須先進行掛載的動作,此時用戶要對該文件系統執行 mount 的指令以進行掛載。
實驗八 Linux下的幫助命令
內建命令是 shell 程序的一部分,其中包含的是一些比較簡單的 Linux 系統命令,這些命令是寫在bash源碼的builtins里面的,并由 shell 程序識別并在 shell 程序內部完成運行,而且解析內部命令 shell 不需要創建子進程,因此其執行速度比外部命令快。比如:history、cd、exit 等等。
外部命令是 Linux 系統中的實用程序部分,在系統加載時并不隨系統一起被加載到內存中,而是在需要時才將其調用內存。雖然其不包含在 shell 中,但是其命令執行過程是由 shell 程序控制的。外部命令是在 Bash 之外額外安裝的,通常放在/bin,/usr/bin,/sbin,/usr/sbin等等。比如:ls、vi等。
type 命令來區分是內建命令還是外部命令:
help 命令只能用于顯示內建命令,外部命令的話基本上都有一個參數--help:
實驗九 Linux任務計劃crontab
通過 crontab 命令,可在固定的間隔時間執行指定的系統指令或 shell script 腳本:
實驗十 命令執行順序控制與管道
1. 通過which, &&和 || 來選擇性的執行任務,并注意它們的順序搭配。
2. 管道的概念,| 用作分隔符,其前者的命令的輸出可作為其后者命令的輸入
3.grep命令在文本或stdin中查找匹配字符串
4. wc簡單記數小工具
5. sort排序,之前在cat命令中用過
默認為字典排序:$ cat /etc/passwd | sort
反轉排序:$ cat /etc/passwd | sort -r
按特定字段排序:$ cat /etc/passwd | sort -t':' -k 3
6. uniq 去重復
uniq命令可以用于過濾或者輸出重復行。
實驗十一 文本處理
1. tr 命令可以用來刪除一段文本信息中的某些文字。或者將其進行轉換。-d,刪除和set1匹配的字符,注意不是全詞匹配也不是按字符順序匹配。-a,去除set1指定的在輸入文本中連續并重復的字符
2.?col 命令可以將Tab換成對等數量的空格鍵,或反轉這個操作。-x,將Tab轉換為空格;-h,將空格轉換為Tab。
3.join命令
4. paste命令 與join命令類似
實驗十二 數據流重定向
1. >命令 和 >> 命令
2. 文件描述符
文件描述符在形式上是一個非負整數。實際上,它是一個索引值,指向內核為每一個進程所維護的該進程打開文件的記錄表。當程序打開一個現有文件或者創建一個新文件時,內核向進程返回一個文件描述符。在程序設計中,一些涉及底層的程序編寫往往會圍繞著文件描述符展開。但是文件描述符這一概念往往只適用于 UNIX、Linux 這樣的操作系統。我們可以這樣使用這些文件描述符:默認使用終端的標準輸入作為命令的輸入和標準輸出作為命令的輸出
3. 使用tee命令進行重定向
4. 關于其他重定向理解還不夠,今后還需加強學習。
實驗十三 正則表達式
1. 正則表達式使用單個字符串來描述、匹配一系列符合某個句法規則的字符串。在很多文本編輯器里,正則表達式通常被用來檢索、替換那些符合某個模式的文本。
2. grep命令操作
3.?sed工具用于過濾和轉換文本的流編輯器。
打印2-5行,打印奇數行。一開始的錯誤是忘加空格,而導致缺少了要操作的目標文件。
將shiyanlou替換成hehe,并只打印那一行
實驗十四~十五 Linux軟件下載安裝和進程概念
十四章,學習了Linux中軟件下載安裝的特點,重點學習了apt的含義,與dep安裝命令的優勢劣勢;以及apt-get的相關命令;實驗十五講述了進程的相關概念,與本科操作系統課程所學類似,以及進程如何在系統中衍生,發展,以及進程之間存在的相互關系,同時了解了工作與進程,以及工作管理的一些使用性的操作。
實驗十六 進程管理
這一章節主要學習了top、ps、pstree等查看工具,以及使用這些命令時所得到的信息的含義,同時我們學習了用于發送重啟或結束進程的信號kill命令,以及修改進程優先級的nice,renice命令。
實驗十七 Linux系統日志
日志數據可以是有價值的信息寶庫,也可以是毫無價值的數據泥潭。它可以記錄下系統產生的所有行為,并按照某種規范表達出來。
日志分為系統日志和應用日志
如上圖所示,在更新日志時發現了問題,首先在初始啟動實驗環境后查看歷史日志,發現日志并不像教程所說一樣為空,而且在我下載node.js后,再次查看日志,也沒有更新。
經過思考過后,我想到了一個可能:我們的實驗環境是實驗樓服務器隨便將一個會員使用過的環境分配來的,會員使用的環境不會清空,而我們使用的痕跡將會清空,所以在歷史日志里也不會改變。
2. rsyslog日志服務程序
rsyslog 主要是由 Input、Output、Parser 這樣三個模塊構成的,并且了解到數據的簡單走向,首先通過 Input module 來收集消息,然后將得到的消息傳給 Parser module,通過分析模塊的層層處理,將真正需要的消息傳給 Output module,然后便輸出至日志文件中。
3. logrotate日志管理工具
logrotate 程序是一個日志文件管理工具。用來把舊的日志文件刪除,并創建新的日志文件。我們可以根據日志文件的大小,也可以根據其天數來切割日志、管理日志,這個過程又叫做“轉儲”。
小結:
在本科期間,對Linux系統有過簡單的操作,這次學習不僅對Linux的基礎命令有了更全面更深度的學習,比如了解了常用的apt-get,以及在Windows中常用的dep;并且對其內部原理有了進一步了解。但是,由于這一周活動較多,時間較緊,對于正則表達式、重定向等內部原理還是一知半解,需要今后多看相關資料,來加強理解。
Linux內核是信息安全領域最為重要的一個內容,經過這次學習,感觸更深。例如在信息系統安全所學的用戶和文件的權限管理,在這次學習中就有所實踐,還需進一步學習,對主體域和客體類別等安全知識進行實踐操作;其次,日志的操作是維護信息安全的重要工具,因此對于日志的深入學習也是非常重要的。
總之,Linux內核原理是將來我們做項目以及參加工作的基礎,需要我們潛下心來認真學習,這次的學習有些倉促,并且只是學習實驗樓的知識是遠遠不夠的,還需我們通過其他資料多多補充。
總結
以上是生活随笔為你收集整理的实验楼 linux内核原理与分析,《Linux内核原理与分析》第一周作业 20189210的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php实现商品购物车添加功能,PHP实现
- 下一篇: linux下oracle修改最大连接数,