命令名稱 | 對象 | 說明 |
---|---|---|
locate | 檔案、目錄 | 以比對資料庫索引的方式,尋找檔案與目錄。 |
find | 檔案、目錄 | 實際於目錄樹中尋找檔案或目錄。 |
whereis | 命令 | 顯示命令、命令原始碼、命令 manual page 的位置。 |
which | 命令 | 顯示命令 (二進位檔) 的存放位置。 |
ldd | 命令 | 顯示與命令相依的分享函式庫。 |
whatis | Man Page | 以關鍵字精確搜尋 manual page。 |
apropos | Man Page | 以關鍵字模糊搜尋 manual page。 |
info | Info Page | 以 Info 格式讀取 manual page。 |
man | Man Page | 搜尋 manual page。 |
whois | 網域名稱 | 查詢網域名稱的註冊資訊。 |
2008年1月4日 星期五
搜尋指令的整理
各種搜尋命令
2008年1月1日 星期二
分割區的管理
分割區的管理其實就是 fdisk 指令的應用,講起來很簡單,但這只是了解 Linux 檔案系統的其中一步而已,以下一個易搞混的例子來說,fdsik -l,mount,df 所顯示資訊的差異,這三個指令顯示的內容有類似的資訊,但事實上完全是兩碼事。
bang@linuxdiary:~$ fdisk -l
Disk /dev/sda: 164.6 GB, 164696555520 bytes
255 heads, 63 sectors/track, 20023 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 13 104391 83 Linux
/dev/sda2 14 144 1052257+ 82 Linux swap
/dev/sda3 145 20023 159678067+ 83 Linux
bang@linuxdiary:~$ mount
/dev/sda3 on / type ext3 (rw)
none on /proc type proc (rw)
none on /sys type sysfs (rw)
none on /dev/pts type devpts (rw,gid=5,mode=620)
usbfs on /proc/bus/usb type usbfs (rw)
/dev/sda1 on /boot type ext3 (rw)
none on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
bang@linuxdiary:~$ df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda3 157171140 130211572 18975668 88% /
/dev/sda1 101086 11071 84796 12% /boot
none 252752 0 252752 0% /dev/shm
注意劃分分割區的注意事項
在參考書中,或 man page 中常常遇到,也容易搞混的一個名詞 Filesystem「檔案系統」,此 名詞有兩種不同的意思:一,檔案與目錄在硬碟(或其它儲存裝置)上的具體組織方法,簡單的說就是分割區類型 (partition type)。二,儲存裝置內容的組織結構,意即目錄樹 (directory tree),也可以說將分割區掛載後的目錄結構。
二的解釋是大家熟悉的檔案系統說明,但也許有人會質疑一的說明,認為分割區就分割區,檔案系統就檔案系統,但如果你去 man 一下 filesystem 就會發現在 man page 中,Filesystem 的意義多為一的解釋。
- 雖然系統可規劃多個分割區,但系統必須在掛載 「/」根目錄的分割區完成開機作業,因此「/bin/」,「/sbin/」,「/etc/」,「/lib/」,「/dev/」此五個目錄必須與根目錄配置於同一分割區。
- 若硬碟容量有限,建議容量最大的分割區分配給「/user/」使用。
- 「/root/」,「/home/」為選擇建立 (optional) 的目錄,若硬碟空間不足,可不建立。
- 「/」,「/var」,「/tmp」,「/usr」,「/usr/local」,「/opt」,「/home」分別配置在不同的獨立分割區,可提高存取效能,增加備份的便利性。
2007年12月23日 星期日
檔案權限
由 存取控制 文章可知,stat
指令可知道檔案的相關資訊,在存取的部分,你可以看到一行如 Access: (0644/-rw-r--r--) 的資訊,其中 -rw-r--r-- 在 存取控制 中就說明了,而 0644 呢?就是本篇的主角之一。
位元模式
在 Linux 中以 chmod
工具來修改檔案權限。但是使用 chmod 時需要一套簡單的表示法來描述檔案權限,而能表示檔案權限的表示法有兩種,分別為位元模式與存取模式。
-rw-r--r-- 用後九個符號來表示檔案存取,而事實上位元模式的位元有 12 個(其中 3個為特殊權限),若直接用二進位來表達過於冗長且容易搞錯。最理想的方式為八進位,因為每三個八位元的數字剛好能表示 12-bits 位元模式分成 4 組不同意義的組合,而下表即各個進位轉換的對照表:
以八進位表示雖然簡潔,但不容易解讀。因此許多工具會以字串模式來表事檔案權限,如之前常提的 ls -l 的輸出訊息,但 ls -l 只顯示 r、w、x 、特殊權限等符號,不包括身分 (u、g、o) 與操作 (-、+,=) 符號,下表即說明字串模式的各個符號:
範例一:用字串模式將檔案存取權限設定為 rw-r--r--,並顯示操作結果。
預設存取模式
當使用者新增一個檔案或目錄時,系統會根據 umask 設定值,來決定這個檔案或目錄的存取權限,而甚麼是 umask 設定值呢?這是一個設定預設存取權限的命令 umask
,以下為範例
查詢目前的

