歡迎您光臨本站 註冊首頁

必學的Linux指令

←手機掃碼閱讀     火星人 @ 2014-03-24 , reply:0

指令:fstab

使用許可權 : 超級使用者

使用方式 : 使用編輯器來修改 /etc/fstab (eg. vi /etc/fstab)

說明 : 存放檔案系統與目錄結構對應資料的檔案


fstab 欄位說明:

第一欄(fs_spec): 實際的 device 名稱
第二欄(fs_file): 對應到的目錄結構(mount point)
第三欄(fs_vfstype):該 partition 的檔案系統,常見的有:

minix、ext、ext2、msdos、iso9660、nfs、swap
第四欄(fs_mntops): 在 mount 時的參數
第五欄(fs_freq): 在使用 dump 時是否記錄,不需要則輸入0
第六欄(fs_passno): 決定在開機時執行 fsck 的先後順序

例子 :
IDE 硬碟分成兩個 partition 與一個 swap,還有一台光碟機跟一台軟碟機的情形 :


/dev/hda1 / ext2 defaults 1 1
/dev/hda5 /home ext2 defaults 1 2
/dev/cdrom /mnt/cdrom iso9660 noauto,user,ro 0 0
/dev/hda6 swap swap defaults 0 0
/dev/fd0 /mnt/floppy ext2 noauto,owner 0 0
none /proc proc defaults 0 0
none /dev/pts devpts gid=5,mode=620 0 0

名稱:su
使用許可權:所有使用者
使用方式:su [-fmp] [-c command] [-s shell] [--help] [--version] [-] [USER [ARG]]
說明:變更為其他使用者的身份,除 root 外,需要鍵入該使用者的密碼
參數:
-f 或 --fast 不必讀啟動檔(如 csh.cshrc 等),僅用於 csh 或 tcsh
-m -p 或 --preserve-environment 執行 su 時不改變環境變數
-c command 或 --command=command 變更為帳號為 USER 的使用者並執行指令(command)后再變回原來使用者
-s shell 或 --shell=shell 指定要執行的 shell (bash csh tcsh 等),預設值為 /etc/passwd 內的該使用者(USER) shell
--help 顯示說明文件
--version 顯示版本資訊
- -l 或 --login 這個參數加了之後,就好像是重新 login 為該使用者一樣,大部份環境變數(HOME SHELL USER等等)都是以該使用者(USER)為主,並且工作目錄也會改變,如果沒有指定 USER ,內定是 root
USER 欲變更的使用者帳號
ARG 傳入新的 shell 參數
範例:
su -c ls root 變更帳號為 root 並在執行 ls 指令後退出變回原使用者。
su root -f 變更帳號為 root 並傳入 -f 參數給新執行的 shell。
su - clsung 變更帳號為 clsung 並改變工作目錄至 clsung 的家目錄(home dir)。

名稱 : shutdown

使用許可權 : 系統管理者

使用方式 : shutdown [-t seconds] [-rkhncfF] time [message]

說明 : shutdown 可以用來進行關機程序,並且在關機以前傳送訊息給所有使用者正在執行的程序,shutdown 也可以用來重開機。

參數 :

-t seconds : 設定在幾秒鐘之後進行關機程序
-k : 並不會真的關機,只是將警告訊息傳送給所有隻用者
-r : 關機后重新開機
-h : 關機后停機
-n : 不採用正常程序來關機,用強迫的方式殺掉所有執行中的程序后自行關機
-c : 取消目前已經進行中的關機動作
-f : 關機時,不做 fcsk 動作(檢查 Linux 檔系統)
-F : 關機時,強迫進行 fsck 動作
time : 設定關機的時間
message : 傳送給所有使用者的警告訊息

名稱:reboot
使用許可權:系統管理者
使用方式:reboot [-n] [-w] [-d] [-f] [-i]
說明:若系統的 runlevel 為 0 或 6 ,則重新開機,否則以 shutdown 指令(加上 -r 參數)來取代
參數:
-n : 在重開機前不做將記憶體資料寫回硬碟的動作
-w : 並不會真的重開機,只是把記錄寫到 /var/log/wtmp 檔案里
-d : 不把記錄寫到 /var/log/wtmp 檔案里(-n 這個參數包含了 -d) -f : 強迫重開機,不呼叫 shutdown 這個指令
-i : 在重開機之前先把所有網路相關的裝置先停止
範例:
reboot 重開機。
reboot -w 做個重開機的模擬(只有紀錄並不會真的重開機)。

