linux必需掌握的基礎(一)

第1章 Linux簡介

Linux是一套遵守POSIX(Portable Operating System Interface for Computer Enviroment,即可移植操作系統環境接口)規範的操作系統。它以其系統簡明功能強大性能穩定以及擴展性和安全性高著稱,可以支持多用戶、多任務環境,具有較好的實時性廣泛的協議支持,同時具有優秀的系統兼容性可移植性

Linux起源於UNIX。1969年,Bell實驗室的Ken Thompson在一臺閒置的PDP-7計算機上設計了一種多用戶、多任務的操作系統。不久,Dennis Richie加入並與其共同開發了最早的UNIX。早期的UNIX由彙編語言編寫,在其第三個版本用C語言進行了重寫。之後,UNIX移植到更爲強大的 DEC PDP-11/45與11/70計算機上運行並逐漸走出實驗室成爲主流操作系統之一。

UNIX通常在價格不菲的企業級服務器或工作站等級的服務器上使用,因此得不到普及。Andre S.Tanenbaum教授開發出在PC上使用的具有相同功能而且是免費的類似UNIX的系統——Minix系統。 之後,1991年芬蘭赫爾辛基大學技術科學系的Linus Torvalds在Minix的基礎上開發了Linux,並將0.02版放到Internet上,作爲自由和開放源代碼的自由軟件傳播,來自世界各地的編 程人員對其進行修訂和擴充。1994年,在互聯網上的志願開發者協同開發下,Linux發佈了標誌性的1.0版本。

Linux的特點及主要優勢:

1、免費的專業級操作系統:Linux遵守公共許可GPL,因此任何人都有共享和修改的自由,並且可以免費得到Linux的源代碼;

2、良好的可移植性:Linux可以在所有的計算機平臺上運行,包括筆記本、PC、工作站甚至大型機,支持x86、MIPS、PowerPc、SPARC等主流系統架構,並同時支持32位和64位操作系統。

3、良好的用戶界面:由MIT開發的X-Windows可以爲用戶提供一個具有多種窗口管理功能的對象集成環境。

4、低成本:Linux不僅內核是免費的,其許多系統程序及應用程序也是自由軟件,用戶可以從網上免費獲得。

5、內核的定製和剪裁:Linux內核採用動態加載技術,用戶可以將暫不需要的模塊從內核中剪裁掉,在需要時再重新加載,從而定製出很小的內核,甚至可以在一張容量爲1.44M的軟盤上安裝一個Linux操作系統。

6、廣泛的協議支持:網絡是Linux的生命。Linux在網絡方面具備與生俱來的優勢,其內核支持的主要協議包括:
TCP/IP通信協議。
IPX/SPX通信協議。
Apple Talk通信協議。包括X.25及Frame-relay。
ISDN通信協議。
PPP、SLIP、PLIP等通信協議。
ATM通信協議。

7、豐富的應用程序和開發工具支持:大部分在UNIX系統下的工具已經被成功移植到Linux系統上,包括幾乎所有的GNU軟件庫。
語言及編程環境:C、C++、Java、Perl和Fortran等。
數據庫:MYSQL、PostgreSQL及Oracle等。
Shell:bash、tesh、ash及csh等。
編輯器:emacs、Gedit、VIM及pico等。
圖形環境:GNOME、KDE、GIMP、IceWM等。
文字處理軟件:Opernoffice、Kword、abiWord等。
瀏覽器:Firefox等。

8、良好的安全性和穩定性:Linux是多任務、多用戶操作系統,可以支持用戶同時使用系統的處理器、內存、磁 盤和外設等資源。爲此,Linux採取了多種安全技術措施,包括對讀、寫進行權限控制,帶保護的子系統,審計跟蹤,核心授權等等。Linux本身的設計就 對病毒***提供了非常好的防禦機制,因此Linux系統基本上不用安裝殺毒軟件。Linux內核有極強的穩定性,可以長年累月地運行而不死機,因此被廣泛 應用在網關和防火牆。

Linux的版本繼承了UNIX版本制定的規則,分爲內核版本發行版本兩類。

內核是運行程序和管理如磁盤和打印機等硬件設備的核心程序,其開發規範一直由Linus領導的開發小組控制。內核具有兩種不同的版本號:實驗版本產品化版本。 版本的格式通常爲“主版本號.次版本號.修正號”。主版本號和次版本號表示有重要的功能變動,修正號表示較小的變動。次版本號如果是偶數說明這種版本相對 穩定,是可以產品化的版本,如果是奇數說明是實驗版本,內核中可能加入一些測試功能, 是一個內部可以存在BUG的測試版。比如2.6.34是產品化版本,2.5.73是實驗版本。產品化版本是修訂實驗版本中存在的錯誤後的副本。

全球有超過100種的Linux發行版本,較知名的包括:

1、Red Hat Linux:目前流行最廣的發行版。主要特點是方便簡易的安裝和操作使用,用戶可以名去繁雜的安裝和設置工作,儘快開始使用Linux。其圖形化的操作環 境與Windows不相上下。Red Hat Linux曾被權威的計算機雜誌Info World評爲最佳的Linux。

2、Slackware Linux:由Patrick Volkerding創建於1992年,是歷史最悠久的Linux發行版。主要特點是儘量採用原版的軟件包而不進行任何修改,並且一直堅持 KISS(Keep It Simple and Stupid)原則。Slackware追求效率而非易用性,所以使用配置文件進行管理,對Linux的新用戶是十分困難的。Slackware提供了更 多的透明性和靈活性,更適合比較有經驗的使用者。用戶可以通過Slackware深入學習Linux或者安裝編譯自己的軟件程序。有人評價:學會了Red Hat Linux,則只學會了Red Hat Linux;而學會了Slackware Linux,則學會了Linux。

3、Mandriva Linux:原名Mandrake,最早由Gal Duval創建並於1998年7月發佈。特點是集成了圖形化的桌面環境及圖形化的配置工具。最早基於Red Hat進行開發,Red Hat默認的桌面是GNOME,而Mandriva則採用KDE。

4、Debian Linux:最早由Ian Murdock於1993年創建,是迄今爲止最遵循GNU規範的Linux系統。特點是使用了Debian特有的軟件包管理工具dpkg,使得Debian上安裝、升級、刪除和管理軟件包變是非常容易。

5、SUSE Linux:最早由德國的SUSE linux AG公司發行維護,特點是使用了自主開發的軟件包管理系統YsST。2003年11月,Novell收購了SUSE,並對SUSE Linux進行了改進,使之成爲Red Hat有力的競爭對手。

6、紅旗Linux:中國人自行研發的Linux,特點是提供了良好的中文支持,其界面和操作設計也更符合中國人的習慣。

 

