壹、作業系統安裝 一、X組態 Video Card:SiS 6326 Video Ram:4096kb X server:SVGA Monitor :View Sonic M70 水平 :30-70 KHz 垂直 :50-160 KHz 貳、登入登出 一、Root 通行碼 二、終端模式 1.1-6為六個基本終端模式,7為X windows 2.Alt-F1至F6為切至任一終端模式。 3.Alt-F7切至X windows 4.Ctrl-Alt-F1至F6,由X windows切至一至六的終端模式 三、每一使用者有其uid(User ID)放在/etc/passwd;每一群組有其gid(Group ID)放在/etc/group 四、每一使用者給一家目錄(Home directory),root以外的使用者,無法修改、刪除家目錄以外的檔案。 五、提示符號:[使用者@(在)主機 於什麼目錄]# 如[root@locahost /]# 六、重設root,須進入single mode(root單人操作模式) (一)lilo 開機按Tab,使lilo:出現,打入single;進入系統後,以passwd指令重設密碼。 (二)GRUB 開機時出現開機選單時,按'e'編某一選單項,出現三行: 「root 某分割 kernel … hdd=ide-scsi initrd … 」 光棒移到第二行,再選'e',在最後一個參數之後加上空白+大寫S(或數字1),按Enter完成本行修改,再按'b'開機。即進入single mode(即 Runlevel 1)。 用passwd這個指令來變更密碼,輸入密碼後再確認一次 (三)修復 GRUB 若可以出現 GRUB 微系統 在"GRUB >"之後,依序輸入: 1.grub 2.root (hd0,0) 3.setup (hd0) // (hd0是第一個硬碟裝置,邊依實況選擇) 4.quit ※ /boot/grub/grub.conf 中選項說明: # 將為開機預設。0為第一,1為第二,以此類推。 default 0 # 使用預設前等待的開機秒數。 timeout 30 # 將漂亮又肥大的 splash-image 啟用:) # 如果您沒有安裝顯示卡,請註解這行 splashimage=(hd0,0)/grub/splash.xpm.gz title=Gentoo Linux 2.6.5 # 儲存核心檔的分割區(或是作業系統) root (hd0,0) kernel /kernel-2.6.5-gentoo root=/dev/ram0 init=/linuxrc ramdisk=8192 real_root=/dev/hda3 # 以下四行為 Windows 系統適合的雙重開機。 # 在我們的例子,Windows是放在 /dev/hda6 title=Windows XP rootnoverify (hd0,5) makeactive chainloader +1 (四)以 LINUX 光碟開機後進入救援模式 1.在BOOT:後面輸入linux rescue後按ENTER 2.接著選contunue後進入SHELL 3.輸入sh-3.00# chroot /mnt/sysimage <---將根目錄切換到 /mnt/sysimage 4.輸入sh-3.00# grub-install /dev/hda <---重新安裝 GRUB 5.拿出光碟重新開機 七、帳號管理 (一)檔案 1./etc/passwd:每行一個帳號,分為七段,各段以「:」間開。格式為「帳號:密碼:uid:gid:註解:登入目錄:該帳號使用的shell」。 密碼早期放此欄,但容易被破,所以現在都放「x」。 uid 0 代表這個帳號是『系統管理員』,可以有多個帳號uid為0。1~99是由 distributions 自行建立的系統帳號;100~499是保留給使用者有系統帳號需求時,可以使用的帳號 UID;500~65535為可登入帳號,linux 核心 (2.6.x 版)已經可以支援到 4294967295 (2^32-1) 這麼大的 UID。 shell欄若放 /sbin/nologin ,則此帳號不可登入。 2./etc/shadow:真正放密碼的所在,共八。格式為「帳號:密碼:最近更動密碼的日期:密碼不可被更動的天數:密碼需要重新變更的天數:密碼需要變更期限前的警告天數:密碼過期後的帳號寬限時間(密碼失效日):帳號失效日期:保留」 最近更動密碼的日期、帳號失效日期都是以1970年1月1日起算。 以「dmtsai:$1$vyUuj.eX$omt6lKJvMcIZHx4H7RI1V.:14299:5:60:7:5:14419:」為例,帳號為 dmtsai ,密碼無法反推出明碼。 14299日為2009/02/24,能夠再次修改密碼的時間是 5 天以後(2009/03/01),密碼過期日期定義為 60 天後(2009/04/25),這表示:『使用者必須要在 2009/03/01 到 2009/04/25 之間的 60 天限制內去修改自己的密碼,若 2009/04/25 之後還是沒有變更密碼時,該密碼就宣告為過期』了! 密碼過期日前的 7 天(2009/04/19 ~ 2009/04/25) 如果使用者一直沒有更改密碼,只要 dmtsai 登入系統就會發現如下的訊息:「Warning: your password will expire in 5 days」 一直到 2009/04/25 都沒有更改密碼,那麼密碼就過期了。但是由於有 5 天的寬限天數, 因此 dmtsai 在 2009/04/30 前都還可以使用舊密碼登入主機。不過登入時會出現強制更改密碼的情況。 如果你是在 2009/04/30 以後嘗試以 dmtsai 登入的話,那麼就會無法登入。 到了 14419 (大約是 2009/07/24 左右) 該帳號就失效了。 如果密碼要永遠有效,就將「密碼需要重新變更的天數」設為「99999」 4./etc/group:格式為「群組名:群組密碼:gid:帳號1,帳號2 3./etc/sudoers:帳號 ALL=(ALL) NOPASSWD: ALL。如此可造超級權限,只要打sudo 指令,就可以root權限做事。 4.編/etc/passwd,改使用者的uid為0,使其和root的uid一樣。如此可造超級權限,但如此做,就無法telnet進去了。7.X版以後telnet會擋uid=0的使用者。但還是可以用putty進去。 (二)管理介面 /usr/sbin中 1.增使用者:useradd [-u uid [-o]] [-g 群組] [-G 諸群組,...] [-d 目錄] [-s shell] [-c 註解] [-m [-k template]] [-f 緩衝天數] [-e 有效期限] [-p 密碼] [-M] [-n] [-r] 使用者 ※-m自動建立使用者登入目錄,-M不要自動建立使用者登入目錄,-n不建立以使用者為名的群組,-r建立系統帳號。 諸群組的寫法為 群組1,群組2,… 群組間用「,」間開 2.列預設值:useradd -D。預設值如下:GROUP=100、HOME=/home、INACTIVE=-1、EXPIRE=、SHELL=/bin/bash、SKEL=/etc/skel。 3.改預設值:useradd -D [-g group] [-b base] [-s shell] [-f inactive] [-e expire ]。 4.adduser:指向useradd的符號連結。 5.刪使用者:userdel [-r] 使用者。-r刪除使用者登入目錄及其中所有檔案。 6.修改:usermod -g 群組 -G 諸群組 -d 登入目錄 -l 新名字 -p 密碼 -L 鎖碼使密碼無效 -U 解除鎖碼 -c 註解 -f 緩衝天數 -e 有效期限 -s shell -u uid 使用者。 7.建群組:groupadd [-g gid [-o]] [-r] [-f] 群組名。-f強制建立已存在群組,-g設gid,未設則從500派起,-o強制使用重複的gid,-r建立系統群組gid小於500。 8.刪群組:groupdel 群組 。 9.修群組:groupmod [-g gid [-o]] [-n 新群組名] 群組名 /usr/bin中 10.給密碼:passwd 使用者。參數:-d 刪密碼,-k 密碼逾期後才能更新,-S 密碼狀態,在不在如何編碼,-l 鎖碼使密碼無效,-u 解除鎖碼,-f強制解除鎖碼,配合-u使用。 八、檔案和目錄權限 (一)一個檔案和目錄屬於一個帳號,屬於一個群組。這是兩個獨立無關的事件,可分別設定。檔案或目錄隸屬的帳號,不一定要是檔案或目錄隸屬的群組之成員。 (二)對象 |檔案 |目錄 r |可讀其內容 |可ls其內之諸條目 w |可改或刪或更名 |可在其內建立、刪除對象,其內所建 | |對象之群組,以登入者之群組為群組 x |可執行 |可cd進此目錄 su |以檔案之帳號身份執行而非登入|暫無意義。其內所建對象仍以「登入 |帳號之身份執行 |者」為所有者 sg |執行時程序繼承檔案群組的所 |其內所建對象之群組改以「本目錄群 |有權而非登入帳號的所有權 |組」為新建者之群組 t | |只有root,目錄所有者,目錄內對象之 | |所有者可以對目錄內對象刪除或更名 ※刪除及更名既受檔案寫入權限之限制,也受其所在目錄對其內對象寫入權限之限制,因其會改變目錄內之條目。 ※修改檔案內容僅受檔案寫入權限之限制,不受其所在目錄對其內對象寫入權限之限制,因其不會改變目錄內之條目(改變檔案大小,不算改變條目)。 (三)改變檔案和目錄屬性 1.chown 帳號 檔案或目錄:將檔案或目錄的所有者改為此帳號。只有root可以用chown指令。 chown -R 帳號 目錄:將所有者遞傳到整個目錄樹。 chown 帳號.群組 檔案或目錄:同時改 檔案或目錄 的所有者和群組。 2.chgrp 群組 檔案或目錄:將檔案或目錄的所有群組改為此群組。所有的帳號都可以用chgrp指令將檔案或目錄改為該帳號的隸屬群組。 3.chmod [-R] 數字權限 檔案或目錄:改變檔案和目錄的rwx權限。-R代表遞迴。數字共12bit[su,sg,t][所有者][群組][其他] chmod [-R] [u|g|o|a][+|-|=][r|w|x|s|t] 檔案或目錄:改變 [使用者|群組|其他|所有][加|減|設為][讀|寫|執行|超級|粘滯位]。 (四)暫時權限 1.su 帳號:使用某帳號的密碼,暫時變更身份為某帳號,造一層shell並以某帳號登入這層shell,exit會回到原來那一層shell。但不變換所在路徑。 su - 帳號:同上,但會變換路徑到新帳號的家目錄,exit時再回到原有路徑。 2.sudo 命令:使用目前帳號的密碼,暫時取得超級使用者的身份來行使某命令。將普通用戶的名字、可以執行的特定命令、按照哪種用戶或用戶組的身分執行等資訊,登記在特殊的檔案中(通常是/etc/sudoers) sudo -i:以login shell的方式sudo,等於在下一層shell中變身為root。也可以接一個指定的命令。 參、基本操作 一、通用字元 1.*任意字串:如p*、*conf* 2.?任意字元:如tt? 3.[]集合中的任一字元:如[pqr]p或q或r、[A-Z]A至Z的所有大寫字元、[0-9]0至9所有字元。 二、補齊命令:以bash(字典資料庫),記住所有有意義的字串 1.指令、預設的路徑名,都可以補齊。 2.以TAB補齊命令。 3.如有兩個以上的保留字可選,第一次TAB會嗶一聲提醒,第二次TAB列出所有可能的情況。 三、回覆命令 1.↑ 2.CTRL-R:提示符號變成(reverse-i-search),打進幾個字就列出最近含有此字的命令列。 3.命令列編修 (1)Ctrl-k:從游標刪到行尾 (2)Ctrl-w:從游標刪到行首 (3)Ctrl-a:跳到行首 (4)Ctrl-e:跳到行尾 (5)Ctrl-u:清除命令列 (6)Ctrl-d:刪掉游標以下一個單字 四、管線及重導向 1.ls 目錄|less(捲動列出目錄);rpm -qa|grep x|less(列出所有已安裝之rpm,過濾出含字元x者,以捲動列表表示) 2.ls -l>list.txt;sort list.txt>list.txt 3.wc -l>list.txt 肆、基本指令 一、檔案路徑 0.檔名沒有8.3限制,大小寫代表不同字元,無主副檔名之分,可用.而且可用好幾次,可用長檔名。 1.pwd:顯出所在目錄(print working directory) 2.cd:變換目錄(change directory) 3.ls: (1)ls 檔名 :列出此檔,檔名可用通用字元。 (2)ls 目錄名 :列出目錄中的檔案。 (3)ls -d 目錄名 :列出該目錄,而非目錄中的檔案。 (4)ls -L :列出連結所指向的檔,而非該連結。屬性也都是指向檔的屬性,不是連結的屬性。 (5)ls -l :列出詳細屬性(long列表),權限、硬連結數、擁有者、群組、大小、日期、檔名。 (6)ls -o :同-l,省略群組。 (7)ls -a :列出所有檔案(all),含隱藏檔,隱藏檔前會有. (8)ls -A :列出幾乎所有檔案(all),除了.和..。 (9)ls -la :綜合上兩項。 (10)ls -m :緊湊列表,檔名間用逗點間開。 (11)ls -R :--recursive,遞迴處理,列出指定目錄下所有檔案及子目錄。 (12)ls -t :按異動時間排序。 (13)ls -u :按存取時間排序,配合-l顯示的是存取時間。 (14)ls -X :按最後一段副檔名排序。 (15)ls --full-time:顯示完整時間,配合-l,-o。 (16)ls --time=<時間戳記>:修改異動時間。 4.mkdir:建立目錄 (1) mkdir 目錄:建目錄,目標目錄之上層目錄已建好。 (2) mkdir -p 目錄:確保建立目錄,目標目錄之上層目錄可能已建好,如未建好一併建立。 5.rm:刪除檔案,即解除它們的連結。 (1)rm -d :directory刪除可能有資料的目錄,只限超級使用者。 有的作業系統不許 rm 刪目錄(如 DSM),要用 rmdir 來刪一個空目錄 (2)rm -f :force不問問題,不理並不存在的檔案。 (3)rm -i :interactive刪檔之前先問使用者。 (4)rm -r :recursive刪除子目錄之下之檔案及目錄。 (4)rm -R :recursive強迫刪除子目錄之下之檔案及目錄。DSM允許用此命令來刪目錄。 (5)rm -v :verbose報告程式之運用情況。 (6)rm --version:顯示版本資料後離開。 6.mv:更動到檔案的連結資料,建立新連結,移除舊連結,快。綜合效果就是移動或更名現有的檔案或目錄。 (1)mv file1 file2 dir:移動檔案到新目錄。來源可用萬用字元。 (2)mv -f file1 file2 dir:強迫移動檔案到新目錄。沒有 -d 參數,沒有 -r 參數。 7.rename:更名現有的檔案。格式為「rename 檔名中的原字串 檔名中的新字串 諸檔案」,諸檔案可以用 ? * 等萬用字元組成表示式。 (1)rename .htm .html *.htm:將所有副檔為 htm 者改為副檔名 html 。 (2)如檔案 foo1, ..., foo9, foo10, ..., foo278,連下「rename foo foo0 foo?」及「rename foo foo0 foo??」 會將諸檔更名為 foo001, ..., foo009, foo010, ..., foo278。 8.cp:複製檔案或目錄 cp -參數 檔案 路徑 諸參數說明如下: (1)-a 所有,等於dpR即將來源原封不動照搬 (2)-d 當複製符號連結時,把目的檔案或目的目錄亦建立為符號連結 等於 --no-dereference 不解譯連結;或 --preserve=link 保留連結 (3)-P 複製時不解譯出符號連結,連結可以是絕對路徑或相對路徑但必須已經存在。--no-dereference (4)-L,-H 複製時解譯出符號連結 (5)-p 將檔案本身屬性(權限、所有者、時間)同時複製過去(一般用於備份居多) --preserve[=mode,ownership,timestamps,links,all] 保留檔案的權限、所有者及群組、時間戳記、連結、所有屬性 (6)-c 不保留檔案的權限等性質 --no-preserve=mode,ownership,timestamps,links,all 不保留檔案的權限、所有者及群組、時間戳記、連結、所有屬性 (7)-r,-R 複製目錄及目錄內的所有項目 (8)-f 強迫複製,不詢問直接蓋掉原來的舊檔 (9)-n 或 --no-clobber 不「撞」複製,不蓋掉現存檔案 (10)-i 互動,覆寫前先提示 (11)-l 對來源檔建立連結而非複製檔案 (12)-s 對來源檔建立符號連結而非複製檔案 (13)-u 或 --update 比對來源檔案跟目的檔案的異動時間,只有來源檔較目的檔新,或名稱相互對映的目的檔不存在時才會複製 (14)-b 或 --backup 移除覆蓋目的檔案之前先備份,備份檔案會加上字串 (15)-S <備份字串> 或 --suffix=<備份字串> 用「-b」參數備份檔案後,備份檔案的字尾會被加上字串。預設為「~」,可以用這個參數改變它 (16)-V <備份方式> 或 --version-control=<備份方式> (17)-x 或 --one-file-system 複製後的檔案或目錄存放之檔案系統必須與cp指令執行時的檔案系統相同,否則不複製,也不處理在其他分割區的檔案 (18)-v 或 --verbose 顯示指令執行過程 (19)-t 或 --target-directory=目錄 將所有 <來源> 檔案/目錄複製至指定的 <目錄> (20)-T 或 --no-target-directory 將 <目的地> 看作普通檔案處理 9.scp(secure copy):本地與遠端電腦之間的雙向傳輸,本地檔案可以傳輸到遠端服務,也可以把遠端伺服器上的檔案傳輸到本地,而且是加密的。 scp -參數 遠端電腦帳號@電腦ip:來源檔案或目錄 目的檔案或目錄 或 scp -參數 來源檔案或目錄 遠端電腦帳號@電腦ip:目的檔案或目錄 諸參數說明如下: (1)-p 保留原本檔案的時間與權限 (2)-P 遠端資料傳輸埠,預設是22 (3)-r 遞迴拷貝整個目錄 (4)-i 指定金鑰檔案,引數直接傳遞給ssh使用(寫在來源與目的之後) (5)-l 限定網速,以Kbit/s為單位 (6)-C 將資料先壓縮後再傳送,可節省傳輸量 (7)-1,-2 強制scp命令使用ssh1或者ssh2協議 (8)-4,-6 使用ipv4或者ipv6定址 (9)-v 顯示傳輸進度與資訊 10.ln -s 目的路徑 連結之檔名:建立軟連結 ln 原檔名 新檔名:建立硬連結 ※軟連結(捷徑)與硬連結(同步更新) linux的檔案系統中,每個檔案都有一組inode number(索引節點編號) , 這處 inode number對應著硬碟中的真實磁區資料。 所謂軟連結 symbolic link 是有點類似 windows 的捷徑。 所謂硬連結 hard link 是指讓多個檔名對應到同一個 inode 號碼,也就是說在實際磁區中還是只有一份檔案。實作時是在硬碟的super block區多出了一組 inode number,但指向相同的真實磁區。 也就是說在實際磁區中還是只有一份檔案,但是 table 內確有兩組指向這個實際磁區的號碼,而且號碼不同(inode number為一個不重複的號碼)。 好處是:多個目錄中的檔案可以同步更新。 11.cat 檔案:顯示檔案的內容(concatenate),可以一個檔案也可以多個檔案。 cat 連接檔案 cat appendfile >> originalfile 如cat abc.dat >> all.dat 12.tar -c -f 檔名 路徑:將路徑下所有檔打包,並命名 tar zcvf xxx.tar 路徑 :將路徑下所有檔打包成一個檔 tar zcvf xxx.tar.gz 路徑:將路徑下所有檔打包成一個檔 tar zxvf xxx.tar :解壓縮還原出資料夾 tar zxvf xxx.tar.gz :解壓縮還原出資料夾 tar zxvf xxx.tar -C 路徑:解壓縮到指定路徑之下 tar zxvf xxx.tar.gz -C 路徑:解壓縮到指定路徑之下 以上zcvf為參數,可省略參數前的- 參數說明: -f <備份檔>或--file=<備份檔>:-f 後面要立刻接要被處理的檔名!建議 -f 單獨寫一個選項囉! -C 目錄 :這個選項用在解壓縮,若要在特定目錄解壓縮,可以使用這個選項。 -c或--creat:建打包檔 -v或--verbose:顯示執行過程 -z或--gzip或--ungzip:備份後再壓縮或解被壓縮或列壓縮內容 -W或--verify:備份後確認無誤 -w或--interactive:目錄中每一個檔先一一要求確認後再備份 --owner=<帳號>:特定擁有者的檔才備份 --group=<群組名>:特定群組者才備份 --exclude=<範本樣式>:排除符合樣式之檔,如樣式file*代表以file開頭者 -h或--dereference:直接備份連結所指之原始檔案 --no-recursion:不備份子錄 -t或--list:列出備份檔內容 -tv:詳細列出備份檔內容 -tR:列出備份檔內容及區塊編號 -tz:列出經壓縮的備份檔內容 -d或--diff或--compare:比對備份檔和系統上的檔案之差異 -r或--append:加新檔於備份檔尾部 --remove-files:檔案加入備份檔後就將其移除 -u或--update:僅置換較備份檔更新的檔案 --delete:從備份檔中刪除某檔,但無法用於磁帶機 -x或--extract或--get:解備份檔 -k或--keep-old-files:解備份檔時不覆蓋既有之檔案 tar -A 備份檔1 -f 備份檔2:將備份檔1加到備份檔2之中 13.gzip [-數字] 檔名:壓縮成.gz檔,原檔案消失。不同壓縮比,預設值為6。 gzip *:壓縮現目錄所有檔案 gzip -1或--fast 檔名:壓縮成.gz檔,原檔案消失。最快。 gzip -9或--best 檔名:壓縮成.gz檔,原檔案消失。壓縮比最大。 gzip -v或--verbose 檔名:壓縮成.gz檔,原檔案消失。並顯示細節:原檔案/壓縮檔案的壓縮比。 gzip 檔名 > 檔名.gz:壓縮成.gz檔,原檔案保留。 gzip -d或--decompress或--uncompress 檔名.gz:解壓縮.gz檔,壓縮檔消失。 gzip -l或--list:列出壓縮內含檔檔名、大小、壓縮後大小、壓縮比 gzip -c或--stdout或--to-stdout:壓縮後送往標準輸出設備,而不更動原檔案,可用>導向一個新檔案 gzip -f或--force:強迫壓縮,不管是不是已有檔名或硬連結 gzip -r或--recursive:連指定目錄下的子目錄及所有檔案一併處理 gzip -t或--test:測試壓縮檔是否無誤 gzip -S <字尾>或--suffix <字尾>:改壓縮檔字尾為gz以外的字串 zcat 檔案.gz:秀出壓縮檔之內容。 二、系統 1.dmesg:顯示系統資訊。dmesg|more一頁頁慢慢看。 2.logout或exit:登出。 3.env :列出環境變數 4.echo $變數 :顯示變數內容 echo 字串:將字串送往標準輸出,如果字串中含特殊字元,如空白,則字串應以雙引號"括起來。 5.export 變數=變數值:將自訂變數轉變為環境變數,即新增、修改、刪除環境變數。環境變數會被子程序繼承使用,自訂變數不會被子程序繼承使用。 環境變數中有一個LANG預設為LANG=en_US,要以 export LANG=zh_TW.Big5改為中文環境 6.PS1環境變數,代表提示符號,CentOS的預設值是「'[\u@\h \W]\$ '」,可用的值有: * \d :可顯示出『星期 月 日』的日期格式,如:"Mon Feb 2" * \H :完整的主機名稱。舉例來說,鳥哥的練習機為『www.vbird.tsai』 * \h :僅取主機名稱在第一個小數點之前的名字,如鳥哥主機則為『www』後面省略 * \t :顯示時間,為 24 小時格式的『HH:MM:SS』 * \T :顯示時間,為 12 小時格式的『HH:MM:SS』 * \A :顯示時間,為 24 小時格式的『HH:MM』 * \@ :顯示時間,為 12 小時格式的『am/pm』樣式 * \u :目前使用者的帳號名稱,如『root』; * \v :BASH 的版本資訊,如鳥哥的測試主機板本為 3.2.25(1),僅取『3.2』顯示 * \w :完整的工作目錄名稱,由根目錄寫起的目錄名稱。但家目錄會以 ~ 取代; * \W :利用 basename 函數取得工作目錄名稱,所以僅會列出最後一個目錄名。 * \# :下達的第幾個指令。 * \$ :提示字元,如果是 root 時,提示字元為 # ,否則就是 $ 囉~ 三、查詢偵測 指令簡易總覽 1.用戶 # whoami:目前帳號 # groups 帳號1 帳號2…:各帳號隸屬於哪一些群組。省略帳號,查目前帳號隸屬於哪一些群組。 # cat /etc/group:看各群組包含哪一些帳號。 # w # 查看活動用戶 # id # 查看指定用戶資訊 # last # 查看用戶登錄日誌 # cut -d: -f1 /etc/passwd # 查看系統所有用戶 # cut -d: -f1 /etc/group # 查看系統所有組 # crontab -l # 查看當前用戶的計劃任務 2.檔案 # which 命令檔:找出命令檔(要可執行) # find / -name 「檔名」或「檔名配合萬用字元」:找出檔案所在的路徑(慢) # locate 檔名:找出檔案所在的路徑(不一定有裝) # updatedb:整理資料庫,以便locate等命令可以正常執行 # du 檔案或路徑:求檔案的儲存空間用量。-h 加人看的單位,-s 合計,-c 給出的所有目錄的總大小,--max-depth=1 給出深度為1的資料夾 | sort -h 照小到大分類。 舉例: du -h --max-depth=1 | sort -h 3.系統資源佔用(含行程) # ps -ef:查看所有進程 # kill:結束某行程 # top:實時顯示進程狀態 # free -m:查看內存使用量和交換區使用量 # uptime:查看系統運行時間、用戶數、負載 # vmstat:觀察磁盤與CPU的活動情況 # iostat:統計CPU的使用情況及tty設備、硬盤和CD-ROM的I/0量 # cat /proc/loadavg # 查看系統負載 4.時間 # date:顯示或設定時間日期 5.硬體查詢 # cat /proc/cpuinfo:看CPU資訊 # top:看記憶體,及硬碟仿記憶體的容量。以Ctrl-C出來。 # grep MemTotal /proc/meminfo # 查看記憶體總量 # grep MemFree /proc/meminfo # 查看空閑記憶體量 # df:硬碟容量,以k表示; # df -h:查看硬碟各分區容量與使用情況,以M和G表示。 # uname -a # 查看內核/操作系統/CPU資訊 # hdparm -d 1 /dev/hdd:將光碟機的DMA通道打開。hdparm取得或設定硬碟參數,-d DMA通道,1打開0關掉,/dev/hdd設備名稱。 # hdparm -i /dev/hda # 查看磁盤參數(僅適用於IDE設備) 6.命令查詢 # makewhatis -w:在root下跑,建立whatis資料庫,如果一天24小時開機,建立後每天午夜會自動更新;否則要重建。有此資料庫才能用whatis,apropos # whatis 命令:手冊中第幾類、簡單說明 # apropos 命令:所有與此命令有關的簡單說明(含手冊中第幾類)。 # man 分類號 命令:翻出手冊。在手冊中可用[g]跳到最頭,[G]跳到最後,[/][..]查詢關鍵字,[q]離開。man 1 man和man 7 man是手冊中的兩處。 # info 命令:另一套線上手冊。 # 在命令後加 -help,-?,-h可查出此命令的用法。 -----以上有分段詳解,以下無分段詳解----- 7.系統 # head -n 1 /etc/issue # 查看操作系統版本 # hostname # 查看計算機名 # lspci -tv # 列出所有PCI設備 # lsusb -tv # 列出所有USB設備 # lsmod # 列出加載的內核模塊 # env # 查看環境變量 8.磁盤和分區 # mount | column -t # 查看掛接的分區狀態 # fdisk -l:查看所有分區,(參考「陸、分割及格式化」) # swapon -s # 查看所有交換分區 # hdparm -i /dev/hda # 查看磁盤參數(僅適用於IDE設備) # dmesg | grep IDE # 查看啟動時IDE設備檢測狀況 9.網路(參考本大段「八、網路設定」) # ifconfig # 查看所有網絡介面的屬性 # iptables -L # 查看防火牆設置 # route -n # 查看路由表 # netstat -lntp # 查看所有監聽埠 # netstat -antp # 查看所有已經建立的連接 # netstat -s # 查看網絡統計資訊 10.服務 # chkconfig --list # 列出所有系統服務 # chkconfig --list | grep on # 列出所有啟動的系統服務 11.軟件安裝(參考本大段「六、程式及安裝」及「伍、套件安裝」大段) # rpm -qa # 查看所有安裝的軟件 (一)帳號查詢 1.whoami:目前帳號 2.groups 帳號1 帳號2…:各帳號隸屬於哪一些群組。省略帳號,查目前帳號隸屬於哪一些群組。 3.cat /etc/group:看各群組包含哪一些帳號。 (二)檔案查詢 1.which 命令檔:找出命令檔(要可執行) 2.find / -name 檔名:找出檔案所在的路徑(慢) 3.locate 檔名:找出檔案所在的路徑(不一定有裝) 4.updatedb :整理資料庫,以便locate等命令可以正常執行 5.du 檔案或路徑:求檔案的儲存空間用量。-h 加人看的單位,-s 合計。 (三)查看系統資源佔用情況,含行程(daemons)查詢 1.ps 秀出此一瞬間諸行程的動態: ps -ef | sort -k7 將行程按運行時間排序,看哪個行程消耗的cpu時間最多 常用參數: -A 列出所有的行程 -w 顯示加寬可以顯示較多的資訊 -au 顯示較詳細的資訊 -aux 顯示所有包含其他使用者的行程 參數 au(x) 的輸出格式 : USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND 以下說明諸欄: USER: 行程擁有者 PID: pid %CPU: 佔用的 CPU 使用率 %MEM: 佔用的記憶體使用率 VSZ: 佔用的虛擬記憶體大小 RSS: 佔用的記憶體大小 TTY: 終端的次要裝置號碼 (minor device number of tty) STAT: 該行程的狀態: D: 不可中斷的靜止 (持續進行 I/O 動作) R: 正在執行中 S: 靜止狀態 T: 暫停執行 Z: 不存在但暫時無法消除 W: 沒有足夠的記憶體分頁可分配 <: 高優先序的行程 N: 低優先序的行程 L: 有記憶體分頁分配並鎖在記憶體內 (實時系統或捱A I/O) START: 行程開始時間 TIME: 執行的時間 COMMAND:所執行的指令 2.kill -9 行程的pid:殺掉某行程 3.top -i (DSM有,但不使用參數-i) 看看有多少進程處於 Running 狀態 常用參數: d:指定更新的間隔,以秒計算。 q:沒有任何延遲的更新。如果消費者有超級用戶,則top命令將會以最高的優先序執行。 c:顯示進程完整的路徑與名稱。 S:累積模式,會將己完成或消失的子行程的CPU時間累積起來。 s:安全模式。 i:不顯示任何閑置(Idle)或無用(Zombie)的行程。 n:顯示更新的次數,完成後將會退出to 顯示參數: PID(Process ID):進程標示號。 USER:進程擁有者的用戶名。 PR:進程的優先級別。 NI:進程的優先級別數值。 VIRT:進程佔用的虛擬內存值。 RES:進程佔用的物理內存值。 SHR:進程使用的共用內存值。 S:進程的狀態,其中S表示休眠,R表示正在運行,Z表示僵死狀態,N表示該進程優先值是負數。 %CPU:該進程佔用的CPU使用率。 %MEM:該進程佔用的物理內存和總內存的百分比。 TIME+:該進程啟動後佔用的總的CPU時間。 Command:進程啟動的啟動命令名稱,如果這一行顯示不下,進程會有一個完整的命令列。 使用交互命令完成其它參數,這些命令是通過快捷鍵啟動的: <空格>:立刻刷新。 P:根據CPU使用大小進行排序。 T:根據時間、累計時間排序。 q:退出top命令。 m:切換顯示內存資訊。 t:切換顯示進程和CPU狀態資訊。 c:切換顯示命令名稱和完整命令列。 M:根據使用內存大小進行排序。 W:將當前設置寫入~/.toprc檔中。這是寫top設定檔的推薦方法。 4.free (DSM有) 顯示內存的使用情況,使用權限是所有用戶。 格式 free [-b-k-m] [-o] [-s delay] [-t] [-V] 主要參數 -b -k -m:分別以字節(KB、MB)為單位顯示內存使用情況。 -s delay:顯示每隔多少秒數來顯示一次內存使用情況。 -t:顯示內存總和列。 -o:不顯示緩沖區調節列。 5.uptime (DSM有) 18:59:15 up 25 min, 2 users, load average: 1.23, 1.32, 1.21 現在的時間 / 系統開機運轉到現在經過的時間 / 連線的消費者數量 / 最近一分鐘,五分鐘和十五分鐘的系統負載 參數: -V 顯示版本資訊。 6.vmstat (DSM無) procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------ r b swpd free buff cache si so bi bo in cs us sy id wa st 0 0 168 6291888 901268 5670852 0 0 0 9 1 1 1 1 98 0 0 (1)觀察磁盤活動情況 磁盤活動情況主要從以下幾個指標瞭解: bi:表示從磁盤每秒讀取的塊數(blocks/s)。數字越大,表示讀磁盤的活動越多。 bo:表示每秒寫到磁盤的塊數(blocks/s)。數字越大,表示寫磁盤的活動越多。 wa:cpu等待磁盤I/O(未決的磁盤IO)的時間比例。數字越大,表示檔系統活動阻礙cpu的情況越嚴重,因為cpu在等待慢速的磁盤系統提供數據。wa為0是最理想的。如果wa經常大於10,可能檔系統就需要進行性能調整了。 (2)觀察cpu活動情況 vmstat比top更能反映出cpu的使用情況: us:用戶程式使用cpu的時間比例。這個數字越大,表示用戶進程越繁忙。 sy: 系統調用使用cpu的時間比例。注意,NFS由於是在內核裏面運行的,所以NFS活動所佔用的cpu時間反映在sy裏面。這個數字經常很大的話,就需要注 意是否某個內核進程,比如NFS任務比較繁重。如果us和sy同時都比較大的話,就需要考慮將某些用戶程式分離到另外的服務器上面,以免互相影響。 id:cpu空閑的時間比例。 wa:cpu等待未決的磁盤IO的時間比例。 7.iostat (DSM無) 統計CPU的使用情況及tty設備、硬盤和CD-ROM的I/0量 參數: -c 只顯示CPU行 -d 顯示磁盤行 -k 以千字節為單位顯示磁盤輸出 -t 在輸出中包括時間戳 -x 在輸出中包括擴展的磁盤指標 avg-cpu: %user %nice %sys %iowait %idle 20.25 0.18 2.61 76.39 0.57 %iowait 等待本地I/O時CPU空閑時間的百分比 %idle 未等待本地I/O時CPU空閑時間的百分比 Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn hda 9.86 284.34 84.48 685407 2036 每秒傳輸數(tps)、每秒512字節塊讀取數(Blk_read/s)、每秒512字節塊寫入數(Blk_wrtn/s)和512字節塊讀取(Blk_read)和寫入(Blk_wrtn)的總數量。 (四)時間查詢 1.date:顯示或設定時間日期 (1)date:顯示時間日期 (2)date --set=月/日/年 +%D:設定日期 (3)date --set=時:分:秒 +%T:設定時間 (五)硬體查詢 1.cpu資訊,看/proc/cpuinfo的內容。 2.top:看記憶體,及硬碟仿記憶體的容量。以Ctrl-C出來。 3.df:硬碟容量,以k表示;df -h:硬碟容量,以M和G表示。 4.uname -a:查作業系統版本 5.hdparm -d 1 /dev/hdd:將光碟機的DMA通道打開。hdparm取得或設定硬碟參數,-d DMA通道,1打開0關掉,/dev/hdd設備名稱。 (六)命令查詢 1.makewhatis -w:在root下跑,建立whatis資料庫,如果一天24小時開機,建立後每天午夜會自動更新;否則要重建。有此資料庫才能用whatis,apropos 2.whatis 命令:手冊中第幾類、簡單說明 3.apropos 命令:所有與此命令有關的簡單說明(含手冊中第幾類)。 4.man 分類號 命令:翻出手冊。在手冊中可用[g]跳到最頭,[G]跳到最後,[/][..]查詢關鍵字,[q]離開。man 1 man和man 7 man是手冊中的兩處。 5.info 命令:另一套線上手冊。 6.在命令後加 -help,-?,-h可查出此命令的用法。 四、其他 1.more 檔案:一頁頁顯示檔案的內容。 2.clear:清螢幕。 3.dd(diskdump):詳見 五、vim (○)支援正規表示式 (一)參數 1.vim 檔名 (二)操作 0.剛進去時是命令模式 1.切換不同模式: (1)進「輸入模式」(input mode):只能輸入字及行。 <1>i:自游標處輸入。(insert)。 <2>a:自游標下一字元輸入。(append)。 <3>o:加一行,游標至新行首。(open)。 <4>I:自行首指第一個非空白字元處開始輸入文字。 <5>A:自行尾開始輸入文字。 <6>O:游標所在行上開一新行來輸入文字。 (2)由「輸入模式」進「命令模式」(command mode):Esc。 (3)進「結束模式」(last line mode):「:」。 2.命令模式: (1)ZZ,大寫兩次Z,存檔並離開vim。 (2)gg檔首;G檔末。 (3)數字G,跳到第幾行。 (4)數字 Enter,游標向下若干行。 (5)/字串,向下找字串;?字串,向上找字串;n繼續找,N反方向繼續找;。 (6)以hjkl代表左下上右。Ctrl-f或Ctrl-d即PageDown,Crtl-b或Ctrl-u即PageUp。 (7)以HML跳至本螢幕的頭、中、末行的第一個非空白字元。 (8)w,W跳到下一個word開頭,e,E跳到下一個word末尾,b,B跳到上一個word開頭;小寫把任何非數字或字母的字元當成一個新word的開始;大寫則是用空白字元來區隔兩個word。 (9){跳到上一段的開頭,}跳到下一段的的開頭,段是以空白行為區隔;(移到這個句子的開頭,)移到下一個句子的開,句子是以 . ! ? 為區隔。 (10)[[跳往上一個函式(最左邊是行首是{);]]跳往下一個函式(最左邊是行首是{) (11)行內移動:0(零)行首;$行末;^跳本行第一個非空白字元;數字|移到本行第幾字元。 (12)行內找字元:f 字元:下一個字元;t 字元:下一個字元前;F 字元:前一個字元;T 字元:前一個字元後。 (13)%,尋找成對的括號,將游標停在() {} []等括號上,按%會去找其成對的括號,如果不成對,就停在原處。 (14)m 字元,將此處標示成字元,按 '字元即跳到此處,再按''回到原處。字元限用a-z,標示在兩種情形下取消:情形一,重覆使用相同的標示;情形二,標示那一行被刪掉。 (15)行內移動:0(零)行首;$行末;^跳本行第一個非空白字元;數字|移到本行第幾字元。 (16)yy複製游標所在行,yw複製游標到單字結束,p貼出緩衝區。 (17)D刪本行游標之後,dd刪本行。 (18)dl或x刪游標所在字,dh刪游標前一個字。 (19)dj刪游標所在行及下一行,dk刪游標所在行及上一行。 (20)所有的刪除動作均將刪除物放入緩衝區。 (21)r取代游標所在之字元。 (22)R連續取代字元,直到Esc。 (23)u取消前一個動作。 (24)Ctrl+g或Ctrl+G,顯示總行數及游標所在行位於全檔的百分之多少。 3.結束模式: (1)數字,跳到第幾行。 (1):help 指令類別,某指令類別的help,如「:help split」 (1):sp 檔名,切割上下視窗編不同檔案。 (1):vs 檔名,切割左右視窗編不同檔案。 (1):res N、:vertical res N,設視窗的高度與寬度。 (1)e建新檔。 (2)n載入另檔。 (3)w存檔。 (4):q,結束程式。 (5):q!,結束程式,不管是否存檔。 (6):wq,存檔後結束程式。 (6):x,存檔後結束程式。 六、程式及安裝 1.cc -O -Wall -o ether-wake ether-wake.c:將文字檔編譯為執行檔。 2.rpm:安裝rpm套件 (1)rpm -ivh php-mysql-4.0.6-7.i386.rpm:安裝套件。 (2)rpm --query php-mysql:查詢套件是否安裝,若安裝版本為何。 七、以linuxconf進行系統設定:在X windows下或有環境變數DISPLAY時;文字介面;瀏覽器遠端操作。須以ROOT執行。 1.語言:預設英文可改成bg5。 2.網路: (1)主機名稱。 (2)DNS: a.主機網域名稱(可空白) b.第一台DNS的IP c.第二台DNS的IP d.要蒐尋的網域名稱。 (3)路由(routing)及閘道器(gateway) a.閘道器(gateway) b.指定閘道器為路由。 c.指定其他主機為路由。 d.指定網路卡為路由。 e.設定以主機為路由器,路由在背景執行。 (4)主機搜尋順序:DNS、NIS、/etc/hosts三者的搜尋優先順序。 (5)NIS:(Network Information Service),一台NIS伺服器提供一個NIS領域, 領域中每一部主機都擁有相同的帳號 八、網路設定 1.查詢 ifconfig 查本機器ip設定 route -n 檢視當前的路由設定 2.netconfig 以文字選單介面設網路,然後「選自動找ip(DHCP)或設ip、遮罩、gateway、域名服務」 或以setup文字選單介面選「選路設定」(network configuration)進netconfig,然後同上 3.直接編/etc/sysconfig/network-scripts/ifcfg-eth0 等,看第幾片網卡編那一個檔 用service network restart重新啟動。 4.改pc的名稱 (1)編/etc/host,用ip 區域網路機器名稱 (2)編etc/sysconfig/network,寫入 NETWORKING=yes HOSTNAME=jj01 5.掃port nmap 主機名,如nmap localhost,nmap 203.204.100.153。 6.route -n 檢視當前的路由設定 route del default gw xxx.xxx.xxx.xxx 刪除一組路由 route add default gw xxx.xxx.xxx.xxx 加入一組路由 九、修復 1.fsck:檢查、修復linux檔案系統 fsck -參數 分割區名稱 可使用df來查詢檔案系統,再用fsck -a /dev/hda1 來檢查整個檔案系統。 參數: a:自動修復檔案系統 r:執行時會詢問是否需要修復 v:顯示處理時的每一個步驟 t:指定一個檔案系統 n:不要真正執行,只看執行時會做那些動做 y:與 -a 類似,但是某些 filesystem 僅支援 -y 這個參數。 ※只有root才能執行喔,還有如果磁碟分割區已經掛載到系統上, fsck指令就不能進行修復動作,所以呀...每次使用fsck指令檢查 磁碟區錯誤時,記得unmount卸載分割區再執行。 2.救回誤刪檔 (1)TestDisk:跨平台,http://www.cgsecurity.org/wiki/TestDisk_Download,下載回來解壓縮就可以用。 apt-get install testdisk 用網路安裝也可以用 用 root 權限跳到所在資料夾,執行 ./TestDisk ,按以下步驟操作: 首先要建一個 log 檔,直接按 Enter; 接著要選擇磁碟,就看之前被刪除的檔案在哪一個分割區,選擇(上下鍵)好磁碟之後,就選擇(左右鍵)下方的 Proceed 繼續; 接著要選擇磁碟的分割表格式,這個部份 testdisk 會自動偵測,只要直接按 Enter 就可以了; 接著選擇要使用的功能,testdisk 提供了很多功能,這裡選擇第二項 [ Advanced ] Filesystem Utils; 再選擇分割區(上下鍵),然後選擇下方的 Undelete(左右鍵); 接下來就要開始回覆誤刪的檔案了,紅色的部份就是之前被刪除的檔案,選擇要回復的檔案,然後按 c 鍵複製 接著要選擇檔案回覆後要放置的位置,這個位置不能跟之前誤刪的檔案在同一個分割區,選擇好了之後,按下 C 開始回復 檔案回覆完成後,就會回到原來的資料夾,上方會顯示 Copy done,這樣就表示完成了,如果還要繼續回覆其他的檔案,就一樣選擇檔案後,按 c 鍵,不過之後 testdisk 就會直接自動將檔案複製到剛剛所選擇的位置,不會在詢問回覆檔案放置的位置了。 完成之後,就按 q 鍵離開(多按幾下就能跳出 testdisk)。 上述步驟圖解在:http://sealmemory.blogspot.tw/2012/07/testdisk.html (2)extundelete 可救ext3/ext4 此工具依賴兩個包 e2fsprogs version 1.41 和e2fslibs 在RH/Centos系列上 名字為e2fsprogs 和 e2fsprogs-libs 若缺可先用「yum install e2fsprogs-devel」裝起來 安裝: # tar -xvf extundelete-0.2.0.tar 或 tar -xjf extundelete-0.2.0.tar.bz2 # ./configure # make && make install 使用: extundelete 會在當前目錄創建一個「RECOVERED_FILES」來放修復的檔案。使用以下命令找回所有文件: extundelete /dev/sdb1 --restore-all 也可以使用以下命令找回指定檔案 extundelete /dev/sdb1 --restore-directory /an/important extundelete /dev/sda3 --restore-file /home/yzn/helloworld/Makefile.am 伍、套件安裝 一、rpm 1.-q詢問模式 2.-a查詢所有套件 3.-l查詢套件的檔案列表(含路徑) 4.-s顯示檔案狀態,正常會秀出normal 5.-c列出組態設定檔 6.-d列出說明文件 7.-f <檔案>:查詢該檔案所屬的套件及版本 8.-p <套件檔>:查詢指定的RPM套件 9.-i <套件檔>或--install <套件檔>:安裝套件 10.-h或--hash:安裝時列出標記 11.-v顯示指令執行過程 12.-vv詳細顯示指令執行過程,便於除錯 13.-V檢查檔案正確性 14.-U <套件檔>或--upgrade <套件檔>:升級套件 15.-F <套件檔>:更新套件,比現有新才會做 16.-e <套件檔>或--erase <套件檔>:刪除套件 17.--rebulid <原碼檔>:編譯原碼產生二進位套件檔 18.--recompile <原碼檔>:重新編譯原碼但不產生二進位套件檔 二、apt(主要是Debian、Ubuntu在用,CentOS沒有) (一)概述 apt是軟體 dpkg 的前端程式,因為 dpkg 的指令參數實在太多了,所以才會有這套程式的產生。 使用『 apt-get 』 指令時需以 『 root 』 身份執行 ! ⊙設定檔 /etc/apt/sources.list /etc/apt/sources.list.d/ /etc/apt/vendors.list /etc/apt/vendors.list.d/ /etc/apt/apt.conf /etc/apt/apt.conf.d/ (二)指令 1.apt-setup:設定 /etc/apt/sources.list 取得、安裝升級套件apt-get 2.apt-get update:軟體資料庫同步。根據 /etc/apt/sources.list 中設定到 APT Server(Repository) 去更新軟體資料庫。 3.apt-get check:檢查系統上套件的相依性狀況,如果發生問題請用「apt-get -f install」修復。 4.apt-get upgrade:找出所有套件的新版本並逐一進行升級 5.apt-get dist-upgrade:執行大規模的套件升級動作(如從 xxx Linux 8.0 升級到 xxx Linux 9),會聰明的處理到很多軟體相依、相斥的問題。 6.apt-get install 套件名稱:安裝某一個套件及其相關的套件 如安裝http php mysql apt-get install php-mysql apt-get install mysql-server 7.apt-get -d install 套件名稱 或 apt-get --download-only install 套件名稱:只下載某一個套件到 /var/cache/apt/archives/ 下而不安裝 8.apt-get -f install 或 apt-get --fix-broken install:修復破掉的套件 9.apt-get remove 套件名稱:移除某套件,和 rpm -e 功能一樣,同時還會幫您把相關的套件一併移除 apt-get remove --purge 套件名稱:與 remove 相同,但連設定檔也會移除,(purge清洗)。 apt-get remove --purge `deborphan`:清除系統多餘的 library,(orphan孤兒) apt-get remove --purge `deborphan --guess-all`:清除系統多餘的 library 安裝軟體時, debian 依照軟體相依特性安裝了額外的 library,但是當您移除該軟體時,當初連帶安裝的 library 不見得會一起被移除,久而久之系統就會出現殘餘的 library,這個時候您便可以下這行指令,為您掃除系統中無用的 library ,確保系統的清潔性。 10.apt-get clean:刪除下載回來置於暫存區中的檔案。apt-get 安裝套件會先下載到 『 /var/cache/apt/archives/ 』及 『 /var/cache/apt/archive/partial/ 』 下,預設 apt-get 安裝完軟體後不會把上述位置下的 『 .deb 』 移除。『 apt-get clean 』會清理這個目錄。 11.apt-get autoclean:類似 『 apt-get clean 』,安裝完畢後自動刪除該套件的 『 .deb 』 檔。 12.apt-get source 套件名稱:抓回套件的原始碼(source) 13.apt-get build-dep 套件名稱:安裝 build 套件所需要的package。 例如要安裝firefox 方法一(直接用二進位包安裝): apt-get install mozilla-firefox 方法二(源碼編譯安裝) apt-get build-dep mozilla-firefox (先安裝編譯firefox需要依賴的包) apt-get -b source mozilla-firefox (下載firefox的源碼包並自動編譯生成deb包,但並沒有對源碼作任何修改) dpkg -i 「生成的firefox軟體的deb包的名稱」(安裝firefox軟體的deb包) 使用cdrom,安裝好系統後,可以使用 apt-cdrom 來把安裝光碟加入 apt 的 sources.list 中 15.apt-cdrom add 套件資訊 apt-cache 16.apt-cache showpkg:顯示套件資訊 17.apt-cache stats:顯示相關的統計資訊 18.apt-cache dump:顯示 cache 中每個套件的簡短資訊 19.apt-cache unmet:檢查所有未符合相依性的相關資訊 20.apt-cache show:顯示套件資訊,同 rpm -qi 一般 21.apt-cache search:尋找檔案 22.apt-cache depends:顯示套件的相依性 23.apt-cache pkgnames:尋找符合的套件名稱 apt狀態apt-config 24.apt-config dump:顯示目前的設定狀態 介面apt-shell 圖形化介面 25.synaptic 26.up2date ⊙下載apt(國內站台):http://apt.nc.hcc.edu.tw/ ⊙安裝apt:rpm -ivh apt* ⊙改下鏡站:joe /etc/apt/sources.list rpm ftp://cle.linux.org.tw/pub/CLE/i386 RedHat gaga freshrpms 不改就用國外鏡站 ⊙命令列指令 ■ ◎APT Client的詳細補充說明:(server端在鏡站上) 本段說明來自http://pukiwiki.kandix.idv.tw/index.php?Fedora%2Fapt ⊙GPG Signature 下載 GPG Public Key,您可以在底下的任一站台找到所需要的相關 RPM-GPG-KEY* http://download.fedora.redhat.com/pub/fedora/linux/core/1/i386/os/ ftp://cle.linux.org.tw/apt/yarrow/ ftp://tlug.sinica.edu.tw/pub3/CLE/apt/yarrow/ 輸入 GPG Public Key,指令:rpm --import [RPM-GPG-KEY] 查詢目前系統上已安裝了哪些 GPG KEY,指令:rpm -qa|grep gpg-pubkey ◎建置APT Repository(伺服器) 例如我要把 APT Repository 放在 /var/ftp/yarrow 目錄下,然後透過 FTP 來提供 Service,那建立 APT Repository 的參考範例如下: 1.複製六片光碟或六個 ISO 檔中的所有內容到 /var/ftp/yarrow 目錄底下 2.mkdir -p /var/ftp/yarrow 若是使用光碟則下: mount /mnt/cdrom cp -a /mnt/cdrom/* /var/ftp/yarrow/ umount /mnt/cdrom 依序把六片光碟都複製完畢 若是使用 ISO 檔則下: mount -o loop yarrow-i386-disc1.iso /mnt cp -a /mnt/* /var/ftp/yarrow/ umount /mnt 依序把六個 ISO 檔都複製完畢 3.Mirror Fedora 本身所提供的各個類別的套件 除了 updates updates-testing 外,其他還有像 table testing unstable k12ltsp 等 您可以直接到官網去下載,或是從國內的 Mirror 站台下載,如: ftp://cle.linux.org.tw/pub/fedora/fedora/fedora/1/i386/ ftp://tlug.sinica.edu.tw/pub3/CLE/fedora/fedora/fedora/1/i386/ 若是還想再提供 cle 或 freshrpms 的套件時,除了到官網下載外,一樣可以在底下的國內 Mirror 站台下載: ftp://cle.linux.org.tw/apt/yarrow/ ftp://tlug.sinica.edu.tw/pub3/CLE/apt/yarrow/ 請下載 SRPMS.cle SRPMS.freshrpms 及 Fedora/RPMS.cle Fedora/RPMS.freshrpms 4.建立 APT Repository 的目錄架構 在 /var/ftp/yarrom/ 目錄底下根據您所要提供的類別分別建立 SRPMS.xxx 的子目錄 在 /var/ftp/yarrow/Fedora 目錄底下根據您所要提供的類別分別建立 RPMS.xxx 的子目錄 5.產生所需的 pkglist 及 srclist /usr/bin/genbasedir -s --bloat --bz2only --progress /var/ftp/yarrow/Fedora 6.至此,一個 APT Repository 已經建立完成,之後所需要做的事,就只有當 Mirror 完各類別的套件後,再執行一次: /usr/bin/genbasedir -s --bloat --bz2only --progress /var/ftp/yarrow/Fedora 重新產生 pkglist 及 srclist 即可 ◎迴響與討論 ■ Q1:如果僅是單純的要架一個供安裝與安裝後補裝套件的apt Server兼ftp那些是可以省略的呢? A:若是這樣的話,那你只需要: 依序把六個 ISO 檔都複製完畢 (若不提供 src.rpm 那只要複製前三個 ISO 檔即可) 產生所需的 pkglist 及 srclist 三、yum(CentOS在用,uBuntu沒有) 1.可用 apt 安裝 yum 格式:yum [參數] 指令 套件名 指令 1.yum check-update:檢查更新 2.yum update 套件名:更新套件,省略套件名會更新所有已安裝套信 3.yum upgrade 套件名:更新套件 4.yum search 表示式:如yum search httpd*,會搜尋所有跟 httpd 有關的套件。 5.yum install 套件名:安裝套件,會考慮到相依性的問題。 6.yum remove 套件名:移除套件,會考慮到相依性的問題。 7.yum clean:清除安裝時下載的暫存套件原始檔案,位於 /var/cache/yum,因為這裡可以清除的項目很多,常用 yum clean all ,一次清掉。 8.yum list updates:列出所有可以更新的套件。 9.yum list installed:列出所有已安裝的套件。 參數 1.-y:對所有的回題回答 yes 2.--enablerepo=[repo]:啟用一個或更多個套件庫(允許使用萬用字元)如 --enablerepo=remi 或 --enablerepo=rpmforge 四、dpkg dpkg -l package:顯示該package的版本、簡介等相關資訊 dpkg -l:列出所有已安裝的package dpkg --get-selections:列出所有已安裝的package dpkg -L package:列出該package所有的檔案(含路徑及檔名) dpkg -S 檔名:搜索該檔所屬的package dpkg -i package.deb:安裝package dpkg -i --force-overwrite-i package.deb:強制安裝軟體 dpkg -i --force-all package.deb:不顧一切的強制安裝軟體 dpkg -r package:刪除package dpkg -r --purge --force-deps package:強制移除軟體 dpkg -P package:刪除package(包括設定檔) dpkg --pending --remove:移除多餘的軟體 dpkg –unpack package.deb:解開 deb package的內容 dpkg -x package.deb 目的路徑:解 .deb 檔成數個檔案 dpkg -c package.deb:列出 deb package的內容 dpkg –configure package:配置package dpkg -h:指令說明 陸、分割及格式化 一、sfdisk (一)查詢 1.sfdisk -?或--help:顯示幫助 2.sfdisk -v或--version:顯示sfdisk版本 3.sfdisk -T或--list-types:顯示所有sfdisk能辨識的檔案系統ID 4.sfdisk -V或--verify 裝置:檢查分割表,回答 OK ,或 5.sfdisk -g或--show-geometry 裝置:裝置分割成多少 cyl,head,sec(由kernel建議) 6.sfdisk -G或--show-pt-geometry 裝置:裝置分割成多少 cyl,head,sec(由分割表查得) 7.sfdisk -s或--show-size 裝置或分割:裝置或分割有多少 bytes 8.sfdisk -l或--list 裝置:裝置的諸分割列表 省略裝置或分割,即列出所有裝置的大小,並合計 9.sfdisk -d 裝置:裝置的諸分割列表, 10.sfdisk -x或--show-extend 分割:顯示擴展分區中的邏輯分區 11.sfdisk --print-id 裝置 幾:印出第幾分割的id 12.參數-uS or -uB or -uC or -uM:報告使用sectors或blocks或cylinders或megabytes為單位 (二)修改 1.sfdisk -c(或--change-id) 裝置 第幾分割 id:將裝置的第幾分割(數字,從1算起)的 id 設為指定值,如 sfdisk -c /dev/hdd 5 83:將裝置的第5分割的 id 設為 Linux 2.sfdisk 裝置 -N幾:改變第幾分割,如「sfdisk /dev/hdb -N5」然後回應「,,,*」,則除了將第五分割變bootable(active),其他什麼事也不做。 3.sfdisk 裝置 -A幾:第幾分割為active,其他分割為inactive (三)建立分割諸參數 -i 或--increment:開始磁柱由1開始而不是由0開始 -C 磁柱數 -H 磁頭數 -S 磁區數 -f 或--force:強行分割 -q 或--quiet:不秀出警告訊息 -L 或--Linux:與 Linux 相配合的分割方法。 -D 或--DOS:與 DOS 相容,會浪費一點空間。更精確地說:一個分割如果不能包含 sector 0,因它是此裝置的 MBR,或是包含分割表的延伸分割,在此情況下 sfdisk 會由的下一磁區開始分割。然而此參數是讓分割開始跳到下一個軌,如果每軌有34個磁區,這樣就浪費了33個磁區了,就像某些 DOS 版本一樣。某些開機引導程序(如 OSBS 而不是 LILO 或 OS/2)也會放在這些閒置的空間。如果你有用到這樣的開機引導程序,可以使用本參數。 -E 或--DOS-extended:分割的開始磁區會在延伸分割起始磁柱稍微靠內一些(如有些版本的 DOS),而非在磁柱一開始的磁區(如 Linux)。事實上最好是讓 DOS 和 Linux 都解讀延伸分割開始於磁柱邊界。當然只有知道 DOS 怎麼認定這支碟畫分磁柱、磁頭、磁區的方法,才會知道磁柱的邊界在那裡。 --IBM 或--leave-last:不分配最後磁柱。某些 IBM 診斷程式會假定它可以保留最後磁柱供測試使用。如果您認為可能會跑這樣的程式,請用本參數告訴 sfdisk 不要分配最後磁柱。有時最後磁柱會包含一份「損毀磁區表」。 -n:不寫入。做完所有動作但不要寫入硬碟 -R:請 kernel 重讀分割表(讓控制IO執行 BLKRRPART)。當手動修改分割表時(如用 dd 還原備份的分割表),這是很有用的動作。如果 kernel 報告「device busy for revalidation (usage = 2)」(裝置正忙請重新確認),表示裝置上正被使用,請卸載分割或下達 swapoff 停用 swap 分割。 --no-reread:開始重分割之前 sfdisk 會檢查磁碟是否未卸載,是否為 swap 裝置,若是會拒絕繼續進行重分割。本參數會取消以上的測試。另一方面 -f 會讓 sfdisk 強行繼續重分割,即使本測試認為不可行。 -O 檔案:在重分割之前,將要被覆寫的磁區存到另一個檔案(最好放在另一個磁碟) -I 檔案:在檔案系統被 sfdisk 破壞之後,回復原有狀態,如果事進有用 -O 備份下來。 1.sfdisk /dev/hdd:互動輸入各分割數據之格式 sfdisk 的讀取格式為 每分割佔一行,欄與欄以空白、逗點、分號間隔。分隔號可以接空白。開頭和結尾的空白會被忽略。數字可以用八進位、十進位、十六進位,預設為十進位。當一欄未出現或空白時,會使用預設值。兩個 可以省略,sfdisk 可以自動算出。 ID 為16進位但不加前置0x,或者用 E,S,L,X 四個字母表達, L (LINUX_NATIVE (83)) 是預設值, S 是 LINUX_SWAP (82),E 是 EXTENDED_PARTITION (5),X i是LINUX_EXTENDED (85)。 欄的預設值是第一個未分配的 sector/cylinder/... 欄的預設值是取最大空間 2.sfdisk /dev/hdd << Test.data:依 Test.data 內容指示進行分割 Test.data內容每行一分割,各欄可用「空白」或「,」或「;」隔開,依序為 開始磁柱、磁柱數、ID(16進位)、開機分割否(*)如: 開始磁柱,磁柱數,類型(16進位),開機分割否(*) 通常只需要 開始磁柱,磁柱,類型 甚或 ,磁柱,類型 空分割則輸入 ,0 柒、週邊系統使用 一、燒錄 (一)製作映像檔:mkisofs 諸參數 目錄或檔案 主要參數 -b 目的路徑檔名 或 -eltorito-boot 目的路徑檔名: 如「isolinux/isolinux.bin」,指定啟動映像檔要放在開機光碟的那裡。 -c 目的路徑檔名 或 -eltorito-catalog 目的路徑檔名: 如「isolinux/boot.cat」,指定啟動目錄檔要放在開機光碟的那裡。 -o 目的路徑檔名 或 -output 目的路徑檔名: 如「jj.iso」,指定映像檔案的名稱。 -V "光碟名稱": 指定光碟名稱 -l 或 -full-iso9660-filenames: 使用ISO 9660 32字元長度的檔名。 -R 或 -rock: 使用 Rock Ridge Extensions。Rock Ridge用於 UNIX/Linux 環境下的光碟。檔名區分大小寫,同時記錄檔案長度,可以保存檔案相關的權限。 -r 或 -rational-rock: 合理的rock,使用Rock Ridge Extensions,並開放全部檔案的讀取權限。 -J 或 -joliet: 使用Joliet格式的目錄與檔案名稱。 -no-emul-boot : 開機映像檔是非摸擬軟硬碟的映像檔 -boot-load-size #: 決定啟動前導要佔幾 sectors -boot-info-table : 給啟動映像檔配上訊息表(Patch boot image with info table) -hide-rr-moved : 隱藏 Unix RR 目錄 (Rename RR_MOVED to .rr_moved in Rock Ridge tree) 次要參數 -M 映像檔 或 -prev-session 映像檔: 與指定的映像檔合併 -m 路徑檔名 或 -exclude 路徑檔名: 排除某目錄或文件,其將不會放入映像文件中 -L 或 -allow-leading-dots: 允許文件名的第一個字元為「.」。 -sysid 系統ID: 指定光碟的系統ID,00用於X86系統,01用於PowerPC系統,02用於Macintosh系統。 -print-size: 顯示預估的文件系統大小。 -quiet: 執行時不顯示任何資訊。 -v 或 -verbose: 執行時顯示詳細的資訊。 -D 或 -disable-deep-relocation: ISO 9660最多只能處理8層的目錄,超過8層的部分,RRIP會自動將它們設置成ISO 9660相容的格式。使用-D參數可關閉此功能。 -pad: 輸出湊到32k(default)的倍數 -hide 目錄或檔名: 使指定的目錄或檔案在ISO 9660或Rock RidgeExtensions的系統中隱藏 -hide-joliet 目錄或檔名: 使指定的目錄或文件在Joliet系統中隱藏 -O: 採用 MD5 空間優化 -C 磁區編號, 磁區編號: 將許多磁區合成一個映像檔時,使用此參數 -relaxed-filenames: 擴展的檔名 -gbk4dos-filenames: DOS下支援中文 -gbk4win-filenames: WIN下支援中文 -copyright 版權資訊檔: 指定版權資訊檔的檔名 -log-file 日誌檔: 在執行過程中若有錯誤資訊送入日誌檔,預設會顯示在螢幕上。 -N 或 -omit-version-number: 省略ISO 9660文件中的版本資訊。 -p 數據處理人 或 -preparer 數據處理人: 記錄光碟的數據處理人。 -T 或 -translation-table: 建立文件名的轉換表,適用於不支援Rock Ridge Extensions的系統上。 -h: 顯示幫助 iso檔的檢驗最簡單---------直接mount即可,相當於windows下的虛擬光碟機 如 mount -o loop /home/test.iso /mnt/disk1