名稱:adduser
使用許可權:系統管理員
使用方式:adduser [-c comment] [-d home_dir]
[-e expire_date] [-f inactive_time]
[-g initial_group] [-G group[,...]]
[-m [-k skeleton_dir] | -M] [-p passwd]
[-s shell] [-u uid [ -o]] [-n] [-r] loginid
或 adduser -D [-g default_group] [-b default_home]
[-f default_inactive]
[-e default_expire_date]
[-s default_shell]
附註:adduser 與 useradd 指令為同一指令(經由符號連結 symbolic link)
說明:新增使用者帳號或更新預設的使用者資料
參數:
-c comment 新使用者位於密碼檔(通常是 /etc/passwd)的註解資料
-d home_dir 設定使用者的家目錄為 home_dir ,預設值為預設的 home 後面加上使用者帳號 loginid
-e expire_date 設定此帳號的使用期限(格式為 YYYY-MM-DD),預設值為永久有效
-f inactive_time 範例:


adduser是增加使用者.
相對的,也有刪除使用者的指令,userdel.
語法:userdel [login ID]

名稱 : mount
使用許可權 : 系統管理者或/etc/fstab中允許的使用者
使用方式 :
mount [-hV]
mount -a [-fFnrsvw] [-t vfstype]
mount [-fnrsvw] [-o options [,...]] device | dir
mount [-fnrsvw] [-t vfstype] [-o options] device dir
說明 :

將某個檔案的內容解讀成檔案系統,然後將其掛在目錄的某個位置之上。當這個命令執行成功后,直到我們使用 umnount 將這個檔案系統移除為止,這個命令之下的所有檔案將暫時無法被調用。

這個命令可以被用來掛上任何的檔案系統,你甚至可以用 -o loop 選項將某個一般的檔案當成硬碟機分割掛上系統。這個功能對於 ramdisk,romdisk 或是 ISO 9660 的影像檔之解讀非常實用。

參數

-V

顯示程序版本
-h

顯示輔助訊息
-v

顯示較訊息,通常和 -f 用來除錯。
-a
將 /etc/fstab 中定義的所有檔案系統掛上。

-F
這個命令通常和 -a 一起使用,它會為每一個 mount 的動作產生一個行程負責執行。在系統需要掛上大量 NFS 檔案系統時可以加快掛上的動作。

-f
通常用在除錯的用途。它會使 mount 並不執行實際掛上的動作,而是模擬整個掛上的過程。通常會和 -v 一起使用。

-n
一般而言,mount 在掛上後會在 /etc/mtab 中寫入一筆資料。但在系統中沒有可寫入檔案系統存在的情況下可以用這個選項取消這個動作。

-s-r
等於 -o ro

-w
等於 -o rw

-L
將含有特定標籤的硬碟分割掛上。

-U
將檔案分割序號為 的檔案系統掛下。-L 和 -U 必須在/proc/partition 這種檔案存在時才有意義。

-t
指定檔案系統的型態,通常不必指定。mount 會自動選擇正確的型態。

-o async
打開非同步模式,所有的檔案讀寫動作都會用非同步模式執行。

-o sync
在同步模式下執行。

-o atime
-o noatime
當 atime 打開時,系統會在每次讀取檔案時更新檔案的『上一次調用時間』。當我們使用 flash 檔案系統時可能會選項把這個選項關閉以減少寫入的次數。

-o auto
-o noauto
打開/關閉自動掛上模式。

-o defaults
使用預設的選項 rw, suid, dev, exec, auto, nouser, and async.

-o dev
-o nodev-o exec
-o noexec
允許執行檔被執行。

-o suid
-o nosuid
允許執行檔在 root 許可權下執行。

-o user
-o nouser
使用者可以執行 mount/umount 的動作。

-o remount
將一個已經掛下的檔案系統重新用不同的方式掛上。例如原先是唯讀的系統,現在用可讀寫的模式重新掛上。

-o ro
用唯讀模式掛上。

-o rw
用可讀寫模式掛上。

-o loop=
使用 loop 模式用來將一個檔案當成硬碟分割掛上系統。

範例

將 /dev/hda1 掛在 /mnt 之下。

#mount /dev/hda1 /mnt

將 /dev/hda1 用唯讀模式掛在 /mnt 之下。

#mount -o ro /dev/hda1 /mnt


將 /tmp/image.iso 這個光碟的 image 檔使用 loop 模式掛在 /mnt/cdrom之下。用這種方法可以將一般網路上可以找到的 Linux 光 碟 ISO 檔在不燒錄成光碟的情況下檢視其內容。

#mount -o loop /tmp/image.iso /mnt/cdrom