自由軟件創始人Richard Stillman於1984年開創了GNU Project (GNU採用遞歸方式定義:是“GNU's Not Unix”的縮寫),該項目得到業界認可並迅速遍及全球。大量志願者在GNU的激勵下,編寫了大量自由軟件,Richard Stillman本人也開發了很多著名的自由軟件,包括GNU Compiler Collection (GCC)、GNU symbolic debugger (GDB)和GNU Emacs。由於GNU Emacs的成功,Richard Stillman在1985年建立了自由軟件基金會FSF(Free Software Foundation)。

GPL是由FSF發行的用於計算機軟件的證書,取得該證書的軟件被稱爲自由軟件。GPL與傳統商業軟件許可協議CopyRight相對立,所以又被 稱爲CopyLeft。GPL保證任何人有共享和修改自由軟件的自由,並且規定在不增加費用的條件下可以得到自由軟件的源代碼。同時還規定自由軟件的衍生 作品必須以GPL作爲它重新發布的許可協議,即GPL在給予用戶各種權利的同時,也要求用戶通過修改其自由軟件而得到的軟件也必須成爲自由軟件,從而從整 體上保證了自由軟件的衍生和傳播。

Linux樹立了“自由開放之路”的典範。它的發展狀大以事實證明了自由軟件發展道路的成功。

 

第2章 初識Linux

計算機啓動時,BIOS(從硬盤中)裝載MBR(主引導記錄),然後從當前分區啓動,從而運行啓動器程序。啓動器有兩種:LILO(LInux LOader)和GRUB(GRand Unified Bootloader)。通過啓動器,用戶可以選擇要啓動的操作系統。如果選擇Linux,Linux則從引導程序手中接管CPU的控制權,繼而開始執行 Linux的核心映像代碼,開臺Linux的啓動過程。

Linux啓動後,提供兩種方式供用戶登錄:文本方式和圖形方式。如果以圖形方式登錄,登錄成功後可以直接進入KDE或Gnome等窗口管理器。當 Linux系統引導時,啓動的第一個進程是init(/sbin/init)。init程序會根據/etc/inittab文件的配置內容執行相應的腳 本。init是在linux下,在系統啓動過程中,初始化所有的設備驅動程序和數據結構等之後,由內核啓動的一個用戶級程序,並由此init程序進而完成 系統的啓動過程。init會根據/etc/inittab文件中的配置內容執行相應的腳本,完成系統的初始化工作。(Ubuntu上使用upstart完 成系統的啓動,而且讀取的腳本爲/etc/init/rc-sysinit.conf文件。)

在inittab文件中,每行包括4個以冒號分隔的字段,格式如下:
id : runlevels : action : process 比如 1:2345:respawn:/sbin/mingetty tty1
id爲標識符,通常由1~2字符組成;runlevels表示運行級別,共7種;action表示執行的動作;process表示執行的進程。

運行級別(runlevels)包括如下幾種:# 0 - 停機;# 1 - 單用戶模式;# 2 - 多用戶,沒有 NFS;# 3 - 完全多用戶模式(標準的運行級);# 4 – 系統保留的;# 5 – X11 (x window);# 6 - 重新啓動。(Ubuntu與傳統的linux有差別,它的運行級別有# 0 – 關閉系統;# 1 – 單用戶模式;# 2~5 – 完整的多用戶模式;# 6 – 重新啓動)

執行動作(action)包括:initdefault - 指定默認的運行模式;sysinit - 指定運行的初始化腳本,默認爲/etc/rc.d/rc.sysinit;respawn - 若指定的進程結束,則重新執行該進程;ctrlaltdel - 用戶按下Ctrl+Alt+Del。

 

使用文本方式登錄的用戶可以通過startx命令啓動圖形界面:
startx [ [ client ] options ... ] [ -- [ server ] options .. ]
其中“--”用於分隔客戶端參數與此同時服務器參數。startx命令通常不帶參數運行。在圖形界面下運行該命令會出現錯誤。

xset可以用來設置X-windows的各項參數。它的語法格式爲:
xset [c][q][s][r][p][m][-dpms][+dpms][-display][led]

 

使用圖形界面登錄後可以使用虛擬終端進入終端工作方式。(其它使用終端的方式爲:設置initab文件使系統啓動直接進入命令行終端方式;遠程登錄進行終端。)

編輯命令行時的快捷鍵有:

移動光標的快捷鍵:Ctrl+f - 字符前移、Ctrl+b - 字符後移、Alt+f - 單詞前移、Alt+b - 單詞後移、Ctrl+a - 行起始、Ctrl+e - 行結尾、Ctrl+l - 清屏。

編輯的快捷鍵:Ctrl+d - 刪除當前位、Backspace - 刪除前一位、Ctrl+t - 調換當前字符與前一字符、Alt+t - 調換當前單詞和前一單詞、Alt+u - 把當前單詞大寫、Alt+l - 把當前單詞小寫、Alt+c - 把當前單詞首字母大寫、Alt+v - 插入特殊字符。

剪切和粘貼的快捷方式:Ctrl+k - 剪切至行末、Ctrl+u - 剪切至行首、Ctrl+w - 剪切前個單詞、Alt+d - 剪切下一個單詞、Ctrl+y - 粘貼最近剪切的文本、Alt+y - 粘貼先前的文本、Ctrl+c:刪除整行。(Ubuntu虛擬終端下Alt+y和Ctrl+c命令不起作用)。

 

命令行利用tab鍵可以自動補全。如果當前文本可以確定一個唯一的匹配項,則一次tab就可以補全該項;否則連續兩次tab可以顯示所有可能匹配的項。可以補全的種類包括:

以$開頭的文本以當前Shell的環境變量補全;

以~開頭的文本以用戶名補全;

常規字符開頭的文本以命令、別名或函數名來補全;

以@開頭的文本以/etc/hosts/文件中的主機名來補全(Ubuntu上貌似不支持)。

 

退出Linux的命令包括:

關機或重新啓動 —— shutdown [-akrhfnc] [-t secs] [time] [warning message]

關閉系統 —— halt [-n] [-w] [-d] [-f] [-i] [-p];(halt命令相當於shutdown -h now)

重新啓動系統 —— reboot [-n] [-w] [-d] [-f] [-i] [p];(reboot命令相當於shutdown -r now)

退出Shell -- exit;(等同於Ctrl+D)

註銷用戶 -- logout;(虛擬終端不能使用logout,而只能使用exit)

 

man命令可以查看Linux的幫助手冊:
man [-adfhktwW] [section] [-M path] [-P pager] [-S list] [-m system] [-p string] [name]

man手冊的存儲位置定義在/etc/man.config文件裏(在ubuntu裏是/etc/manpath.config)。一般按類型存放 在/usr/share/man目錄裏。手冊根據類型分爲man1~man9共九個章節,比如/usr/share/man/man1。在各章節目錄下包 含着.gz格式的手冊文件,它的命名規則爲“手冊名稱.章節.gz”。要查看特定章節的手冊信息,可以使用命令“man N [name]”,其中N取值範圍爲1~9。

可以使用重定向把man的信息輸出到一個文件中:man [name] > [filename]

 

其它的聯機幫助命令有:

基於字符串查找whatis數據庫 -- apropos;(等同於man -k。apropos以“name - description”的格式輸出所有名稱或描述與關鍵字匹配的命令)

顯示內建命令的幫助信息 -- help [-s] [pattern..]; (-s表示只顯示命令的格式信息,pattern是要查詢的內容。該命令同樣顯示多個以pattern開頭的命令。[command] --help同樣可以得到命令的幫助信息。)

查看info格式幫助信息 -- info   [-apropos=STRING] [--directory=DIR] [--dribble=FILENAME] [--file=FILENAME] [--help] [--index-search=STRING] [--node=NODENAME]  [--output=FILENAME] [--raw-escapes] [--no-raw-escapes] [--restore=FILENAME] [--show-options, --usage] [--subnodes] [--vi-keys] [--version] [--where, --location];(info文檔是比man手冊有更強的交互性的另一種格式的幫助信息,通常存放在/usr/share/info目錄中。pinfo命令同樣可以查看info文檔,其採用Lynx瀏覽器風格,支持鼠標功能。)

查詢文件存儲位置 -- whereis [-s] [-b] [-m] [-S dir] [-M dir] [] [-f] [name];(查找一個命令的二進制文件、源文件或幫助文件在系統中的位置)

查找簡潔的幫助信息 -- whatis [keyword]。(在使用whatis命令之前需要用makewhatis命令建立whatis數據庫,只有系統管理員才能建立)

 

第3章 系統管理與設置

3.1常用的信息顯示命令

arch:顯示主機的體系結構,等同於uname -m,可輸出i386、i486、arm等。

cal:顯示日曆。

cat /proc/meminfo:查看內存使用情況。/proc目錄下的文件通常用來幫助查看內核運行信息,系統關閉後,該目錄的文件不再存在。

cat /proc/modules:查看當前系統模塊。

cat /proc/version:查看當前系統版本。

cat /proc/partitions:查看當前系統分區。

cat /etc/issue:顯示當前系統的發行版本。

cat /proc/cpuinfo:顯示CPU信息。

cat /proc/interrupts:顯示中斷信息。

cat /proc/filesystems:顯示文件系統信息。

date:顯示或設置系統時間。

dmesg:顯示啓動信息。檢測和控制內核的緩存,通常用來顯示輸出系統最後一次啓動時的內核內部緩存信息。

echo:顯示文本行。(echo -e支持轉義字符)

free:顯示內存信息。(free -s 2 -c 3表示每隔2s刷新一次內存,共刷新3次)

fgconsole:顯示活動的虛擬終端數目。

fuser:用文件或套接口識別進程。(fuser -l顯示信號,fuser -a /root顯示與/root目錄相關的進程,fuser -k /root殺死所有與/root目錄相關的進程)

gdialog:從Shell創建對話框。(例:gdialog --title "hello" --yesno "this is content")

history:顯示歷史指令。(保留最近執行的命令記錄,默認可以保留500個。history 5表示顯示最近執行的5個命令。history -c清空歷史記錄。重新執行已執行的命令可以使用“!<命令事件號>”)

hostname:顯示或設置當前系統的主機名。(-s顯示短主機名;-a顯示主機別名;-i顯示主機IP;-d顯示主機域名;--yp顯示NIS/YP域名;hostname somename設置主機名)

hash:顯示、添加或清除哈希表。(-l顯示哈希表;-r清除表;-p<path><name>增加內容;-t<command>顯示指定命令的完整路徑)

hwclock:顯示和設置硬件時鐘。(hwclock -utc顯示utc時間)

ipcs:顯示IPC設備信息。(對進程通信進行描述。-p顯示PID信息;-t時間信息;-m共享內存信息;-c創建者信息)

isosize:顯示輸出iso9660文件系統的大小。(光驅設備屬於iso9660文件系統,isosize /dev/cdrom顯示文件大小。isosize -d 1024 /dev/cdrom以大小爲1024的塊來顯示光驅設備的大小。-x以易讀方式顯示大小。)

jobs:顯示後臺執行的作業。(命令後接&會以後臺方式運行該命令。-l列出作業的詳細信息;-p列出作業ID,-s列出停止執行的作業。)

lsmod:顯示所有已加載的模塊。

locale:顯示當前系統的語言設置。(-a輸出所有可用的語言名稱;-m輸出所有可用的字符集)

mesg:顯示信息。(y允許用戶通過write命令發送信息到當前終端;n禁止發送)

minfo:顯示ms-dos文件系統的各項參數。(包括扇區數、磁頭數、柱面數等。minfo -v C: 除顯示文件系統的各項參數外,以十六進制顯示C盤扇區內容。)

modinfo:顯示內核模塊信息。(modinfo modname)

mev:監視鼠標情況。

pstree:以樹狀圖顯示程序。(默認以init進程爲根。pid可指定某一進程爲根;-p可顯示進程及進程號;-h高亮當前正在執行的進程。)

pwd:顯示當前目錄。

proc文件系統:查看系統內核信息。(proc不是真實的文件系統,不佔用外存,只是以文件的方式爲訪問Linux內核數據提供接口。ls /proc可查看)

ps:報告程序狀況。(-e查看當前所有進程;-u root查看以root身份運行的進程;-u root N查看非root身份運行的進程;-o pid,tt,user,fname,f,tmout,wchan以指定的排序方式顯示;a顯示所有進程,包括其他用戶的進程;x顯示沒有控制終端的所有 進程;-C command顯示與command進程相關的進程號,進程及其子進程)

pmap:顯示程序的內存信息。(pmap pid)

procinfo:顯示系統狀態信息。

runlevel:顯示系統運行級別。(輸出前一個和當前的運行級別。如果沒有記錄上次系統的運行等級,則用N表示。運行級別說明:0-關閉系統;1-單用戶模式;2-多用戶模式,但不支持NFS;3-完全的多用戶模式;4-保留;5-圖形用戶模式;6-重新啓動。)

sysctl:設置系統核心參數。(-a顯示當前所有的設置;-w<varible=key>設置參數。)

stat:顯示文件/文件系統的詳細信息。(例:stat /dev/sda)

top:顯示進程信息。(q鍵退出)

time:執行命令並顯示該進程執行的時間。(例time ls)

tload:顯示系統負載。

uptime:顯示系統的運行信息。(18:28:00 up 1 day,  6:58,  7 users,  load average: 0.07, 0.07, 0.12表示當前時間爲18:28,系統運行1天6小時58分,有7個用戶登陸系統,過去一分鐘內的平均負載爲0.07,過支5分鐘內的平均負載爲 0.07,過去15分鐘內的平均負載爲0.12。)

uname:顯示操作系統信息。(-a顯示當前主機所有軟硬件信息)

vmstat:顯示虛擬內存的統計信息。

yes:連續輸出給定的字符串。(yes | rm -i *命令可以自動回答rm命令提出的問題)

3.2 常用的系統管理命令

apm:高級電源管理。(ubuntu顯示No APM support in kernel)

apmd:高級電源管理守護進程。

apmsleep:設置掛起、待機及喚醒。(apmsleep -s +1:50掛機1小時50分鐘後被喚醒。apmsleep -s 8:00掛機直到早上8點被喚醒)

bg:將程序放在後臺執行。(例:sudo find / -name *.txt,之後用ctrl+z中止,顯示"[2]+  已停止 sudo find / -name *.txt",再執行bg 2可把這個程序放在後臺執行。)

chsh:改變登錄系統時的Shell。(默認爲/bin/bash。)

clear:清除終端屏幕。

depmod:檢查模塊依賴關係。(--show顯示輸出模塊之間的依賴關係。)

exec:執行完命令後,交出控制權。(虛擬終端上運行該exec會在執行完命令後退出終端。)

fc:修改並執行命令。(-l類似於history。fc 2 4:把命令號爲2、3、4的命令在vi中編輯,編輯完成後執行這些命令。)

fg:把後臺任務放到前臺。(vi &,再通過jobs可以查看後臺任務,顯示“[1]+  已停止 vi”。執行fg 1可以把vi放到前臺執行。)

gcov:coverage測試工具。(gcc sorcefile.c -o executable -ftest-coverage -fprofile-arcs可以生成一個.gcno文件,再運行executalbe,之後便可以用gcov命令查看運行情況。-b查看程序的分支情 況,-f查看函數的使用情況。)

init:所有進程的父進程。(init 數字可以切換運行等級。比如init 0爲關機;init 6是重啓。init有一個鏈接命令telinit。)

ipcrm:刪除消息隊列、信號量或共享內存的ID。(ipcs顯示IPC相關信息,ipcrm -m 32768刪除進程32768的共享內存;-q刪除消息隊列;-s刪除信號量。不帶參數刪除所有。)

kill:殺死進程。(-l參數顯示所有可以使用的信號。 kill -s 信號 進程號:向進程發送指定信號,不指定時的默認信號爲SIGHUP。-s SIGKILL強制殺死進程,可能導致某些資源沒有正確釋放。信號可以直接作爲參數,如kill -KILL或kill -9。)

killall:殺死同名的所有進程。(-l顯示所有可用的信號。killall -s signal 進程名:向所有同名進程發送信號。默認信號爲SIGTERM。信號也可以直接作爲參數。)

logrotate:處理log文件。(替換、壓縮、刪除或通過郵件發送系統日誌。logrotate /etc/logrotate.conf指定配置文件。)

mtools:軟盤操作命令集。(mtools顯示所有支持的軟盤命令,爲相應的MS-DOS命令前加“m”,如"mdir a:"。)

nice:設定進程優先級。(nice -N 命令。如nice -15 vim。N取值範圍爲-20~19。-20是最高等級,19是最低等級。超過19的值被視爲19;小於-20的值被視爲-20。系統默認等級爲0。未指定優先級的nice命令默認等級爲10。)

nohup:退出系統繼續執行命令。(虛擬終端運行nohup command &會運行命令,並顯示nohup: 忽略輸入並把輸出追加到"nohup.out"。)

ntsysv:設置系統的各種服務。(顯示圖形界面。ubuntu上找不到該命令。)

open:開啓虛擬終端。(open -s -c 6 -- ls -al在虛擬終端6執行ls -al命令,同時切換到虛擬終端6。-s執行命令時,切換到新的虛擬終端。-w等待命令結束。如果-w與-s合用,在命令結束後切換加原來的終端。)

pgrep:查找符合條件的進程。(-u root查找由root用戶創建的進程,-l同時列出進程名稱和ID。-v搜索不符合條件的進程。-P pid列出父進程爲指定進程的所有進程。)

pidof:顯示當前正在運行程序的進程ID。(例pidof vi。-o omitpid忽略進程號爲omitpid的進程。-s返回首次匹配。)

pkill:殺死進程。(ps各kill的結合,在當前所有進程中查找符合條件的進程,然後發送相應信號。pkill -t tty8殺死終端8的所有進程。-u root殺死root的進程。pkill -9 vim殺死vim。)

pwck:檢查密碼文件。(例:pwck /etc/passwd;pwck /etc/shadow。-r只讀模式。)

rlogin:遠端登錄。(先在遠端主機上運行chkconfig rlogin on開啓rlogin服務,ubuntu上找不到該服務。之後使用rlogin 192.168.20.122 -l username來登錄該遠端主機。)

renice:對進程優先級進程調整。(renice N 進程號,或-u 用戶名,或-g 用戶組。與nice不同,N前不需要“-”。)

rmmod:刪除模塊。(lsmod顯示系統已安裝的模塊。-a刪除所有沒有使用的模塊。-v顯示運行時的詳細信息。)

rsh:遠端登錄的Shell。(遠端主機chkconfig rsh on。例:rsh -l yang 192.168.20.122 /bin/ls。ubuntu上rsh爲unknown service。)

screen:多重視窗管理程序。(在一個終端上模擬多個終 端。 screen或ctrl+a+c創建一個新的screen。ctrl+a進行screen的切換。screen -ls顯示所有screen列表。-d讓指定的screen離線。-r恢復指定的作業。unbuntu的虛擬終端好像只能創建一個screen。)

sleep:休眠。(s秒,m分,h小時,d天。虛擬終端上表示爲其自身暫停。)

sudo:以其他身份來執行命令。(-L列出可以使用的參數。-u username使用指定身份執行命令。)

suspend:暫停執行Shell。(直到收到SIGCONT信號爲止。-f表示強制暫停。)

symlinks:管理和維護符號鏈接。(symlinks -v /:列出根目錄下所有的符號鏈接。-c將絕對路徑的鏈接轉化爲相對路徑;-d刪除失效的鏈接(dangling);-r遞歸檢查子目錄;-t與-c合用時,對換進行檢測,但不進行實際的轉換。)

vlock:鎖定終端。

wait:等待程序返回狀態。(例:wait pid。)

watch:重複執行命令並將結果輸出。(watch -n 10 ls每隔10秒運行一次ls命令。)

&:將任務放到後臺執行。(例:vi &。)

3.3 常用的系統維護命令

alias:設置命令的別名。(alias列出已有的別名。-p以“name=value”的形式列出別名。alias name=value設置別名。)

aumix:設置音效設備。(圖形界面。ubuntu上運行:aumix:打開混音器時發生錯誤: 沒有那個文件或目錄。)

authconfig:配置系統的認證資源。(圖形界面。對NIS、/etc/passwd、/etc/shadow、LDAP、Kerberos5以及SMB等資源認證進行配置。-back將“取消”按鈕更改爲“返回”按鈕。ubuntu:authconfig:找不到命令)

bind:顯示或設置按鍵組合。(-l列出所有功能函數的名稱。-p列出所有功能函數及其綁定。-q function查詢指定功能的按鍵或按鍵組合。)

chkconfig:設置和檢查系統的服務設置。(--list列出所有服務設置狀態。chkconfig telnet on開啓telnet服務。chkconfig telnet off關閉telnet服務。)

declare:顯示或設置Shell變量。(-p顯示每一變量的名稱和屬性值。-x顯示環境變量;-f顯示函數名稱;-r只讀模式。)

dircolors:設置ls命令顯示的顏色。(-p顯示默認值。-b顯示Bourne Shell顏色代碼設置;-c顯示C Shell顏色代碼設置。)

enable:開動或關閉Shell內置命令。(-a顯示所有內置命令;-p顯示已加載的命令列表;enable name指定加載的命令。enable -n name關閉指定的命令。)

eval:連續執行多個命令。(例:eval ls; free; ps)

export:設置或顯示環境變量。(-p顯示所有環境變量。export name=value設置;-n刪除。)

false:返回值爲失敗。(例:ls後,echo $?顯示0,表示無錯誤。false後,echo $?顯示1,表示失敗。)

fbset:顯示或設置幀緩存。(fbset -g 800 600 1024 768設置畫面分辨率800x600、桌面分辨率1024x768。-accel true啓動硬件加速。-bcast true啓動廣播功能。-test測試。)

hostid:顯示出當前主機的數字標識。

insmod:載入模塊。

ldcondifg:配置動態鏈接綁定。(-v建立共享庫的正確鏈接,更新緩衝區,並顯示相關信息。-n dir只對特定目錄更新。)

ldd:顯示共享庫文件的相互信賴關係。(顯示指定的程序或庫文件所使用的共享庫。-v顯示所有信息。)

lilo:安裝啓動裝載程序。

losetup:設置和控制循環設備。(例:losetup /dev/loop0。)

mkraid:初始化或升級raid。(將一組塊設備設置爲一個raid設備陣列。適合所有raid類型,包括RAID1、RAID4、RAID5、線性和RAID0。例:mkraid -f /dev/sda1+/dev/fd0。)

modprobe:自動處理可載入模塊。(根據模塊內的依賴關係自動安裝所有依賴的模塊。-c顯示當前默認設置。例:modprobe -v 8139too安裝網卡8139too。)

mouseconfig:設置鼠標相關參數。(redhat linux下的鼠標配置工具,ubuntu不支持。--text圖形界面方式;--noui genericusb以命令形式指定鼠標類型爲genericusb。--device psaux指定鼠標所在的端口爲PS/2。)

resize:設置終端視窗的大小。(resize查看視窗大小。-s 30 100設置大小爲30行,每行100字符。-c採用C shell命令;-u採用Bourne Shell命令。)

rmp:管理rpm包。(-i安裝;-q查詢;-e卸載。)

setserial:設置或顯示串口的信息。(例:setserial -v /dev/ttyS1顯示串口/dev/ttyS1的信息。-a顯示詳細配置信息。)

setup:設置公用程序。(設置認證、防火牆、鼠標、網絡配置、打印機配置、系統服務、時區配置等公用程序。ubuntu不支持。)

swapoff:卸載交換區(swap area)。(fdisk -l顯示系統分區信息,/dev/sda3可能是一個交換分區。swapoff /dev/sda3卸載該交換分區。)

swapon:加載交換區。(swapon /dev/sda3加載交換分區。swapon -s /dev/sda3顯示交換分區信息。)

set:設置Shell執行方式。(-f禁止使用通配符。+f添加通配符設置。例:set SHELL "/bin/sh"。)

telinit:設置系統運行等級。(/sbin/init的鏈接。)

true:返回值爲成功。(與false相反。)

ulimit:控制Shell及進程的資源。(-a顯示資源配置。-u 500設置單用戶創建進程上限爲500;-n 1000同一時間允許打開的文件數目最多爲1000;-v 1024最大虛擬內存爲1M。)

unalias:取消指定的別名。

unset:刪除變量或函數。

up2date:升級red hat linux系統。(ubuntu不支持。)

3.4 自動作業處理

crontab:設置定時執行。(首先確保有crond守護進 程運 行,用service crond start或service crond stop來開啓或關閉crond進程。ubuntu上是cron。該進程運行後,可以編輯/etc/crontab文件來設置自動作業。可以看到文件組織 格式爲“m h dom mon dow user  command”,分別表示“分、小時、日期、月、星期、用戶、命令”。例:17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly表示每小時的第17分鐘以root身份運行cd / && ... hourly的命令。另*/1 *   * * *   root    echo tommy crontab~~表示每隔1分鐘以root身份執行echo,默認情況會以郵件的方式發給root,通過cat /etc/mail/root可以查看。可以使用重定向“echo tommy crontab~~ >> /home/tommy/tmp/record”把輸出轉到一個文件中。)

anacron:任務高度守護進程。(與cron類似,區別在 於 cron任務如果在指定時間沒能完成,則調度工作就會失敗,而anacron沒能成功執行後會間隔一段時間後再次執行該任務。需要通過service anacron start啓動守護進程。編輯/etc/anacrontab命令可以設置調度任務。文件格式爲:時間間隔、等待時間、任務標識、命令。例:1 65 cron.daily run-parts /etc/cron.daily。)

at:系統將執行的任務排隊。(把任務放到隊列中,按時執行, 與 crond的區別是它只執行一次。例:at 21:55<回車> ls -al / /myshare/at_test<回車> <Ctrl+d>在21:55時執行。at now +5 min在5分鐘後執行。at 3pm tomorrow在明天下午3點執行。at 8am+3days在三天後早上8點執行。at -l查詢已經設置的任務。at -c 6顯示已經設置的任務6的內容。所有的任務都存儲在/var/spool/at目錄中。)

atd:執行已經排隊的任務。(at的任務要執行的話,必須要有一個atd的守護進程運行。-d輸出調試信息。-s只執行已排隊的任務一次。)

atq:檢查排隊的任務。

atrm:刪除已經排隊的任務。

atrun:執行已排隊的任務。(本質爲一個Shell腳本,等價於atd -s。)

batch:批處理。(與at一樣,batch也使用atd守 護進 程執行,命令格式也相同。不同在於batch在系統平均負載低於一個特定值時纔會運行,默認爲0.8。例:batch<回車> ls <回車> echo "hello" <回車> <Ctrl+d>。)

3.5 系統日誌

syslogd:啓動syslog日誌進程。(-r招收來自網絡的syslog信息。修改配置文件後,用killall -HUP syslogd來重啓syslog進程。)

syslog.conf:系統日誌配置文件。(/etc /syslog.conf,格式爲[消息來源.消息級別] <Tab> [動作]。例:mail.*  /var/log/maillog將所有與電子郵件相關的信息保存到mailog文件中。kern.emerg  *把內核恐慌消息發送給所有登錄的用戶。)

logger:測試syslog.conf。(logger -p [消息] [消息內容]。例:logger -p kern.emerg "Just test"。)

echo > 日誌文件:清空日誌。(如果創建日誌文件的服務正在運行,必須停止服務,才能刪除日誌。利用echo命令,不必停止日誌服務。例:echo > /usr/local/apache/logs/error_log。)


第4章 用戶和用戶組管理

4.1 普通用戶的管理

/etc/passwd文件:存儲用戶的相關信息。(包括用戶 名、 字碼、主目錄位置等。可以用vipw命令編輯/etc/passwd文件。vipw類似於vi,但在編輯文件時對文件加鎖,編輯結束後解鎖。文件格式 爲:Username:encrypted password:UID:GID:full name:home directory:login shell。例:root:x:0:0:root:/root:/bin/bash。因爲linux2.0以上版本因爲安全性,把密碼與用戶基本信息分開 存儲,所以在存放密碼的位置爲“x”標識。真正的密碼在/etc/shadow文件中。用戶標識號UID爲整數,取值範圍爲0~65535。0~439一 般由系統保留,其中“0”爲根用戶。用戶組標識號GID也爲整數,0~439被系統保留,用戶組的具體定義在/etc/group文件。個人信息描述 full name記錄用戶的真實姓名、電話、地址、郵編等信息,各項之間用“,”分隔,該字段可以爲空。登錄目錄home directory是用戶登錄系統後的默認目錄,通常就是用戶的主目錄,一般在/home下。根用戶的登錄目錄爲/root。登錄Shell是用戶以文本 方式登錄系統後啓動的Shell進程,常用的包括sh(Bourne Shell)、csh(C Shell)、ksh(Korn Shell)、tcsh(TENEX/TOPS-20 type C Shell)、bash(Bourne Again Shell)等。)

/etc/shadow文件:存儲用戶密碼。(passwd文 件可 被普通用戶訪問,而shadow文件只能被根用戶訪問。文件格式爲:Username:Encrypted password:Number of days:Minimum password life:Maximum password life:Warning period:Disable account:Account expiration:Reserved,分別表示用戶名、密碼、從1970年到上次修改密碼的天數、密碼必須連續使用的天數、密碼有效期、密碼失效前告 警的天數、從密碼過期到徹底停用的天數、賬號失效日期、保留字段。例:daemon:*:15089:0:99999:7:::。密碼由 MD5(Message Digest v5)算法加密。)

pwconv:創建影子文件。(把/etc/passwd中的密碼轉換爲“x”,同時創建影子文件/etc/shadow保存密碼。)

pwunconv:從影子文件恢復密文。(與pwconv相反,把/etc/shadow中的密碼加入到/etc/passwd文件中,並刪除/etc/shadow文件。)

useradd:添加新用戶。(adduser是 useradd的 一個鏈接。-c comment:用戶的註釋說明;-d home_dir:登錄目錄;-e expire_date:帳號失效日期;-f inactive_days:帳號過期到永久停用的天數,值爲0時表示帳號到期後立即停用,系統默認值爲-1,表示賬號不會被停用;-g initial_group:用戶默認的用戶組或默認用戶組ID,必須是已經存在的,默認值爲100,表示users組;-G group:設定該用戶爲若干用戶組的成員,每個用戶組之間用“,”分隔,且不可夾雜空格;-m:用戶目錄如不存在則自動建立;-k:把目錄 skeleton_dir和/etc/skel的文檔複製到用戶目錄中,默認下-m和-k都不被啓用;-M:不建立用戶主目錄,使用/etc /login.defs系統文件對用戶進行設定;-n:系統默認用戶組名稱與用戶名稱相同;-r:建立系統帳號,即比定義在/etc /logins.defs中的UID_MIN小的值,UID_MIN的默認值是500,-r不會創建用戶主目錄,除非指定-m參數;-sehll default_shell:指定用戶的登錄Shell,默認爲/bin/bash;-u uid:用戶UID;-D:單獨使用時顯示當前默認值,與其它選項一起使用表示在默認設置的基礎上重新設定默認值。)

usermod:修改用戶的帳號。(支持useradd命令的選項,如-c、-d、-e、-f、-g、-G、-s、-u,此外還支持-l login_name:變更用戶登錄時的名稱。)

userdel:刪除用戶。(刪除用戶在系統的賬戶信息。-r 刪除 用戶主目錄下的文檔,不指定該選項則保留主目錄。刪除用戶前,應該等待該用戶的進程執行完畢,或用ps -aux | grep "username"終止。此外還應查看是否有該用戶的定時任務,用命令crontab -u username -r。)

passwd:修改用戶密碼。(-k:只有密碼過期才需要用戶 設定 密碼。-l:通過在用戶的密碼字段加前綴“!”,對用戶進行鎖定。鎖定的用戶無法登錄系統。--stdin:從標準輸入重新讀入密碼。-u:與-l相反, 刪除密碼字段前的“!”對鎖定的用戶進行解鎖,口令爲空的用戶原則上是不允許解鎖的,配合-f可強制解鎖;-d:快速刪除用戶的密碼。-n mindays:設定最短的密碼有效期。-x maxdays:設定最長的密碼有效期。-w:密碼過期前,提前發出警報的天數。-i inactivedays:密碼過期到帳號停用的天數。-S:顯示指定用戶當前密碼狀態。passwd單獨使用時改變當前用戶的密碼。根用戶可以用 passwd username修改其他用戶的密碼。)

newusers:批量創建用戶。(首先建立一個用戶信息文件,格式與/etc/passwd相同,之後用命令newusers < filename來添加文件中定義的用戶。如果不使用管道方式“<”,可以在標準輸入中輸入各行,以ctrl+d表示結束。)

chpasswd:批量創建用戶密碼。(與newusers類似,從文件中導入密碼信息,文件格式爲username:password。)

chage:查看帳戶密碼的有效期。(例:chage -l username。)

4.2 根用戶的管理

su:變更用戶身份。(例:su username。不輸入用戶名時,默認的用戶爲root。)

chroot:改變根目錄。(對進程建立新的虛擬根目錄“/“,通常保護真正的根目錄。chroot newroot [command]。例:創建目錄/tmp/empty,把ls鏈接到該目錄,再運行chroot /tmp/empty /ls -Rl /。)

4.3 用戶組的管理

/etc/group文件:存儲組信息。(文件格式:用戶組:加密密碼:GID:組成員列表。密碼用“x”代替。)

/etc/gshadow文件:存儲組密碼。(文件格式:用戶組名稱:加密密碼:管理員帳號:組成員列表。管理員可以對該組進行增、刪、改等操作。)

groupadd:添加新用戶組。(命令格式:groupadd [-g GID [-o]] [-r] [-f] [-K KEY=VALUE] groupname。-g GID:用戶組id;-r:創建小於500的系統組,若不指定-g,則按遞減順序從小於500的可用值中挑選;-f:如果所定義的組已存在,則退出並顯示 成功信息,若-g和-f合用,且-g指定的組已存在,則-g指定的組被忽略且新的group會分配另一個id值;-o允許指定不唯一的GID;-K KEY=VALUE:重載/etc/login.defs中的默認值,例如設置GID_MIN;groupname:用戶組名稱。)

groupmod:修改用戶組屬性。(-g GID;-n new groupname。例:groupmod -g 503 -n yourgroup mygroup。)

groupdel:刪除用戶組。(必須等待該用戶組的所有用戶退出系統才能正常刪除。)

newgrp:切換所屬用戶組。(一個用戶同時可以屬於多個用戶組,但用戶登錄系統後,默認只屬於一個用戶組,newgrp可以使用戶在多個用戶組之間進行切換。語法:newgrp [-] [groupname]。“-”用於重新加載用戶工作環境,否則工作環境不改變。)

4.4 用戶和用戶組管理的安全防範措施

ac:統計用戶連接時間。(ac查看系統總的連接時間。ac -p按用戶進行統計。ac -d按天對連接進行彙總。)

last:查詢最近的使用者登錄時間。(例:last -n 10僅顯示10行記錄。)

lastb:顯示最近登錄系統失敗的用戶信息。

who:查詢當前系統中登錄的用戶。(-H顯示標題欄;-i顯示空閒時間字段;-T顯示用戶狀態;-m顯示使用當前標準輸入設備的用戶;-q顯示所有登錄的用戶名以及登錄用戶的數目;-p顯示由init進程創建的活動進程。)

w:查看登錄用戶及其進行的操作。(-f顯示登錄用戶信息,但不顯示登錄位置。-s以精簡模式顯示登錄用戶信息;-h不顯示標題欄;w root只查詢root用戶的信息。)

4.5 其他用戶和用戶組管理的常用命令

finger:查找並顯示用戶信息。(finger -l顯示用戶信息。finger username顯示特定用戶的信息。)

groups:顯示指定用戶所屬的用戶組。(groups顯示當前用戶所屬的用戶組。groups username顯示特定用戶的用戶組。)

id:顯示用戶的UID、GID。(id顯示當前用戶的 UID、 GID、和用戶所屬的組列表。id username顯示特定用戶的相應信息。-g顯示當前組ID;-G顯示用戶所屬的所有組ID;-u顯示用戶ID;-n顯示名稱而非數字;-r顯示真實用 戶ID而非有效用戶ID。)

logname:顯示登錄用戶的用戶名。

rwho:查看登錄本地的用戶信息。(與who類似,但可以顯示局域網中多臺主機的用戶登錄信息。當rwho命令在11分鐘內沒有收到主機的反饋信息,則會認爲主機已關閉,也不會報告已知的登錄用戶。除非使用-a選項,否則忽略1小時內沒有操作的用戶。)

users:顯示當前登錄的用戶。

write:將信息實時傳遞給登錄的用戶或終端。(例:write username<回車>this is message<回車><ctrl+d>。)

whoami:顯示當前用戶信息。

4.6 用戶及用戶組管理命令的綜合應用

/etc/nologin文件:引起普通用戶無法登錄的問題。(通過touch /etc/nologin命令可以建立該文件。刪除該文件可以解決普通用戶不能登錄的問題。ssh不查看/etc/nologin文件,所以即使該文件存在,使用ssh仍可以登錄系統。)

第5章 磁盤管理

5.1 Linux磁盤分區工具

硬盤可以分成若干個分區,每個分區可視爲獨立的磁盤來使用。硬盤的分區方案被記錄到“磁盤分區表”中,通常該表由4個部分組成,每個部分定義一個分 區的信息,因此原始概念中一個硬盤最多隻能建立4個分區,稱爲“主分區”。由於硬盤越來越大,4個分區已不無法滿足用戶的需要,爲此引入“擴展分區”的概 念。擴展分區由擴展磁盤分區表維護,可以把某個主分區作爲擴展分區劃分爲若干更小的“邏輯分區”。理論上,硬盤空間足夠時,可以建立任意數量的分區。

Linux上建議的分區有:swap分區,即虛擬內存;boot分區,存放操作系統的內核;根分區,整個操作系統的根目錄;/var分區,可以避免日誌文件的大小失控;/home分區,控制用戶佔用的空間大小。

磁盤分區工具有:

fdisk:強大的磁盤分區工具,不僅適合於Linux,在 Windows及MS-DOS中也有廣泛應用。-l顯示當前設備的分區表。-s /dev/sda1顯示指定分區的大小。-s /dev/sda顯示設備所有分區大小的總和。-v顯示fdisk的版本號。fdisk /dev/sda可以進入命令交互模式,內部命令包括m:顯示命令幫助;p:顯示當前分區表;q:退出;等等。)

