linux 基本操作筆記

來源:互聯網
上載者:User

linux 基本操作筆記
linux檔案系統的實現 linux有一個樹狀結構來組織檔案,數的頂端為根目錄/,節點為目錄,而末節點為所包含的資料檔案。我們可以對檔案進行多種操作,比如開啟和讀寫。 存放裝置分區 檔案系統的最終目的是把大量資料有組織地放入持久性的存放裝置中,比如硬碟和磁碟。這些存放裝置和記憶體不同,它們的儲存能力具備持久性,不會因為斷電而消失,儲存量大,但讀取速度慢。資料被存入某個分區中,一個典型的Linux分區(partition)包含有下面各個部分:分區的第一個部分是啟動區(Boot block),它主要是為電腦開機服務的。linux開機啟動後後,會首先載入MBR,隨後MBR從某個硬碟的啟動區載入程式。該程式負責進一步的作業系統的載入和啟動。為了方便管理,即使某個分區中沒有安裝作業系統,Linux也會在該分區預留啟動區。 啟動區之後的是超級區(Super block)。它儲存有檔案系統的相關資訊,包括檔案系統的類型,inode的數目,資料區塊的數目。 隨後是多個inodes,它們是實現檔案儲存體的關鍵。在Linux系統中,一個檔案可以分成幾個資料區塊儲存每個檔案對應一個inode。這個inode中包含多個指標,指向屬於該檔案各個資料區塊。當作業系統需要讀取檔案時,只需要對應inode的"地圖",收集起分散的資料區塊,就可以收穫我們的檔案了。 最後一部分是真正儲存資料的資料區塊data blocks。 當Linux想要開啟一個檔案時,只需要找到檔案對應的inode,然後沿著指標,將所有的資料區塊收集起來,就可以在記憶體中組成一個檔案的資料了。複雜的方式可以使用鏈表,每個資料快都有一個指標,指向屬於同一個檔案的下一個資料區塊,這樣的好處是可以利用零散的空餘空間,壞處是檔案操作必須按照線性方式進行,如果想隨機存取,那麼必須遍曆鏈表,指導目標位置。 列出檔案夾內詳細檔案資訊 ls是list的意思,重點在顯示檔案的檔案名稱與相關屬性。而選項『-al』則表示列出所有的檔案詳細的許可權與屬性 。floralin@ubuntu:~$ ls -al1)第一欄代表這個檔案的類型與許可權(permission): 第一個字元d則是目錄,當為-則是檔案,若是[ l ]則表示為連結檔(link file),是b則表示為裝置檔案裡面的可供儲存的介面裝置(可隨機存取裝置),若是c則表示為裝置檔案裡面的序列埠裝置,例如鍵盤、滑鼠(一次性讀取裝置)。 接下來的字元中,以三個為一組,均為rwx三個參數組合,[ r ]代表可讀(read)、[ w ]代表可寫(write)、[ x ]代表可執行(execute)。第一組為檔案擁有者的許可權,第二組為同群組的許可權,第三組為其他非本群組的許可權。 2)第二欄表示多少個檔名連結到此節點 3)第三欄表示檔案的擁有帳號 4)第四欄表示這個檔案所屬群組 5)第五欄表示這個檔案的容量大小,預設單位為bytes 6) 第六欄表示這個檔案的建檔日期或是最近的修改日期 建立檔案夾floralin@ubuntu:~/Desktop/linux_study$ mkdir testfloralin@ubuntu:~/Desktop/linux_study$ lstest 刪除空檔案夾 floralin@ubuntu:~/Desktop/linux_study$ rm testrm: cannot remove ‘test’: Is a directoryfloralin@ubuntu:~/Desktop/linux_study$ rmdir testfloralin@ubuntu:~/Desktop/linux_study$ ls 改變檔案屬性與許可權 chgrp  :改變檔案所屬群組chown  :改變檔案擁有者chmod  :改變檔案的許可權, SUID, SGID, SBIT等等的特性 改變檔案所屬群組 floralin@ubuntu:~/Desktop/linux_study$ sudo chgrp users linux_study改變檔案擁有者floralin@ubuntu:~/Desktop/linux_study$ sudo chown root linux_study 改變檔案許可權floralin@ubuntu:~/Desktop/linux_study$ sudo chmod 755 linux_study變更檔的許可權為755: owner r+w+x, group: r+x, others: r+x 檔案顯示 $cat filename         : 顯示檔案$cat file1 file2      : 串連顯示file1和file2$head -1 filename     :顯示檔案第一行$tail -5 filename     : 顯示檔案倒數第五行$diff file1 file2     :顯示file1和file2的差別統計檔案中行數、詞和字元數目floralin@ubuntu:~/Desktop/linux_study$ wc test2 6 15 71 test2 顯示日期 $date +"%Y-%m-%d_%T"以YYYY-MM-DD_HH:MM:SS的格式顯示日期時間 (格式可參考$man date) $date --date="1999-01-03 05:30:00" 顯示從1900-01-03 05:30:00具體資訊網路 顯示網路借口以及相應的IP地址。ifconfig可用於設定網路介面: floralin@ubuntu:~/Desktop/linux_study$ ifconfig運行eth0介面 floralin@ubuntu:~/Desktop/linux_study$ sudo ifup eth0
 關閉eth0介面 floralin@ubuntu:~/Desktop/linux_study$ sudo ifdown eth0
 顯示無線網路介面 floralin@ubuntu:~/Desktop/linux_study$ iwconfig顯示路由表。route可用於修改路由表floralin@ubuntu:~/Desktop/linux_study$ iwconfig 當前網路連接狀態 floralin@ubuntu:~/Desktop/linux_study$ netstat發送ping包到地址IP floralin@ubuntu:~/Desktop/linux_study$ ping 10.21.171.15向DHCP主機發送DHCP請求,以獲得IP地址以及其他設定資訊 floralin@ubuntu:~/Desktop/linux_study$ sudo dhclient使用wget 下載url指向的資源 floralin@ubuntu:~/Desktop/linux_study$ sudo dhclientDNS查詢,尋找網域名稱domain對應的ip floralin@ubuntu:~/Desktop/linux_study$ sudo dhclient打包和壓縮 比較大型的檔案透過所謂的檔案壓縮技術之後,可以將他的磁碟使用量降低, 可以達到減低檔案容量的效果。 linux 支援的壓縮命令非常多,且不同的命令所用的壓縮技術並不相同,當然彼此之間可能就無法互連壓縮/解壓縮檔案,區分不同的壓縮檔通常通過尾碼的副檔名。 gzip或bzip2壓縮testfloralin@ubuntu:~/Desktop/linux_study$ gzip test解壓testfloralin@ubuntu:~/Desktop/linux_study$ gzip -d test打包命令: tar[root@linux ~]# tar -cvf /tmp/etc.tar /etc <==僅打包,不壓縮![root@linux ~]# tar -zcvf /tmp/etc.tar.gz /etc <==打包後,以 gzip 壓縮[root@linux ~]# tar -jcvf /tmp/etc.tar.bz2 /etc <==打包後,以 bzip2 壓縮將 /tmp/etc.tar.gz 檔案解壓縮在 /usr/local/src 底下 [root@linux ~]# cd /usr/local/src[root@linux src]# tar -zxvf /tmp/etc.tar.gz linux進程基礎 電腦實際上可以做的事情實質非常簡單,比如會所兩數求和,尋找記憶體中的地址等等。這些基礎的電腦動作被稱為“指令”。所謂的程式就是這一系列指令的集合。通過程式,我們可以讓電腦完成複雜的操作。 程式大多數會被儲存為可執行檔檔案。 進程和程式的區別 進程是程式的一種具體實現。進程是執行程式的過程。查詢正在啟動並執行進程:floralin@ubuntu:~$ ps -eo pid,comm,cmd -e代表列出全部進程,-o pid,comm,cmd代表我們需要pid,comm和cmd資訊。每一行代表一個進程,三列的資訊分別代表,每一行進程的唯一PID表示、COMMAND是進程的簡稱、CMD是進程所對應的程式以及運行時所帶的參數(對於使用使用[ ]的,是kernel的一部分功能,被打扮成進程的樣子,方便作業系統管理)。 如何建立進程 實際上電腦在開機的時候,核心kernel只建立了一個init進程,linux kernel是並不直接建立新進程的系統調用。所有的進程是通過fork機制建立的。(fork,新的進程需要通過的的進程複製自身得到)。當進程fork的時候,linux在記憶體中開闢出一片新的記憶體空間給新的進程,並將老的進程空間中的內容複寫到新的空間中,從此兩個進程同時運行。可以通過pstree命令來顯示整個進程樹:子進程的終結 當子進程終結時,會通知父進程清空自己所佔據的記憶體,並在kernel中留下自己退出資訊。 父進程在得知子進程終結時,會對該子進程使用wait系統調用。這個wait函數能從kernel中取出子進程的退出資訊,並清空該資訊在kernel中所佔據的空間。 但是,如果父進程早於子進程終結,子進程就會成為一個孤兒(orphand)進程。孤兒進程會被過繼給init進程,init進程也就成了該進程的父進程。init進程負責該子進程終結時調用wait函數。 linux訊號程基礎 kernel內有若干個進程,每個進程不允許該進程之外的人進入,這樣對於每個進程來說是一個保護機制 ,但是有時候需要打破封閉的保護,以便和進程交流資訊。 這樣就需要一種通訊方式。傳遞的訊號比較粗糙 ,只能是一個整數,但正是因為傳遞的資訊量很少,訊號才便於管理和使用。 訊號被經常用於系統管理相關的任務,比如通知進程終結、中止或者恢複等等,由核心管理,也可以由核心產生。 通過ping來查詢進程的PID,然後可以通過kill命令來向某個進程發出訊號:$kill -SIGCONT 9575 傳遞SIGCONT訊號給ping進程。 訊號處理 所有的訊號都採用了對應訊號的預設操作,但並不絕對,當進程決定執行訊號的時候,有集幾種可能: 1)無視。訊號被清除,進程本身補採取任何特殊的操作。 2)預設。每個訊號對應一定的預設操作,比如上面所提及的SIGCONT用於繼續進程。 3)自訂動作。也叫做擷取訊號,執行進程中預設的對應於該訊號的操作。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.