相關命令umount

指令:fdisk

用途:觀察硬碟之實體使用情形與分割硬碟用。

使用方法:

      一、在 console 上輸入 fdisk -l /dev/sda ,觀察硬碟之實體使用情形。

      二、在 console 上輸入 fdisk /dev/sda,可進入分割硬碟模式。

        1. 輸入 m 顯示所有命令列示。

        2. 輸入 p 顯示硬碟分割情形。

        3. 輸入 a 設定硬碟啟動區。

        4. 輸入 n 設定新的硬碟分割區。

         4.1. 輸入 e 硬碟為[延伸]分割區(extend)。

         4.2. 輸入 p 硬碟為[主要]分割區(primary)。

        5. 輸入 t 改變硬碟分割區屬性。

        6. 輸入 d 刪除硬碟分割區屬性。

        7. 輸入 q 結束不存入硬碟分割區屬性。

        8. 輸入 w 結束並寫入硬碟分割區屬性。

指令:e2fsck

使用許可權 : 超級使用者

使用方式 : e2fsck [-pacnydfvFV] [-b superblock] [-B blocksize] [-l|-L bad_blocks_file] [-C fd] device

說明 : 檢查使用 Linux ext2 檔案系統的 partition 是否正常工作


參數 :

device : 預備檢查的硬碟 partition,例如:/dev/sda1
-a : 對 partition 做檢查,若有問題便自動修復,等同 -p 的功能
-b : 設定存放 superblock 的位置
-B : 設定單位 block 的大小
-c : 檢查該partition 是否有壞軌
-C file : 將檢查的結果存到 file 中以便查看
-d : 列印 e2fsck 的 debug 結果
-f : 強制檢查
-F : 在開始檢查前,將device 的 buffer cache 清空,避免有錯誤發生
-l bad_blocks_file : 將有壞軌的block資料加到 bad_blocks_file 裡面
-L bad_blocks_file : 設定壞軌的block資料存到 bad_blocks_file 裡面,若無該檔則自動產生
-n : 將檔案系統以[唯讀]方式開啟
-p : 對 partition 做檢查,若有問題便自動修復
-v : 詳細顯示模式
-V : 顯示出目前 e2fsck 的版本
-y : 預先設定所有檢查時的問題均回答[是]

例子 :
檢查 /dev/hda5 是否正常,如果有異常便自動修復,並且設定若有問答,均回答[是] :
e2fsck -a -y /dev/hda5

注意 :

大部份使用 e2fsck 來檢查硬碟 partition 的情況時,通常都是情形特殊,因此最好先將該 partition umount,然後再執行 e2fsck 來做檢查,若是要非要檢查 / 時,則請進入 singal user mode 再執行。

名稱:df
使用許可權: 所有使用者>
使用方式: df [選項]... [FILE]...

顯示檔案系統的狀況,或是看所有檔案系統的狀況(預設值)


-a, --all 包含所有的具有 0 Blocks 的檔案系統
--block-size={SIZE} 使用 {SIZE} 大小的 Blocks
-h, --human-readable 使用人類可讀的格式(預設值是不加這個選項的...)
-H, --si 很像 -h, 但是用 1000 為單位而不是用 1024
-i, --inodes 列出 inode 資訊,不列出已使用 block
-k, --kilobytes 就像是 --block-size=1024
-l, --local 限制列出的檔案結構
-m, --megabytes 就像 --block-size=1048576
--no-sync 取得資訊前不 sync (預設值)
-P, --portability 使用 POSIX 輸出格式
--sync 在取得資訊前 sync
-t, --type=TYPE 限制列出檔案系統的 TYPE
-T, --print-type 顯示檔案系統的形式
-x, --exclude-type=TYPE 限制列出檔案系統不要顯示 TYPE
-v (忽略)
--help 顯示這個幫手並且離開
--version 輸出版本資訊並且離開

名稱: dd
使用許可權: 所有使用者dd 這個指令在 manual 里的定義是 convert and copy a file

使用方式:
dd [option]


如果你想要在線看 manual, 可以試試:
dd --help

或是
info dd

如果你想要看看這個版本如何:
dd --version

輸入或輸出
dd if=[STDIN] of=[STDOUT]

強迫輸入或輸出的Size為多少Bytes
bs: dd -ibs=[BYTE] -obs=[SIZE]

強迫一次只做多少個 Bytes
cbs=BYTES

跳過一段以後才輸出
seek=BLOCKS

跳過一段以後才輸入
skip=BLOCKS

當然你可以拿這個來方便的拷貝光碟(注意,你的光碟是標準的 iso9660格式才可以這麼做唷!)