parted:Linux下的磁盤分區與分區調整工具。parted /dev/sda可進入交互模式。

sfdisk:-l顯示分區信息。-s顯示磁盤或分區大小。

5.2 常用的磁盤管理命令

badblocks:檢查設備壞塊。(-s 顯示檢查進度。)

du:統計文件和目錄佔用的磁盤空間。(如果沒有指定文件或目錄名,則默認對當前目錄進行統計。-s僅顯示文件 或目錄佔用的塊數,默認一塊等於1024字節。-b以字節爲單位進行統計;-k以1024字節爲單位;-m以1024K爲單位;-c同時顯示總計;-h按 需顯示K、M或G。-a顯示所有文件及其子目錄佔用的數據塊數。例:du ~tommy,統計tommy的主目錄。)

df:顯示文件系統磁盤空間使用情況。(不指定文件系統的話,則顯示所有當前掛載的文件系統的可用空間。默認情 況下空間以1KB爲單位進行顯示,除非環境變量POSIXLY_CORRECT被指定,此時以512字節爲單位。-i以inode模式顯示,列出的都爲 inode數量;-h以可讀方式顯示,按需顯示K、M或G;-t type只顯示指定文件系統的信息,如df -t ext3;-x type與-t相反,不顯示指定的磁盤類型的磁盤。)