位元模式
在 Linux 中以 chmod

-rw-r--r-- 用後九個符號來表示檔案存取,而事實上位元模式的位元有 12 個(其中 3個為特殊權限),若直接用二進位來表達過於冗長且容易搞錯。最理想的方式為八進位,因為每三個八位元的數字剛好能表示 12-bits 位元模式分成 4 組不同意義的組合,而下表即各個進位轉換的對照表:
符號 | 二進位 | 八進位 |
---|---|---|
--- | 000 | 0 |
--x | 001 | 1 |
-w- | 010 | 2 |
-wx | 011 | 3 |
r-- | 100 | 4 |
r-x | 101 | 5 |
rw- | 110 | 6 |
rwx | 111 | 7 |
範例:字串模式
rw-r--r--
110100100
644
rwxrwxr-x
111111101
775
以八進位表示雖然簡潔,但不容易解讀。因此許多工具會以字串模式來表事檔案權限,如之前常提的 ls -l 的輸出訊息,但 ls -l 只顯示 r、w、x 、特殊權限等符號,不包括身分 (u、g、o) 與操作 (-、+,=) 符號,下表即說明字串模式的各個符號:
符號 | 說明 | |
---|---|---|
身分 | u | 擁有者 (user) |
g | 群組 | |
o | 其他人 | |
a | 所有人 | |
操作 | - | 移除 |
r-x | + | 添加 |
rw- | = | 設定 |
權限 | r | 讀取 |
w | 寫入 | |
x | 執行 | |
s | SUID 或 SGID (s 代表同擁有 x 權限,S 則無) | |
t | Sticky 權限 (t 代表同擁有 x 權限,T 則無) |
範例我們會用 chmod 來調整檔案或目錄的存取模式,就會大量的用到字串模式的表示法,以下為範例:
u+x 讓使用者有執行權限
go-w 移除群組與其他人的寫入權限
o+t 將其他人設定 Sticky 權限
a=rw 所有人都為讀取與寫入權限
範例一:用字串模式將檔案存取權限設定為 rw-r--r--,並顯示操作結果。
bang@linuxdiary:~$ chmod -v u=rw,go=r chmod_test1範例二:讓其它使用者無法存取整個 Desktop 目錄,並顯示操作結果。
mode of `chmod_test1' retained as 0644 (rw-r--r--)
bang@linuxdiary:~$ chmod -vR o-rwx Desktop範例三:將 Desktop 目錄設定 SGID,並顯示操作結果。
mode of `Desktop' retained as 0750 (rwxr-x---)
mode of `Desktop/abc.txt' changed to 0640 (rw-r-----)
bang@linuxdiary:~$ chmod -v g+s Desktop範例四:將 Desktop 目錄設定 Stickey 權限,並顯示操作結果。
mode of `Desktop' changed to 2750 (rwxr-s---)
bang@linuxdiary:~$ chmod -v +t Desktop
mode of `Desktop' changed to 3750 (rwxr-s--T)
預設存取模式
當使用者新增一個檔案或目錄時,系統會根據 umask 設定值,來決定這個檔案或目錄的存取權限,而甚麼是 umask 設定值呢?這是一個設定預設存取權限的命令 umask

查詢目前的
bang@linuxdiary:~$ umask新增一個檔案,並檢查預設存取權限
0022
bang@linuxdiary:~$ touch umask_test1更改目前的預設權限
bang@linuxdiary:~$ ls -l umask_test1
-rw-r--r-- 1 bang bang 0 Dec 24 00:18 umask_test1
bang@linuxdiary:~$ umask 002我們可以發現 umask 前後,新增檔案的存取權限是相異的。
bang@linuxdiary:~$ touch umask_test2
bang@linuxdiary:~$ ls -l umask_test
-rw-r--r-- 1 bang bang 0 Dec 24 00:18 umask_test1
-rw-rw-r-- 1 bang bang 0 Dec 24 23:46 umask_test2
注意
- 通常系統預設的 umask 設定,會在 /etc 目錄下的 profile (debian)或 bashrc (red hat)中。這點好像不太重要,因為可以放的地方還蠻多的,FHS 也沒硬性規定一定要放哪,只是喚起對這兩個 shell 設定檔的記憶。
- 在 red hat 中,一般用戶的 umask 為 0002,而 root 為 0022;debian 皆為 0022,故這邊的範例是以 debian 為例喔,我是用一般用戶 touch 一個檔案。
2007年12月17日 星期一
GRUB 的安裝與設定
GRUB (Grand Unified Bootloader) 是一個多段式開機管理程式,由它的名稱 GR,就可猜想,它支援多種檔案系統和作業系統,幾乎可以啟動任何核心。
GRUB 的裝置命名方式
之前曾經提過 Linux 裝置的命名方式 文章,而本文主要是在探討 GRUB 在用的命名方式。
GRUB 的命名方式: ( xdn[,m] )
其中 xd 代表磁碟類型,n 是『BIOS 的磁碟編號順序』從 0 開始,m 是第幾個分割區,從 0 開始。
範例:
(fd0) :第一台軟碟機。
(hd0):第一顆硬碟。
(hd0,1):第一顆硬碟上的第二個分割區。
裝置檔位置
redhat:/etc/grub.conf,/boot/grub/menu.lst,/boot/grub/grub.conf (真實檔案位置)
debian: /boot/grub/menu.lst
舉以下例子 (fedora 3) 說明:
GRUB 的裝置命名方式
之前曾經提過 Linux 裝置的命名方式 文章,而本文主要是在探討 GRUB 在用的命名方式。
GRUB 的命名方式: ( xdn[,m] )
其中 xd 代表磁碟類型,n 是『BIOS 的磁碟編號順序』從 0 開始,m 是第幾個分割區,從 0 開始。
範例:
(fd0) :第一台軟碟機。
(hd0):第一顆硬碟。
(hd0,1):第一顆硬碟上的第二個分割區。
注意:GRUB 裝置檔的設定
- 在 GRUB 之中,hd 即代表各種硬碟,無規格區分,IDE ,SATA,SCSI 硬碟都以 hd 表示。
- GRUB 的分割區編號由 0 開始,而一般裝命名由 1 開始,如第二顆硬碟的第二個分割區 GRUB 為 (hd1,1),一般為 hdb2
裝置檔位置
redhat:/etc/grub.conf,/boot/grub/menu.lst,/boot/grub/grub.conf (真實檔案位置)
debian: /boot/grub/menu.lst
舉以下例子 (fedora 3) 說明:
default=1 #預設以哪一個選項開機,起始為 0
timeout=5 #暫停時間 (單位:秒)
splashimage=(hd0,0)/grub/splash.xpm.gz #背景圖片
hiddenmenu #是否隱藏選單
#以下為開機選項
title Fedora Core (2.6.12-1.1381_FC3) #標題
root (hd0,0) #開機目錄所在位置
kernel /vmlinuz-2.6.12-1.1381_FC3 ro root=/dev/VolGroup00/LogVol00 rhgb quiet #核心映像檔
initrd /initrd-2.6.12-1.1381_FC3.img #initrd 映像檔
title Fedora Core (2.6.12-1.1381_FC3smp)
root (hd0,0)
kernel /vmlinuz-2.6.12-1.1381_FC3smp ro root=/dev/VolGroup00/LogVol00 rhgb quiet
initrd /initrd-2.6.12-1.1381_FC3smp.img
2007年12月12日 星期三
存取控制
「存取控制」的作用就是,讓適當身分的人獲得適當的存取權。
何謂身分?在 Linux/Unix 系統中,定義以下三種關係。
三種動作:讀 (read),寫 (write),執行 (execute)。對於目錄,同樣也有三種動作:列出檔案,新增檔案,進入目錄。以下為權限列表:
我們可以用 ls -l 或 statFileName | Directory
來顯示目錄或檔案的權限資訊,以下為例子
在 目錄內容 文章中,即簡介了 rwxr-xr-x 的意義,但在這邊要注意的是 Desktop 在此為目錄,以身分為其他人為例 r-x 的意義為,其他使用者 對於 Desktop 可用 ls 列出目錄,不能新增刪除檔案,可以 cd 進入目錄。
何謂身分?在 Linux/Unix 系統中,定義以下三種關係。
- Owner 擁有者:檔案的擁有者,通常是產生檔案的那個人。
- Group 群組:檔案所屬的群組。通常是擁有者所屬的群組。
- Other 其他人:既非擁有者,也不是群組成員的其他人。
三種動作:讀 (read),寫 (write),執行 (execute)。對於目錄,同樣也有三種動作:列出檔案,新增檔案,進入目錄。以下為權限列表:
權限 | 符號 | 檔案權限說明 | 目錄權限說明 |
---|---|---|---|
讀取 (Read) | r | 檢視檔案內容 | 列出目錄內容 |
寫入 (Write) | w | 寫入(或變更)檔案 | 建立,移除目錄下的檔案 |
執行 (Execute) | x | 將檔案當成程式執行 | 進入 (cd ) 到目錄 |
我們可以用 ls -l 或 stat

bang@linuxdiary:~$ ls -l
drwxr-xr-x 2 bang bang 4096 2007-05-20 13:51 Desktop
bang@linuxdiary:~$ stat Desktop/
File: `Desktop/'
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: 301h/769d Inode: 10666042 Links: 2
Access: (0755/drwxr-xr-x) Uid: ( 1000/ bang) Gid: ( 1000/ bang)
Access: 2007-12-23 07:35:21.000000000 +0800
Modify: 2007-05-20 13:51:01.000000000 +0800
Change: 2007-05-20 13:51:01.000000000 +0800
在 目錄內容 文章中,即簡介了 rwxr-xr-x 的意義,但在這邊要注意的是 Desktop 在此為目錄,以身分為其他人為例 r-x 的意義為,其他使用者 對於 Desktop 可用 ls 列出目錄,不能新增刪除檔案,可以 cd 進入目錄。
2007年12月10日 星期一
Cron Job 排程工作
設定系統的工作排程,主要是修改 /etc/crontab,當我們檢視 /etc/crontab 時,我們可以看到以下程式碼
# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 1 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
由這段程式碼我們可窺見程式碼中每個數字的意義
crontab 檔案的格式為一行中有5個數字,以空白鍵或tab鍵分開。這五個數字指定命令執行的時間:
01 * * * * root run-parts /etc/cron.hourly
分 時 日 月 週 角色 排程工作
代表意義 | 分鐘 | 小時 | 日期 | 月份 | 週 |
數字範圍 | 0-59 | 0-23 | 1-31 | 1-12 | 0-7 0,7皆可代表週日 |
範例:
- 01 * * * * => 每個鐘頭的 01 分
- 02 4 * * * => 每天的 4 點 02 分
- 22 1 * * 0 => 每個週日的 1 點 22 分
- 42 4 1 * * => 每月 1 號的 4 點 42 分
- 0 3,6 * * * => 每天 3 點與 6 點
- 20 8-12 * * * => 每天 8 點到 12 點之間的每個小時的 20 分
- */5 * * * * =>每五分鐘進行一次,用 * 與 /n 來搭配代表每隔 n 單位間隔
crontab