dd if=/dev/cdrom of=cdrom.iso
其中 if 後面以及 of 後面的內容依你的需求調整。

然後給系統這個指令就可以燒了:

cdrecord -v cdrom.iso
這篇不是在講 cdrecord 的,所以上面的指令是最為簡單但是不一定能符合您的硬體環境....

指令:clear

用途:清除螢幕用。

使用方法:在 console 上輸入 clear。

名稱:tr

### 1.比方說要把目錄下所有的大寫檔名換為小寫檔名?

似乎有很多方式,\"tr\"是其中一種:

#!/bin/sh

dir=\"/tmp/testdir\";
files=`find $dir -type f`;
for i in $files
do
dir_name=`dirname $i`;
ori_filename=`basename $i`
new_filename=`echo $ori_filename | tr [:upper:] [:lower:]` > /dev/null;
#echo $new_filename;
mv $dir_name/$ori_filename $dir_name/$new_filename
done


### 2.自己試驗中...lowercase to uppercase

tr abcdef...[del] ABCDE...[del]
tr a-z A-Z
tr \'[:lower:]\' \'[:upper:]\'

shell>> echo \"this is a test\" | tr a-z A-Z > www
shell>> cat www
THIS IS A TEST

### 3.去掉不想要的字串

shell>> tr -d this ### 去掉有關 t.e.s.t
this

man
man
test
e

### 4.取代字串

shell>> tr -s \"this\" \"TEST\"
this
TEST
th
TE

名稱:top

使用許可權:所有使用者

使用方式:top [-] [d delay] [q] [c] [S] [s] [n]

說明:實時顯示 process 的動態

參數:

d : 改變顯示的更新速度,或是在交談式指令列( interactive command)按 s
q : 沒有任何延遲的顯示速度,如果使用者是有 superuser 的許可權,則 top 將會以最高的優先序執行
c : 切換顯示模式,共有兩種模式,一是只顯示執行檔的名稱,另一種是顯示完整的路徑與名稱S : 累積模式,會將己完成或消失的子行程 ( dead child process ) 的 CPU time 累積起來
s : 安全模式,將交談式指令取消, 避免潛在的危機
i : 不顯示任何閑置 (idle) 或無用 (zombie) 的行程
n : 更新的次數,完成後將會退出 top
b : 批次檔模式,搭配 \"n\" 參數一起使用,可以用來將 top 的結果輸出到檔案內

範例:
顯示更新十次後退出 ;
top -n 10

使用者將不能利用交談式指令來對行程下命令 :
top -s

將更新顯示二次的結果輸入到名稱為 top.log 的檔案里 :
top -n 2 -b < top.log

名稱:ps
使用許可權:所有使用者
使用方式:ps [options] [--help]
說明:顯示瞬間行程 (process) 的動態
參數:
ps 的參數非常多, 在此僅列出幾個常用的參數並大略介紹含義
-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: 不可中斷的靜止 (通悸□□縝b進行 I/O 動作)
R: 正在執行中
S: 靜止狀態
T: 暫停執行
Z: 不存在但暫時無法消除
W: 沒有足夠的記憶體分頁可分配
<: 高優先序的行程
N: 低優先序的行程
L: 有記憶體分頁分配並鎖在記憶體內 (實時系統或捱A I/O)
START: 行程開始時間
TIME: 執行的時間
COMMAND:所執行的指令

範例:

ps
PID TTY TIME CMD
2791 ttyp0 00:00:00 tcsh
3092 ttyp0 00:00:00 ps
% ps -A
PID TTY TIME CMD
1 ? 00:00:03 init
2 ? 00:00:00 kflushd
3 ? 00:00:00 kpiod
4 ? 00:00:00 kswapd
5 ? 00:00:00 mdrecoveryd
.......
% ps -aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.7 1096 472 ? S Sep10 0:03 init [3]
root 2 0.0 0.0 0 0 ? SW Sep10 0:00 [kflushd]
root 3 0.0 0.0 0 0 ? SW Sep10 0:00 [kpiod]
root 4 0.0 0.0 0 0 ? SW Sep10 0:00 [kswapd]
........

名稱:kill

使用許可權:所有使用者

使用方式:

kill [ -s signal | -p ] [ -a ] pid ...
kill -l [ signal ]
說明:kill 送出一個特定的信號 (signal) 給行程 id 為 pid 的行程根據該信號而做特定的動作, 若沒有指定, 預設是送出終止 (TERM) 的信號
參數:

-s (signal) : 其中可用的訊號有 HUP (1), KILL (9), TERM (15), 分別代表著重跑, 砍掉, 結束; 詳細的信號可以用 kill -l
-p : 印出 pid , 並不送出信號
-l (signal) : 列出所有可用的信號名稱
範例:

將 pid 為 323 的行程砍掉 (kill) :
kill -9 323

將 pid 為 456 的行程重跑 (restart) :
kill -HUP 456

名稱:cat
使用許可權:所有使用者
使用方式:cat [-AbeEnstTuv] [--help] [--version] fileName
說明:把檔案串連接後傳到基本輸出(螢幕或加 > fileName 到另一個檔案)
參數:
-n 或 --number 由 1 開始對所有輸出的行數編號
-b 或 --number-nonblank 和 -n 相似,只不過對於空白行不編號
-s 或 --squeeze-blank 當遇到有連續兩行以上的空白行,就代換為一行的空白行
-v 或 --show-nonprinting
範例:
cat -n textfile1 > textfile2 把 textfile1 的檔案內容加上行號后輸入 textfile2 這個檔案里
cat -b textfile1 textfile2 >> textfile3 把 textfile1 和 textfile2 的檔案內容加上行號(空白行不加)之後將內容附加到 textfile3 里。


範例:
把 textfile1 的檔案內容加上行號后輸入 textfile2 這個檔案里
cat -n textfile1 > textfile2

把 textfile1 和 textfile2 的檔案內容加上行號(空白行不加)之後將內容附加到 textfile3 里。
cat -b textfile1 textfile2 >> textfile3


cat /dev/null > /etc/test.txt 此為清空/etc/test.txt檔案內容


cat 也可以用來製作 image file。例如要製作軟碟的 image file,將軟碟放好后打
cat /dev/fd0 > OUTFILE

相反的,如果想把 image file 寫到軟碟,請打
cat IMG_FILE > /dev/fd0


註:
1. OUTFILE 指輸出的 image 檔名。
2. IMG_FILE 指 image file。
3. 若從 image file 寫回 device 時,device 容量需與相當。
4. 通常用在製作開機磁片。

指令名稱 : chmod

使用許可權 : 所有使用者

使用方式 : chmod [-cfvR] [--help] [--version] mode file...

說明 : Linux/Unix 的檔案調用許可權分為三級 : 檔案擁有者、群組、其他。利用 chmod 可以藉以控制檔案如何被他人所調用。

參數 :

mode : 許可權設定字串,格式如下 : [ugoa...][[+-=][rwxX]...][,...],其中
u 表示該檔案的擁有者,g 表示與該檔案的擁有者屬於同一個群體(group)者,o 表示其他以外的人,a 表示這三者皆是。
+ 表示增加許可權、- 表示取消許可權、= 表示唯一設定許可權。
r 表示可讀取,w 表示可寫入,x 表示可執行,X 表示只有當該檔案是個子目錄或者該檔案已經被設定過為可執行。
-c : 若該檔案許可權確實已經更改,才顯示其更改動作
-f : 若該檔案許可權無法被更改也不要顯示錯誤訊息
-v : 顯示許可權變更的詳細資料
-R : 對目前目錄下的所有檔案與子目錄進行相同的許可權變更(即以遞迴的方式逐個變更)
--help : 顯示輔助說明
--version : 顯示版本

範例 :將檔案 file1.txt 設為所有人皆可讀取 :
chmod ugo+r file1.txt

將檔案 file1.txt 設為所有人皆可讀取 :
chmod a+r file1.txt

將檔案 file1.txt 與 file2.txt 設為該檔案擁有者,與其所屬同一個群體者可寫入,但其他以外的人則不可寫入 :
chmod ug+w,o-w file1.txt file2.txt

將 ex1.py 設定為只有該檔案擁有者可以執行 :
chmod u+x ex1.py

將目前目錄下的所有檔案與子目錄皆設為任何人可讀取 :
chmod -R a+r *

此外chmod也可以用數字來表示許可權如 chmod 777 file
語法為:chmod abc file

其中a,b,c各為一個數字,分別表示User、Group、及Other的許可權。

r=4,w=2,x=1
若要rwx屬性則4+2+1=7;
若要rw-屬性則4+2=6;
若要r-x屬性則4+1=7。

範例:
chmod a=rwx file


chmod 777 file

效果相同
chmod ug=rwx,o=x file


chmod 771 file

效果相同

若用chmod 4755 filename可使此程序具有root的許可權

名稱:cp

使用許可權:所有使用者

使用方式:

cp [options] source dest
cp [options] source... directory