fdformat:格式化磁盤。(-n表示格式化完成後不進行驗證。)

hdparam:顯示和設定硬盤參數。(-C顯示電源管理,-d 1開啓DMA模式。例:hdparm /dev/sda1。)

mkfs:設置磁盤的文件系統。(例:mkfs -t ext4 /dev/sda2。)

mkswap:設置交換分區(swap area)。(例:mkswap /dev/hda4,將hda4指定爲一個新式的交換分區。-c在創建交換分區前檢查壞塊;-v0建立一箇舊式的交換區,-v1建立一個新式的交換區。)

mkisofs:建立ISO9660/JOLIET/HTS文件系統。(例:mkisofs -o myiso myfile把myfile製作爲名爲myiso的鏡像文件。)

mkinitrd:創建ramdisk的鏡像文件。(例:mkinitrd myfile.img 2.2.5-15建立名爲myfile.img、內核號爲2.2.5-15的鏡像文件。ubuntu上不支持。)

mt:磁帶驅動操作。(語法:mt operation device。操作有rewind、erase等。rmt命令是遠端磁帶傳輸協議模塊,可以通過進程間通信,遠程控制磁帶機進行備份、恢復備份操作。)

mzip:彈出Zip/Jaz設備中的磁盤。(-e彈出磁盤;-f與-e同時使用強制彈出;-q查詢狀態。)