crontab -e:建立,編輯使用者的工作排程。
crontab -l:列出使用者的工作排程。
crontab -r:清空使用者的工作排程。
注意事項:
- crontab -e 命令會在/var/spool/cron/crontabs目錄下建立一個與您的使用者名稱同名的檔案。
此檔案中的命令會在特定時間間隔於用戶的起始目錄中執行。- 當crontab 命令錯誤時,會發一封郵件給管理者,可藉由編輯 /etc/crontab 中的 MAILTO,來指定寄件信箱。
2007年12月1日 星期六
忘記 root 密碼怎麼辦
root 密碼若忘記,該台主機幾乎無法再做任何重大變動,這種情形容易發生在 MIS 交接的時候,如果真的發生怎麼辦呢?在系統啟動文章有提到 GRUB 在啟動顯示開機選單時,可修改核心命令,那時我們可以將系統啟動為 runlevel 1 的狀態,即單用戶模式,此時 root 的登入是不需要密碼的,再用 passwd 修改 root 密碼。
以下用 Fedora 8 為例示範整個流程:
1.首先開機後進入 GRUB 選單,在你欲開機的核心上點擊按鍵 e

2.在核心命令列上點擊按鍵 e

3.在該行命列最後加上 1 或 s 或 S,修改完後按 Enter

4.點擊按鍵 b,立即開機。
5.以下即為 runlevel 1 時的畫面,可用 passwd 修改 root 密碼。
以下用 Fedora 8 為例示範整個流程:
1.首先開機後進入 GRUB 選單,在你欲開機的核心上點擊按鍵 e

2.在核心命令列上點擊按鍵 e

3.在該行命列最後加上 1 或 s 或 S,修改完後按 Enter

4.點擊按鍵 b,立即開機。
5.以下即為 runlevel 1 時的畫面,可用 passwd 修改 root 密碼。

訂閱:
文章 (Atom)