說明:將一個檔案拷貝至另一檔案,或將數個檔案拷貝至另一目錄。

參數:

-a 儘可能將檔案狀態、許可權等資料都照原狀予以複製。
-r 若 source 中含有目錄名,則將目錄下之檔案亦皆依序拷貝至目的地。
-f 若目的地已經有相同檔名的檔案存在,則在複製前先予以刪除再行複製。
範例:
將檔案 aaa 複製(已存在),並命名為 bbb :
cp aaa bbb

將所有的C語言程序拷貝至 Finished 子目錄中 :
cp *.c Finished

名稱 : crontab

使用許可權 : 所有使用者

使用方式 :

crontab [ -u user ] file
crontab [ -u user ] { -l | -r | -e }

說明 :
crontab 是用來讓使用者在固定時間或固定間隔執行程序之用,換句話說,也就是類似使用者的時程表。-u user 是指設定指定 user 的時程表,這個前提是你必須要有其許可權(比如說是 root)才能夠指定他人的時程表。如果不使用 -u user 的話,就是表示設定自己的時程表。

餐數 :

-e : 執行文字編輯器來設定時程表,內定的文字編輯器是 VI,如果你想用別的文字編輯器,則請先設定 VISUAL 環境變數來指定使用那個文字編輯器(比如說 setenv VISUAL joe)
-r : 刪除目前的時程表
-l : 列出目前的時程表

時程表的格式如下 :
f1 f2 f3 f4 f5 program

其中 f1 是表示分鐘,f2 表示小時,f3 表示一個月份中的第幾日,f4 表示月份,f5 表示一個星期中的第幾天。program 表示要執行的程序。
當 f1 為 * 時表示每分鐘都要執行 program,f2 為 * 時表示每小時都要執行程序,其餘類推
當 f1 為 a-b 時表示從第 a 分鐘到第 b 分鐘這段時間內要執行,f2 為 a-b 時表示從第 a 到第 b 小時都要執行,其餘類推
當 f1 為 */n 時表示每 n 分鐘個時間間隔執行一次,f2 為 */n 表示每 n 小時個時間間隔執行一次,其餘類推
當 f1 為 a, b, c,... 時表示第 a, b, c,... 分鐘要執行,f2 為 a, b, c,... 時表示第 a, b, c...個小時要執行,其餘類推

使用者也可以將所有的設定先存放在檔案 file 中,用 crontab file 的方式來設定時程表。
例子 :

每月每天每小時的第 0 分鐘執行一次 /bin/ls :
0 7 * * * /bin/ls

在 12 月內, 每天的早上 6 點到 12 點中,每隔 20 分鐘執行一次 /usr/bin/backup :
0 6-12/3 * 12 * /usr/bin/backup

周一到周五每天下午 5:00 寄一封信給 alex@domain.name :
0 17 * * 1-5 mail -s \"hi\" alex@domain.name < /tmp/maildata

每月每天的午夜 0 點 20 分, 2 點 20 分, 4 點 20 分....執行 echo \"haha\"
20 0-23/2 * * * echo \"haha\"

注意 :

當程序在你所指定的時間執行后,系統會寄一封信給你,顯示該程序執行的內容,若是你不希望收到這樣的信,請在每一行空一格之後加上 > /dev/null 2>&1 即可

名稱:mail


使用許可權:所有使用者


使用方式:mail [-iInv] [-s subject] [-c cc-addr] [-b bcc-addr] user1 [user 2 ...]


說明:
mail 不僅只是一個指令, mail 還是一個電子郵件程序,不過利用 mail 來讀信的人應該很少吧!對於系統管理者來說 mail 就很有用,因為管理者可以用 mail 寫成 script ,定期寄一些備忘錄提醒系統的使用者。


參數:
i 忽略 tty 的中斷訊號。 (interrupt)
I 強迫設成互動模式。 (Interactive)
v 列印出訊息,例如送信的地點、狀態等等。 (verbose)
n 不讀入 mail.rc 設定檔。
s 郵件標題。
c cc 郵件地址。
b bcc 郵件地址。


範例:


將信件送給一個或以上的電子郵件地址,由於沒有加入其他的選項,使用者必須輸入標題與信件的內容等。而 user2 沒有主機位置,就會送給郵件伺服器的 user2 使用者。

mail user1@email.address
mail user1@email.address user2

名稱: finger

使用許可權: 所有使用者

使用方式: finger [options] user[@address]

說明:finger 可以讓使用者查詢一些其他使用者的資料。會列出來的資料有:

Login Name
User Name
Home directory
Shell
Login status
mail status
.plan
.project
.forward