sync:將緩衝區內的數據寫入磁盤。(在卸載移動硬盤前,可用sync把內存數據寫入磁盤。)

rsync:遠程同步。(例:rsync -av -e ssh /home/share/*.doc [email protected]:/usr/local/share通過ssh把/home/share下的所有doc文件備份到了 teacher主機的/usr/local/share目錄下。只同步修改過的文件和目錄。-a:歸檔模式;-v:冗餘模式。)

5.3 磁盤配額管理

/etc/fstab文件:定義分區的掛載方式。(文件格式 爲:<file system> <mount point>   <type>  <options>       <dump>  <pass>。例:/dev/sda1 / ext4 errors=remount-ro,user_xattr 0 1。要啓用磁盤配額管理,則需要添加usrquota和grpquota選項,例:/dev/sda2 /mnt/disk ext4 defaults,usrquota,grpquota 0 1。更改該文件後,需要reboot或者重新掛載使得配置文件生效:mount -o remount /dev/sda2。注意,當新的分區建立後,需要使用mkfs指定該分區的文件類型,否則掛載時會出現找不到文件系統的錯誤。)

quotacheck:檢查磁盤的使用空間與限制。(在修改 /etc/fstab文件並添加usrquota與grpquota選項後,可以使用命令quotacheck -avugc來創建aquota.user和aquota.group這兩個文件,其中-c表示重新創建配額文件,-a掃描在/etc/mtab文件中所 有掛載的非NFS文件系統;-u計算每個用戶佔用的目錄和文件數目,並創建aquota.user文件;-g計算每個用戶組佔用的目錄和文件數目,並創建 aquota.group文件;-v顯示命令執行過程。/etc/mtab與/etc/fstab內容類似,/etc/fstab表示系統開機時默認加載 的分區,而/etc/mtab表示目前系統加載中的分區。創建出來的aquota.user和aquota.group文件位於啓用usrquota和 grpquota選項的分區所掛載的位置,如/mnt/disk。)

edquota:對用戶或用戶組設置磁盤配額。 (aquota.user和aquota.group文件太複雜,無法直接編輯,只能用edquotaa命令編輯。-u username設置用戶的磁盤配額,-g groupname設置用戶組的磁盤配額。默認情況下-u被使用。文件格式爲:Filesystem blocks soft hard inodes soft hard,其中bolocks爲用戶已使用的空間,以塊爲單位,一塊爲1024字節,相應的inodes爲已使用的i結點數。soft爲軟限制,當用戶達 到此限制時,系統會發出警告信息,但用戶仍然可以繼續使用;hard爲硬限制,到達此限制時用戶就無法寫入了。前面的soft、hard對應block的 軟、硬限制,而後面的soft、hard對應inode的軟、硬限制。-p複製配額設置,如edquota -p usr1 -u usr2 usr3;-t設置軟時間限制。)

quota:顯示磁盤已使用的空間與配額限制。(-u查看用戶,爲默認選項;-g查看用戶組。)

quotaoff:關閉磁盤空間限制。(-a關閉所有在/etc/fstab列出的磁盤配額;-g用戶組配額;-u用戶配額;-p列出狀態。)

quotaon:啓動磁盤空間配額限制。(語法與quotaoff一樣。)

quotastats:顯示磁盤空間的限制。

repquota:對文件系統的磁盤配額情況進行統計。

5.4 邏輯卷管理(LVM)

LVM中相關的定義有:

物理卷(Physical volume,PV)相當於硬盤驅動器的一個標準主分區或邏輯分區;

物理盤區(Physical extent,PE)就是一塊磁盤空間。物理卷被劃分成多個同等大小的PE;

邏輯卷(Logical volume,LV)是LE的集合;

邏輯盤區(Logical extent,PE)和一個PE相對應,大小相同;

卷組(Volumn group,VG)是LV的集合。

pvdisplay:查看組成LVM卷的物理卷。

pvcreate:創建物理卷。(可以在硬盤上或其中某個分區上創建。)

vgcreate:創建卷組。(例:vgcreate myvolumn /dev/sdd1 /dev/sdc2。其中sdd1和sdc2都爲物理卷。)

vgextend:在卷組裏添加一個新的物理卷。(例:vgextend myvolumn /dev/sdd3。)

lvdisplay:查看邏輯卷。

lvcreate:創建一個邏輯卷。(例:lvcreate -l 50 myvolumn -n mylogical創建一個/dev/myvolumn/mylogical的新設備,可以用於掛載:mkfs -j /dev/myvolume/mylogical,mount -t ext3 /dev/myvolumn/mylogical /mnt/mynewdisk。-l 50表示大小爲50個PE,每個PE大小可能爲4.0M,而-L指定LV的size。-n指定LV的名字。)

lvextend:擴展邏輯卷。(如果有多餘的PE,可以擴展邏輯卷的大小。例:lvextend -L 800M /dev/myvolumn/mylogical。)

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