有一種說法,現代計算機不是靠電力驅動,而是靠“鼠標”。多少應用程序的界面需要移動和點擊鼠標來執行的。計算機本來的用意是把人類從反覆單調的工作中解放出來,但適得其反,擺在我們身邊的殘酷現實是我們每個人每天不得不移動和點擊鼠標,確保養家餬口的工作能夠順利正確地完成。
別嘆氣,存在另一個世界,那就是命令行,讓你暫時遠離鼠標。對那些苦哈哈的程序猿來講,這也許是另一種情調的工作方式。我們突然之間擁有了另一種意想不到的收穫,例如我想看看用戶目錄下的的文件大小,然後按升序排列產生個報表。如果用C/C++完成這項工作,至少得用好幾十行代碼,但是用一句命令行就能完成上面的功能。
du -s * | sort -nr > $HOME/space_report.txt
命令行有它的存在價值吧。還有把 Linux 桌面操作錄製成一段視頻。想起來就是一件複雜的任務,在Linux上用一句命令就能輕鬆搞定。
ffmpeg -f x11grab -s wxga -r 25 -i :0.0 -sameq /tmp/out.mpg
賣個關子,這個命令會在《多媒體篇》有詳細解釋。
估計你可能會迫不及待的想要實驗一下剛纔所提到的命令,但是苦於現在都流行的圖形界面,我們推薦的Cent OS默認也進入了圖形界面,看來做點實驗還是有點難度的。不過不用着急,Linux的老手們一定是要命令行的,所以想通過鍵盤輸入命令,一個合格的Linux發行版一定會做得十分方便,只是要先搞清楚一些概念。
1.4.1 開始執行命令
用戶和系統不是直接打交道,他們中間有個名字叫Shell的聯繫人。我們從鍵盤中輸入命令給Shell,Shell再把它們交給操作系統去執行。
從哪裏開始輸入命令呢?當然你可以在字符界面輸入命令(暫時先放放,稍後再看)。Linux系統還提供一個叫終端模擬器的程序。這個程序打開一個窗口,讓我們與Shell交流。Linux系統上的各種軟件向來是百花齊放,模擬器終端也不例外,例如gnome-terminal、konsole、xterm、rxvt、kvt、nxterm和eterm等,而大多數Linux發行版會同時支持幾種。
使用過Windows操作系統的你,在登錄Linux桌面系統後,應該也能輕鬆地從菜單中選擇啓動終端的圖標點擊就可以進入終端模擬器。當然你也可以在文件瀏覽器中找到叫“konsole”(KDE桌面)或“gnome-terminal”(Gnome桌面)的程序雙擊執行打開終端窗口。更有意思的是你可以打開任意多個窗口,每個窗口給你一個shell會話。你從中選擇了一個窗口開始鍵盤輸入magic。在終端上會顯示你剛纔敲入的字符magic。接下來還有magic的事情呢,當你按向上箭頭時可以看到前一個命令,再按向上箭頭又可以看到前一個的前一個命令,按向下箭頭命令又可以往回輸入顯示,最後我們又回到了magic輸入,你還可以使用左右箭頭移動光標進行字符輸入。
哦,我記得有個cp命令,那就試試吧:
$ cp /etc/resolv.conf /etc/resolv.conf.bak
cp: cannot create regular file `/etc/resolv.conf.bak': Permissiondenied
太欺負人了吧,怎麼簡單的命令都不讓偶用。你注意到沒有,Shell命令提示符是$,這意味着什麼?這意味着你是普通用戶,不是超級用戶,你沒有管理員權限。如果你是擁有管理員權限的超級用戶,提示符就變成#,你就可以在系統上做增加,刪除和修改文件的操作。
1.4.2 文本和圖形的切換
方纔我們介紹的方法是目前最常用的在桌面環境下執行命令方法,但是也有很多有“潔癖”的人喜歡使用純粹的文本終端,這就需要進行圖形和文本切換了,或者乾脆就關閉圖形界面。我們先搞定前者,後者會在後面的章節做十分詳細的介紹。
要在文本和圖形界面之間來回切換是非常簡單的,只需要使用快捷鍵<Ctrl><Alt><F1>~<F6>來回切換就行,具體什麼效果大家可以自己實驗,這個地方不同的Linux發行版會有不同的設定,所以本書就不好做定論。一般<Crtl><Alt><F1>代表圖形界面,而剩下的5組快捷鍵對應5個不同的文本終端,我們推薦的Cent OS就是這種設定。還有的設定是<Ctrl><Alt><F7>是圖形界面,其它6組快捷鍵是6個不同的文本終端。
一般不建議使用本小節介紹的方法來操作Linux,除非你有強烈的“潔癖”或遇到有“潔癖”的系統管理員。因爲這種方法你能夠使用到的獨立文本終端最多隻有6個。而使用上一小結介紹的在圖形界面中使用終端模擬器的方法,則沒有文本終端數量的限制,對於一個Linux老手來講,文本終端永遠都是多多益善的。很快你們就會有這種感覺了。
1.4.3 基礎命令的操作
提及Linux基本命令,先給你講述一個浪漫的故事:
曾經有個男孩很喜歡一個女孩,可是不敢表白。他想了一個辦法。在Linux終端上輸入echo“這週六下午2:30,能在如嘉咖啡館一起喝咖啡嗎?”>love.txt,然後回車。
接着他找來那張他喜歡的鼓浪嶼圖片(pic.png),使用 cat pic.png love.txt >pic1.png重新做了一個圖片文件。
他鼓起勇氣給那個女孩寫了封郵件,郵件內容只是:請查閱附件。
女孩收到郵件,用圖片瀏覽器打開後,看到的只是一張美麗的風景圖片,有點納悶。但是聰明的她,立刻猜到了那個男孩的用意。她用tail pic1.png,很快發現了祕密。
$ tail pic1.png
PNG
IHDRmtEXtSoftwareAdobe ImageReadyq<IDATxA0
[圖片編碼內容,一般人無法直接讀懂…….]
)'EDDDqq^cDDD/GDDDDmyw/}!"""“這週六下午2:30,能在如嘉咖啡館一起喝咖啡嗎?”
太妙了,原來學好Linux通過Linux基礎命令還可以交女朋友。加大馬力,我們來認識更多的命令。不過我們會遇到一個問題,Linux命令太多了,數量至少有200多個,怎麼記呀。其實誰也記不住這麼多命令,剝絲抽繭抓重點,把重要的和經常使用的搞定了就行。按照它們在系統中所起的作用,我做一下簡單地分類說明。
表1-1
命令 | 說明 |
目錄和文件處理: 在講解之前,我們先認識一下幾個好玩的符號 . :小點活在當下,即當前目錄。例如:./jie_work執行當前目錄下的jie_work文件 ..:兩點跑上去,既到當前的上一級目錄。舉個例子,命令cd..修改當前工作目錄到上一級目錄 ~ :水波帶我回家,即/home/我的登錄名。例如我的登錄名爲zhangjie,cd ~命令就是cd /home/zhangjie。當然你直接輸入cd,也有同樣功效 | |
mkdir | 建立目錄 用法:mkdir [OPTION] DIRECTORY… 例:mkdir fangru |
ls | 列出目錄下的內容 用法:ls [OPTION]…[FILE]… 例:ls -al fangru |
cd | 更換工作目錄 用法:cd [DIRECTORY] 例:cd fangru |
pwd | 顯示當前工作目錄 用法:pwd |
vim | 增強版文本編輯器 用法:vim [OPTION] [file] 例:vim helloworld.c |
cp | 拷貝文件及其目錄 用法:cp [OPTION]... SOURCE DEST 例:cp jie.txt jie.bak |
mv | 移動(重命名)文件 用法:mv [OPTION]…SOURCE DEST 例:mv jieold jienew |
rm | 刪除文件或目錄 用法:rm [OPTION]…FILE… 例:rm -rf jie_dir |
find | 在目錄及其子目錄查找文件 用法:find [OPTION] [path] [pattern] 例:find -name jie*.txt |
history | 顯示最近使用過的命令 用法:history |
文本處理: 在講解之前,有必要說明一下模式的定義。 模式是一種表達式,不列出所有元素,而是給出一系列字符串的一種精確描述 例如:ab*cd匹配了以ab開始和cd結束的一系列字符串 | |
cat | 連結文件打印到標準輸出 用法:cat [OPTION] [FILE]… 例:cat pic.png love.txt > pic1.png 還記得那個命令行的故事吧? |
echo | 顯示一行文本 用法:echo [OPTION] [string] 例:echo $HOME |
grep | 搜索特定的內容並將含有這些內容的行標準輸出 用法:grep [OPTION] PATTERN [FILE] 例:grep -i Jagen magicLinux.txt |
wc | 統計指定文件中的字節數、字數、行數,並將統計結果顯示輸出 用法:wc [OPTION]…[FILE] 例:wc -L magicLinux.txt |
sort | 對文件中的各行進行排序 用法:sort [OPTION]…[FILE] 例:sort -r magicLinux.txt |
系統管理: 在講解這類命令之前,先談談文件權限的定義。Linux系統上文件有三種權限-讀、寫和執行。敲入ls -l命令後,我們會發現有10個字母表示文件類型和權限信息:第一個字母是文件類型,d代表目錄,-代表普通文件;接下了的每三個字母爲一組,分別代表擁有者(owner)羣組成員(groups)其他人(others)的讀、寫和執行權限。 例:drwxrw-r--意味着這是一個目錄,擁有者擁有讀、寫和執行三種權限,羣組成員擁有讀寫權限,其他人只擁有可讀權限。 權限位還可以用相應的數值來代表,讀-4、寫-2、執行-1,這些數字或它們的和就代表一個角色的權限。 例:rwxrw-r-- = 764 673 = rw-rwx-wx | |
chmod | 控制用戶對文件的權限 用法:chmod [OPTION] [MODE] [FILE] 例:chmod 764 count.sh |
chown | 改變檔案的擁有者 用法:chown [OPTION]…OWNER[:[GROUP]] FILE 例:chown jie magicLinux.txt |
su | su是切換到其他用戶,但是不切換環境變量 su - 是完整的切換到一個用戶環境 要知兩者的區別,用export命令一查便知。 用法:su [OPTION] [LOGIN] 例:su zhangjie |
passwd | 更改使用者的密碼參數 /etc/passwd 存儲的是操作系統用戶信息,該文件爲所有用戶可見 /etc/shadow 被稱爲/etc/passwd的影子文件。它們之間的內容是互補的。shadow內容包括用戶及被加密的密碼以及其它/etc/passwd不能包括的信息,比如用戶的有效期限等 用法:passwd [OPTION] 例:passwd zhangjie |
who | 顯示目前登入系統的用戶信息 用法:who [OPTION] 例:who -b |
進程管理 | |
ps | 強悍的進程查看命令 用法:ps [OPTION] 例:ps -aef |
kill | 刪除執行中的程序或工作 用法:kill [OPTION] 例:kill -9 3154 |
jobs | 通過jobs命令查到後臺正在執行的命令的序號(非進程號pid) 用法:jobs |
bg | 指定號碼(非進程號)的命令進程放到後臺運行 用法:輸入'ctrl+z' 然後輸入 'bg<job id>' 例:bg <job id> |
fg | 指定號碼(非進程號)的命令進程放到前臺運行 用法:fg <jobid> |
檔案 | |
tar | 壓縮和解壓 用法:tar [OPTION] DEST SOURCE 例:tar -cvf /home/archive.tar(壓縮) tar -xvf /home/archive.tar(解壓) |
zip | 打包壓縮 用法:zip [OPTION] DEST SOURSE 例:zip original.zip original |
unzip | 解壓縮zip文件 用法:unzip filename 例:unzip original.zip |
網絡 | |
ssh | 遠程登錄的客戶端 用法:ssh [options] [user]@hostname 例:ssh [email protected] |
scp | 基於ssh登陸進行安全的遠程文件拷貝命令 用法:scp [options] [[user]@host1:file1] [[user]@host2:file2] 例:scp file1.txt [email protected]:~/work/ |
文件系統 | |
fdisk | 觀察硬盤之實體使用情形與分割硬盤用 用法:fdisk [options] 例:sudo fdisk -l |
mount | 如果你要使用儲存設備(Mo、硬盤、光驅等),就得先將它掛上(Mount),而當儲存設備掛上了之後,就可以把它當成一個目錄來進行訪問。掛上一個設備使用mount命令 在使用mount這個指令時,至少要先知道下列三種信息: 1. 要Mount對象的文件系統類型? 2. 要Mount對象的設備名稱? 3. 要將設備Mount到哪個目錄去? 用法:mount -t type device dir 例:mount /dev/sda5 /media/target |
umount | 卸除文件系統 用法:umount [OPTIONS] dir | device 例:umount /media/target |
du | 查看目錄或文件所佔用磁盤空間的大小 用法:du [OPTION]……[FILE]…… 例:du |
df | 檢查文件系統的磁盤空間佔用情況。 用法:df [OPTION]……[FILE]…… 例:df |
quota | 顯示磁盤使用情況和限制情況 用法:quota [OPTION] 例:quota -v |
擴展 | |
reboot | 重啓系統 用法:reboot [OPTION] 例:reboot |
poweroff | 關閉系統 用法:poweroff [OPTION] 例:poweroff |
sed | 一種在線編輯器,它一次處理一行內容 用法:sed [OPTION] [input-file] 例:sed 's/love/hate/g' loveletter.txt |
awk | 一種文本處理工具,Linux及Unix環境中功能最強大的數據處理引擎之一。 用法:awk [-F fs] [-v var=value] [-f progfile | 'prog'] [file ……] 例:awk '/^[ns]/{print $1}' test |
1.4.4 快捷鍵
有位老哥在Linux系統上開發一箇中文相似度匹配的項目,工作相當努力,已經達到了廢寢忘食的地步,但是使用的TF-IDF算法的計算速度還是不盡人意。這時候,他決定先停一停,換換思路,玩玩俄羅斯方塊放鬆一下。突然老闆走過來,他下意識地使用<Ctrl><Alt><d>快速隱藏桌面。還好有驚無險,沒有被老闆發覺在玩遊戲,否則又需要一大堆的解釋。老闆拍了拍他的肩膀走了過去,隨後他用<Ctrl><Alt><d>又恢復了原有功能的顯示。
舉這個好玩的例子可不是讓你照着做,而是爲了告訴你Linux系統提供了很多快捷鍵提高命令行使用的工作效率,減少鍵盤的敲打以及拼寫錯誤。說幾個比較實用的快捷鍵,其他的你自己去挖掘。
表1-2
常用快捷鍵 | 說明 |
<Tab> | 在文本終端下,使用TAB自動完成命令的輸入,或者顯示所有的可選項。超好用! |
<Shift><PgUp> | 滾動文本終端輸出。終端屏幕上一屏又一屏的提示信息,就可以用它向上翻滾查看這些信息 |
<Shift><PgDown> | 回滾文本終端輸出 |
<Ctrl><Alt><Delete> | 文本終端下關機和重新啓動 |
<Ctrl><Alt><Backspace> | 關閉或重啓X Window |
<Ctrl>a | 到正在輸入的命令行的首部 |
<Ctrl>e | 到正在輸入的命令行的尾部 |
<Ctrl>c | 終止當前進程 |
<Ctrl>s | 停止終端傳輸 |
<Ctrl>p | 上一條執行的命令 |
<Ctrl>n | 下一條執行的命令,前提是執行過<Ctrl>p |
<Ctrl>f | 在當前命令輸入中右移光標一個字符 |
<Ctrl>b | 在當前命令輸入中左移光標一個字符 |
<Alt>f | 在當前命令輸入中右移光標一個詞 |
<Alt>b | 在當前命令輸入中左移光標一個詞 |
<Ctrl>k | 刪除光標後的所有字符 |
<Ctrl>d | 刪除光標當前的字符 |
<Alt><Tab> | 切換不同的程序窗口 |
<Alt><F1> | 訪問“開始”菜單 |
<Alt><鼠標左鍵> | 拖曳並移動一個窗口 |
<Alt><PrintScreen> | 把當前屏幕的快照存到剪貼板 |
<Ctrl><Alt><d> | 哈哈,老闆鍵。切換隱藏/顯示桌面運行程序 |
<Alt><SysRq><key> | 組合鍵主要是針對開發人員的程序調試目的或者在緊急場合下才使用。可以通過設置相對應的內核參數來激活或者取消。 例如:echo "1" > /proc/sys/kernel/sysrq 激活這個組合命令 |
<Alt><SysRq><s> | 防止數據丟失,掛載的文件系統緊急同步把緩存寫入硬盤 |
…… | …… |
<Alt><SysRq><o> | 關機。下班了! |
使用快捷鍵太爽了!默認情況下,按TAB在bash中是可以自動補齊,但僅能自動補齊命令名和文件名。可是我們追求的目標是“更快、更高、更強”,那就安裝bash-completion做個增強版的自動補齊吧。使用 TAB 鍵自動補齊幾乎任何內容,包括參數、文件、目錄甚至包名稱等。安裝方法很簡單,下載到的包中包含一個bash-completion 文件,將其放在/etc下。在/etc/bash.bashrc文件里加入可執行命令。
# Run bash completion code
if [ -r /etc/bash_completion ]; then
# Source completioncode.
. /etc/bash_completion
fi
1.更快……
舉個例子。淘寶的預發環境中的Linux機器不允許直接登陸。需要申請跳板機,通過跳板機才能登陸預發機。在跳板機上,我們經常使用ssh 10.232.15.201操作命令,好麻煩呀。在/etc/hosts中我們加入一行“10.232.15.201 prerelease”。
然後我們使用complete -F _known_hosts ssh告訴ssh需要的主機名。一旦設置好了,我就可以通過敲[TAB]鍵完成主機名的輸入:sshp[TAB]
就完成了prerelease主機名的輸入。另外你還可以定製私有命令的補齊功能,不過你需要自己編寫Shell腳本實現,然後把這個腳本放在/etc/bash_completion.d/下。在隨後的章節,我們會學習Shell腳本的編程。在學完之後,希望你會通過編寫腳本產生自己的補齊功能。
2.更高……
有的命令太長,那就把命令縮短。命令別名(alias)就啓到這個作用。例如在SuSE版本中有個命令別名的文件(/etc/profile.d/alias.bash)。它裏面定義了許多命令別名,例如alias ..='cd ..', 那麼在終端上輸入..就相當於輸入了cd..直接回到上級目錄,方便不?
3.更強……
在Shell終端上還可以一下子運行多個命令,用“;”就把各個命令串起來,例如:
[命令1];[命令2];[命令3]
不管執行的命令結果如何,就是勇往直前地衝呀殺呀,把這些命令最終執行掉。但是有時候,這些命令之間是有關聯的,就需要改改這種傻愣愣地工作方式。如果前一個命令執行成功才執行下一個命令,我們可以用“&&”把命令連接起來。例如:
[命令1]&&[命令2]&&[命令3]
如果前一個命令執行失敗才執行下一個命令,我們可以用“||”把命令連接起來。例如:
[命令1]||[命令2]||[命令3]
使用命令行的技巧還真不少,我們可以考慮出版一本專門講述Linux命令行的參考書了。
1.4.5 錯誤信息
%boast
bash: fg: %boast: No such job.
儘管當命令執行成功的時候終端屏幕上不顯示任何信息,但是當發生錯誤的時候它經常會以一定的形式彙報錯誤。上面我開了一個關於Linux錯誤信息提示的玩笑。boast是吹牛的意思。我在終端上敲入boast後,終端返回錯誤提示No such job,意思是沒有這樣的工作。不同的命令返回的錯誤信息格式有所不同,但是經常有如下格式:命令名:執行內容:錯誤信息。例如rm jie給出的錯誤返回是rm:cannot remove ‘jie’:No such file or directory.那究竟發生了什麼情況?當rm命令要刪除jie這個文件,jie這個文件不存在,產生了代號爲2的錯誤。這個錯誤代號的意思就是找不到相應的文件或目錄。錯誤代碼就被自動翻譯成No such file or directory。由於錯誤代碼有限(大約有一百多種),有可能許多不同問題對應於同一個錯誤代碼,所以理解要執行的命令和錯誤信息的關係很重要。當得到錯誤信息的時候,讓我歡喜讓我憂,喜的是知道發生什麼樣的錯誤,憂的是對錯誤信息有可能百思不得其解不知道如何去解決,這時候就得憑經驗了。
errno.h包含一個完整的基本錯誤代碼列表。除此之外,其他一些頭文件(.h)也定義了自己的一些錯誤代碼。
下面的例子列出了所有系統定義的錯誤代碼及錯誤描述,源代碼是:
#include<string.h>
#include <errno.h>
#include <stdio.h>
int main(intargc, char ** argv) {
int i = 0;
for(i = 0; i< 256; i++)
printf("errno.%02dis: %s\n", i, strerror(i));
return 0;
}
編譯此程序用命令:
gcc -Wall strerror.c
執行程序:
./a.out
這個程序的輸出有點長,所以就不去浪費紙張了,你自己在電腦上看吧。
1.4.6 聯機幫助
遇到問題尋找幫助能加快解決問題的速度。在Linux系統上,有以下幾個途徑使用幫助:
l遇到問題,男人(man)的幫助很靠譜。需要某個命令或者配置文件的幫助,就在終端輸入:
man 命令名或man +配置文件。
屏幕就會顯示對應命令系統的幫助手冊。輸入“q”退出幫助瀏覽器。
linfo 和 man功能相似,但是包含更多的最新信息。
l使用“命令名 –help”得到一個簡略容易消化的命令幫助。
l程序自帶README文件或者其他幫助信息文件,例如在/usr/share/doc下的一些手冊。
如何在man頁中查找信息呢?瀏覽man頁默認的工具是less。less的使用方法很簡單。翻頁用space,翻半頁用u,查找用/緊跟着正則表達式,用n查找下一個匹配項,用shift+ N查找前一個匹配項。如果這頁裏沒有你感興趣的,按space翻到下頁。更多的操作還是man一下less文檔吧。
很多命令的man幫助頁中涉及到腳本命令、系統調用和編程接口等多方面。例如“man3printf”就是瀏覽printf的編程手冊。用“man -a 【命令名】”查看關於這個【命令名】所有幫助的文檔。“man -kscanf”會給你一個所有與scanf有關的 man頁列表。還有,SEE ALSO經常是被遺忘的角落,但是我經常會在這裏發現其他有用的命令或函數,千萬不要放過它。
條條大路通羅馬,你是Linux系統的主人,如果喜歡用vim閱讀man頁的話,改一下配置和裝個man.vim插件就行,另外使用most工具瀏覽man頁也是一個好主意。
1.4.7 致命的Linux命令
我這可不是開玩笑,有些Linux命令輕則造成數據丟失,重則導致系統癱瘓。您看這位同學漫不經心,敲入了rm -rf /,強制刪除 / 目錄下的所有文件,這代價可是很慘痛的。
還有一個很好玩的例子,我用旺旺聊天的形式給你講述:
小雪2012-08-25 15:28:10:在你Linux系統上輸入這串東西:(){ :|:& };
灰貓2012-08-25 15:28:34:長得這麼怪?
小雪2012-08-25 15:28:41:試試看看是什麼結果。謝了。
灰貓2012-08-25 15:28:44:不好了。終端一直出現下面的提示:
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
很慘啊。
小雪2012-08-25 15:29:02:哈哈,真的很慘。
灰貓2012-08-25 15:29:21:Ctrl+C都是不管用的。
小雪2012-08-25 15:29:21:即便退出這個終端也是沒有用的。
灰貓2012-08-25 15:29:31:最後全都是這個。-bash:pipe error:Cannot allocate memory-bash:pipe error:Cannot allocate memory
root用戶搞不定,因爲killall的速度受到了影響,只能重啓機器了。
小雪2012-08-25 15:30:15:這就是著名fork炸彈。看來危害不小。
灰貓2012-08-25 15:30:34:別幸災樂禍了。能告訴我什麼原理嗎?
小雪2012-08-25 15:31:43:把:(){ :|:& };寫成下面格式你就看懂了
:()
{
:|:&
};
灰貓2012-08-25 15:32:13:明白了。“:”函數裏面定義操作是後臺執行“:”函數重定向到“:”函數,“:”函數的遞歸調用。
小雪2012-08-25 15:32:15:是滴。系統執行海量的進程直到死亡。
灰貓2012-08-25 15:32:43:這樣的代碼不好分析,主要是因爲不清楚“:”是可以做爲函數名的。
小雪2012-08-25 15:33:12:Quite right。另外爲了防止這個問題的出現,要限制賦予root權限的用戶數量以及單用戶的進程數。
灰貓2012-08-25 15:34:12:哈哈。是的,擁有root權限的用戶操作不慎很容易給系統造成破壞。
故事還沒有結束。如何限制用戶的進程數呢?我們可以在/etc/security/limits.conf文件末尾加入一行:
* hard nproc 200
限制用戶的進程數爲200,但root用戶不會受這個限制。
這個命令行還涉及到Shell腳本編程,我們將在後面的章節來學習。
1.5 結束語
我們的第一次親密接觸到此該告一段落了。如果Linux長什麼樣你依然不知道,那真的實在是抱歉,你太懶了。如果你要問我學習Linux的捷徑是什麼,我的答案就是兩個字:勤勞。一定要勤動手,才能學好Linux。
Linux與Windows是完全不同的操作系統,擁有着獨特的風采和特性。雖然我們對Linux遠不如像Windows那樣熟悉和親切,但是通過本章的親密接觸,或許能夠讓你體會到一下Linux所特有的那種“笨拙”的溫柔。只要那麼一點點就足夠了,我想那已經足夠提起你的慾望了。
接下來,我們將會從多個方面、多個角度以及多個層次,與大家共同去探索,Linux到底是什麼樣?