其中 .plan ,.project 和 .forward 就是使用者在他的 Home Directory 里的 .plan , .project 和 .forward 等檔案里的資料。如果沒有就沒有。finger 指令並不限定於在同一伺服器上查詢,也可以尋找某一個遠端伺服器上的使用者。只要給一個像是 E-mail address 一般的地址即可。
參數:

-l
多行顯示。

-s
單行顯示。這個選項只顯示登入名稱,真實姓名,終端機名稱,閑置時間,登入時間,辦公室號碼及電話號碼。如果所查詢的使用者是遠端伺服器的使用者,這個選項無效。

範例:下列指令可以查詢本機管理員的資料:
finger root

其結果如下:
Login: root Name: root
Directory: /root Shell: /bin/bash
Never logged in.
No mail.
No Plan.

名稱 : at

使用許可權 : 所有使用者

使用方式 : at -V [-q queue] [-f file] [-mldbv] TIME

說明 : at 可以讓使用者指定在 TIME 這個特定時刻執行某個程序或指令,TIME 的格式是 HH:MM其中的 HH 為小時,MM 為分鐘,甚至你也可以指定 am, pm, midnight, noon, teatime(就是下午 4 點鍾)等口語詞。

如果想要指定超過一天內的時間,則可以用 MMDDYY 或者 MM/DD/YY 的格式,其中 MM 是分鐘,DD 是第幾日,YY 是指年份。另外,使用者甚至也可以使用像是 now + 時間間隔來彈性指定時間,其中的時間間隔可以是 minutes, hours, days, weeks。

另外,使用者也可指定 today 或 tomorrow 來表示今天或明天。當指定了時間並按下 enter 之後,at 會進入交談模式並要求輸入指令或程序,當你輸入完后按下 ctrl+D 即可完成所有動作,至於執行的結果將會寄回你的帳號中。

參數 :

-V : 印出版本編號
-q : 使用指定的佇列(Queue)來儲存,at 的資料是存放在所謂的 queue 中,使用者可以同時使用多個 queue,而 queue 的編號為 a, b, c... z 以及 A, B, ... Z 共 52 個
-m : 即使程序/指令執行完成後沒有輸出結果, 也要寄封信給使用者
-f file : 讀入預先寫好的命令檔。使用者不一定要使用交談模式來輸入,可以先將所有的指定先寫入檔案后再一次讀入
-l : 列出所有的指定 (使用者也可以直接使用 atq 而不用 at -l)
-d : 刪除指定 (使用者也可以直接使用 atrm 而不用 at -d)
-v : 列出所有已經完成但尚未刪除的指定

例子 :
三天後的下午 5 點鍾執行 /bin/ls :
at 5pm + 3 days /bin/ls

三個星期後的下午 5 點鍾執行 /bin/ls :
at 5pm + 2 weeks /bin/ls

明天的 17:20 執行 /bin/date :
at 17:20 tomorrow /bin/date

1999 年的最後一天的最後一分鐘印出 the end of world !
at 23:59 12/31/1999 echo the end of world !

名稱:mv

使用許可權:所有使用者

使用方式:

mv [options] source dest
mv [options] source... directory
說明:將一個檔案移至另一檔案,或將數個檔案移至另一目錄。
參數:-i 若目的地已有同名檔案,則先詢問是否覆蓋舊檔。

範例:

將檔案 aaa 更名為 bbb :
mv aaa bbb

將所有的C語言程序移至 Finished 子目錄中 :
mv -i *.c

名稱:locate
使用許可權:所有使用者
使用方式: locate [-q] [-d ] [--database=]
locate [-r ] [--regexp=]
locate [-qv] [-o ] [--output=]
locate [-e ] [-f ] <[-l ] [-c]
<[-U ] [-u]>
locate [-Vh] [--version] [--help]
說明:

  locate 讓使用者可以很快速的搜尋檔案系統內是否有指定的檔案。其方法是先建立一個包括系統內所有檔案名稱及路徑的資料庫,之後當尋找時就只需查詢這個資料庫,而不必實際深入檔案系統之中了。

  在一般的 distribution 之中,資料庫的建立都被放在 contab 中自動執行。一般使用者在使用時只要用

# locate your_file_name

的型式就可以了。 參數:
-u
-U

建立資料庫,-u 會由根目錄開始,-U 則可以指定開始的位置。

-e


排除在尋找的範圍之外。

-l
如果 是 1.則啟動安全模式。在安全模式下,使用者不會看到許可權無法看到的檔案。這會始速度減慢,因為 locate 必須至實際的檔案系統中取得檔案的許可權資料。

-f
將特定的檔案系統排除在外,例如我們沒有到理要把 proc 檔案系統中的檔案放在資料庫中。

-q
安靜模式,不會顯示任何錯誤訊息。

-n
至多顯示 個輸出。

-r
使用正規運算式 做尋找的條件。

-o
指定資料庫存的名稱。

-d

指定資料庫的路徑

-h
顯示輔助訊息

-v
顯示更多的訊息

-V
顯示程序的版本訊息 範例:

locate chdrv : 尋找所有叫 chdrv 的檔案
locate -n 100 a.out : 尋找所有叫 a.out 的檔案,但最多只顯示 100 個
locate -u : 建立資料庫


  locate命令可以在搜尋資料庫時快速找到檔案,資料庫由updatedb程序來更新,updatedb是由cron daemon周期性建立的,locate命令在搜尋資料庫時比由整個由硬碟資料來搜尋資料來得快,但較差勁的是locate所找到的檔案若是最近才建立或剛更名的,可能會找不到,在內定值中,updatedb每天會跑一次,可以由修改crontab來更新設定值。(etc/crontab)

  locate指定用在搜尋符合條件的檔案,它會去儲存檔案與目錄名稱的資料庫內,尋找合乎範本樣式條件的檔案或目錄錄,可以使用特殊字元(如」*」或」?」等)來指定範本樣式,如指定範本為kcpa*ner, locate會找出所有起始字串為kcpa且結尾為ner的檔案或目錄,如名稱為kcpartner若目錄錄名稱為kcpa_ner則會列出該目錄下包括子目錄在內的所有檔案。

  locate指令和find找尋檔案的功能類似,但locate是透過update程序將硬碟中的所有檔案和目錄資料先建立一個索引資料庫,在執行 loacte時直接找該索引,查詢速度會較快,索引資料庫一般是由操作系統管理,但也可以直接下達update強迫系統立即修改索引資料庫。

  不過第一次在執行update後再使用locate尋找檔案常會失敗,此時就要執行slocate ˉu該命令(也可執行updatedb指令,其效果相同)來更新slocate資料庫,該命令會在/usr/sbin下產生slocate執行檔,再由locate到此資料庫尋找所要找的資料。

名稱:rm

使用許可權:所有使用者

使用方式:rm [options] name...

說明:刪除檔案及目錄。

參數:

-i 刪除前逐一詢問確認。
-f 即使原檔案屬性設為唯讀,亦直接刪除,無需逐一確認。
-r 將目錄及以下之檔案亦逐一刪除。
範例:
刪除所有C語言程序檔;刪除前逐一詢問確認 :
rm -i *.c

將 Finished 子目錄及子目錄中所有檔案刪除 :
rm -r Finished

指令名稱 : ln

使用許可權 : 所有使用者

使用方式 : ln [options] source dist,其中 option 的格式為 :

[-bdfinsvF] [-S backup-suffix] [-V {numbered,existing,simple}]
[--help] [--version] [--]
說明 : Linux/Unix 檔案系統中,有所謂的連結(link),我們可以將其視為檔案的別名,而連結又可分為兩種 : 硬連結(hard link)與軟連結(symbolic link),硬連結的意思是一個檔案可以有多個名稱,而軟連結的方式則是產生一個特殊的檔案,該檔案的內容是指向另一個檔案的位置。硬連結是存在同一個檔案系統中,而軟連結卻可以跨越不同的檔案系統。
ln source dist 是產生一個連結(dist)到 source,至於使用硬連結或軟鏈結則由參數決定。

不論是硬連結或軟鏈結都不會將原本的檔案複製一份,只會佔用非常少量的磁碟空間。

參數 :

-f : 鏈結時先將與 dist 同檔名的檔案刪除-d : 允許系統管理者硬鏈結自己的目錄-i : 在刪除與 dist 同檔名的檔案時先進行詢問-n : 在進行軟連結時,將 dist 視為一般的檔案-s : 進行軟鏈結(symbolic link)-v : 在連結之前顯示其檔名-b : 將在鏈結時會被覆寫或刪除的檔案進行備份-S SUFFIX : 將備份的檔案都加上 SUFFIX 的字尾-V METHOD : 指定備份的方式--help : 顯示輔助說明--version : 顯示版本
範例 :
將檔案 yy 產生一個 symbolic link : zz
ln -s yy zz

將檔案 yy 產生一個 hard link : zz

[火星人 ] 必學的Linux指令已經有790次圍觀

http://coctec.com/docs/linux/show-post-135901.html