linux相關(guān)1

關(guān)機前常用:數(shù)據(jù)同步寫入磁盤命令sync

$ sync

慣用的關(guān)機命令:

$ shutdown

切換運行等級使用init命令涧团。linux有7中運行等級徐矩,比如:

run level 0:關(guān)機
run level 3:純文本模式
run level 5:含有圖形接口模式
run level 6:重新啟動

所以如下指令也可以關(guān)機:

$ init 0 

fsck為文件系統(tǒng)檢查的命令:

$ fsck /dev/sda7

w命令查看登錄用戶正在使用的進(jìn)程信息,可以看到root用戶有三個終端進(jìn)程:

$ w
 17:25:21 up 15 min,  3 users,  load average: 0.00, 0.00, 0.00
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    ****.****.****.****   17:09    0.00s  0.02s  0.00s w
root     pts/1    ****.****.****.****   17:24   11.00s  0.00s  0.00s -bash
root     pts/2    ****.****.****.****   17:24   17.00s  0.01s  0.01s -bash

在Linux系統(tǒng)當(dāng)中蟆盹,默認(rèn)的情況下刃泡,所有的系統(tǒng)上的賬號信息都是記錄在/etc/passwd這個文件內(nèi)的巧娱。至于個人的密碼則是記錄在/etc/shadow這個文件下碉怔。 此外,Linux所有的組名都紀(jì)錄在/etc/group內(nèi)禁添。

ls -al可用于查看文件詳細(xì)信息:
-a:全部(all)撮胧。列舉目錄中的全部文件,包括隱藏文件(.filename)老翘。位于這個列表的起首處的 .和 .. 依次是指父目錄和你的當(dāng)前目錄芹啥。

-l:列舉目錄內(nèi)容的細(xì)節(jié),包括權(quán)限(模式)铺峭、所有者墓怀、組群、大小卫键、創(chuàng)建日期傀履、文件是否是到系統(tǒng)其它地方的鏈接,以及鏈接的指向莉炉。

[root@www ~]# ls -al
total 156
drwxr-x---   4    root   root     4096   Sep  8 14:06 .     #第一個字符是d表示目錄
drwxr-xr-x  23    root   root     4096   Sep  8 14:21 ..
-rw-------   1    root   root     1474   Sep  4 18:27 anaconda-ks.cfg   #第一個字符是-表示文件
-rw-------   1    root   root      199   Sep  8 17:14 .bash_history
-rw-r--r--   1    root   root       24   Jan  6  2007 .bash_logout
-rw-r--r--   1    root   root      191   Jan  6  2007 .bash_profile
-rw-r--r--   1    root   root      176   Jan  6  2007 .bashrc
-rw-r--r--   1    root   root      100   Jan  6  2007 .cshrc
drwx------   3    root   root     4096   Sep  5 10:37 .gconf      <=范例說明處
drwx------   2    root   root     4096   Sep  5 14:09 .gconfd
-rw-r--r--   1    root   root    42304   Sep  4 18:26 install.log <=范例說明處
-rw-r--r--   1    root   root     5661   Sep  4 18:25 install.log.syslog
[    1   ][  2 ][   3  ][  4 ][    5   ][     6     ][       7          ]
[  權(quán)限  ][連結(jié)][擁有者][群組][文件容量][  修改日期 ][      檔名        ]

注意每行第一個字符:

*   當(dāng)為[ d ]則是目錄钓账,例如[上表](http://cn.linux.vbird.org/linux_basic/0210filepermission_2.php#table2.1.1)檔名為『.gconf』的那一行;
*   當(dāng)為[ - ]則是文件絮宁,例如[上表](http://cn.linux.vbird.org/linux_basic/0210filepermission_2.php#table2.1.1)檔名為『install.log』那一行官扣;
*   若是[ l ]則表示為連結(jié)檔(link file);
*   若是[ b ]則表示為裝置文件里面的可供儲存的接口設(shè)備(可隨機存取裝置)羞福;
*   若是[ c ]則表示為裝置文件里面的串行端口設(shè)備,例如鍵盤蚯涮、鼠標(biāo)(一次性讀取裝置)治专。

關(guān)于目錄的權(quán)限(即開頭為d),只有對該目錄具有x權(quán)限的用戶才可以進(jìn)入遭顶。

chgrp:改變文件所屬群組:

[root@www ~]# chgrp [-R] dirname/filename ...
選項與參數(shù):
-R : 進(jìn)行遞歸(recursive)的持續(xù)變更张峰,亦即連同次目錄下的所有文件、目錄
     都更新成為這個群組之意棒旗。常常用在變更某一目錄內(nèi)所有的文件之情況喘批。
范例:
[root@www ~]# chgrp users install.log
[root@www ~]# ls -l
-rw-r--r--  1 root users 68495 Jun 25 08:53 install.log
[root@www ~]# chgrp testing install.log      (在/etc/group中不存在testing群組)
chgrp: invalid group name `testing' <== 發(fā)生錯誤訊息啰~找不到這個群組名~

chown:改變文件擁有著:

[root@www ~]# chown [-R] 賬號名稱 文件或目錄
[root@www ~]# chown [-R] 賬號名稱:組名 文件或目錄
選項與參數(shù):
-R : 進(jìn)行遞歸(recursive)的持續(xù)變更,亦即連同次目錄下的所有文件都變更

范例:將install.log的擁有者改為bin這個賬號:
[root@www ~]# chown bin install.log   #需要保證在/etc/passwd文件中存在bin用戶
[root@www ~]# ls -l
-rw-r--r--  1 bin  users 68495 Jun 25 08:53 install.log

范例:將install.log的擁有者與群組改回為root:
[root@www ~]# chown root:root install.log
[root@www ~]# ls -l
-rw-r--r--  1 root root 68495 Jun 25 08:53 install.log

chmod:改變權(quán)限:

[root@www ~]# ls -al .bashrc
-rw-r--r--  1 root root 395 Jul  4 11:45 .bashrc
[root@www ~]# chmod 777 .bashrc
[root@www ~]# ls -al .bashrc
-rwxrwxrwx  1 root root 395 Jul  4 11:45 .bashrc

chmod命令還可以使用符號進(jìn)行權(quán)限設(shè)定铣揉,其中u, g, o來代表三種身份饶深,r,w逛拱,x代表三種權(quán)限敌厘,+,-朽合,=表示三種權(quán)限變化:

[root@www ~]# chmod  u=rwx,go=rx  .bashrc
# 注意喔俱两!那個 u=rwx,go=rx 是連在一起的饱狂,中間并沒有任何空格!
[root@www ~]# ls -al .bashrc
-rwxr-xr-x  1 root root 395 Jul  4 11:45 .bashrc

為所有人增加寫權(quán)限:

[root@www ~]# ls -al .bashrc
-rwxr-xr-x  1 root root 395 Jul  4 11:45 .bashrc
[root@www ~]# chmod  a+w  .bashrc
[root@www ~]# ls -al .bashrc
-rwxrwxrwx  1 root root 395 Jul  4 11:45 .bashrc

拿掉所有人的可執(zhí)行權(quán)限:

[root@www ~]# chmod  a-x  .bashrc
[root@www ~]# ls -al .bashrc
-rw-rw-rw-  1 root root 395 Jul  4 11:45 .bashrc

注意宪彩,對于文件有w寫權(quán)限休讳,并不代表可以刪除文件。

權(quán)限對于目錄的關(guān)系:

r:可以查詢該目錄下的文件名數(shù)據(jù)尿孔,比如使用ls
w:建立新的文件與目錄俊柔;
   刪除已經(jīng)存在的文件與目錄(不論該文件的權(quán)限為何!)
   將已存在的文件或目錄進(jìn)行更名纳猫;
   搬移該目錄內(nèi)的文件婆咸、目錄位置。
   (可以理解為對文件名進(jìn)行操作)
x:用戶能否進(jìn)入該目錄芜辕,把該目錄變?yōu)楣ぷ髂夸浬薪尽n愃朴赾d命令
   注意,沒有x權(quán)限但是有r權(quán)限表示仍然可以查看該目錄下文件名列表 (比如在可進(jìn)入的父目錄里面用ls -R侵续,但是無法查看到文件的具體內(nèi)容)

如果你在某目錄下不具有x的權(quán)限倔丈, 那么你就無法切換到該目錄下,也就無法執(zhí)行該目錄下的任何指令状蜗,即使你具有該目錄的r的權(quán)限需五。

我們的Linux在使用者登入時,都會將登錄的數(shù)據(jù)記錄在 /var/log/wtmp那個文件內(nèi)轧坎,該文件是一個data file宏邮,他能夠透過last這個指令讀出來! 但是使用cat時缸血,會讀出亂碼蜜氨。

linux的目錄樹參考:http://cn.linux.vbird.org/linux_basic/0210filepermission_3.php
其中有各個目錄大概涵蓋哪些文件。

關(guān)于目錄的標(biāo)記:


.         代表此層目錄
..        代表上一層目錄
-         代表前一個工作目錄
~         代表『目前使用者身份』所在的家目錄
~account  代表 account 這個使用者的家目錄(account是個帳號名稱)

pwd:顯示當(dāng)前目錄:


[root@www ~]# pwd [-P]
選項與參數(shù):
-P  :顯示出確實的路徑捎泻,而非使用連結(jié) (link) 路徑飒炎。

范例:單純顯示出目前的工作目錄:
[root@www ~]# pwd
/root   <== 顯示出目錄啦~

范例:顯示出實際的工作目錄,而非連結(jié)檔本身的目錄名而已
[root@www ~]# cd /var/mail   <==注意笆豁,/var/mail是一個連結(jié)檔
[root@www mail]# pwd
/var/mail         <==列出目前的工作目錄
[root@www mail]# pwd -P
/var/spool/mail   <==怎么回事郎汪?有沒有加 -P 差很多~
[root@www mail]# ls -ld /var/mail
lrwxrwxrwx 1 root root 10 Sep  4 17:54 /var/mail -> spool/mail
# 看到這里應(yīng)該知道為啥了吧?因為 /var/mail 是連結(jié)檔闯狱,連結(jié)到 /var/spool/mail 
# 所以煞赢,加上 pwd -P 的選項后,會不以連結(jié)檔的數(shù)據(jù)顯示扩氢,而是顯示正確的完整路徑案邸!

mkdir創(chuàng)建目錄命令:

[root@www tmp]# mkdir test1/test2/test3/test4
mkdir: cannot create directory `test1/test2/test3/test4': 
No such file or directory       <== 沒辦法直接創(chuàng)建此目錄啊朦肘!
[root@www tmp]# mkdir -p test1/test2/test3/test4
# 加了這個 -p 的選項饭弓,可以自行幫你創(chuàng)建多層目錄!
范例:創(chuàng)建權(quán)限為rwx--x--x的目錄

[root@www tmp]# mkdir -m 711 test2
[root@www tmp]# ls -l
drwxr-xr-x  3 root  root 4096 Jul 18 12:50 test
drwxr-xr-x  3 root  root 4096 Jul 18 12:53 test1
drwx--x--x  2 root  root 4096 Jul 18 12:54 test2
# 仔細(xì)看上面的權(quán)限部分媒抠,如果沒有加上 -m 來強制配置屬性弟断,系統(tǒng)會使用默認(rèn)屬性。

mv:移動文件(剪切):

$ mv b.txt test   #把當(dāng)前目錄下b.txt文件移動到當(dāng)前目錄下的test目錄中

cp:文件復(fù)制:


范例一:用root身份趴生,將家目錄下的 .bashrc 復(fù)制到 /tmp 下阀趴,并更名為 bashrc
[root@www ~]# cp ~/.bashrc /tmp/bashrc
[root@www ~]# cp -i ~/.bashrc /tmp/bashrc
cp: overwrite `/tmp/bashrc'? n  <==n不覆蓋,y為覆蓋
# 重復(fù)作兩次動作苍匆,由於 /tmp 底下已經(jīng)存在 bashrc 了刘急,加上 -i 選項后,
# 則在覆蓋前會詢問使用者是否確定浸踩!可以按下 n 或者 y 來二次確認(rèn)呢叔汁!

范例二:變換目錄到/tmp,并將/var/log/wtmp復(fù)制到/tmp且觀察屬性:
[root@www ~]# cd /tmp
[root@www tmp]# cp /var/log/wtmp . <==想要復(fù)制到目前的目錄检碗,最后的 . 不要忘
[root@www tmp]# ls -l /var/log/wtmp wtmp
-rw-rw-r-- 1 root utmp 96384 Sep 24 11:54 /var/log/wtmp
-rw-r--r-- 1 root root 96384 Sep 24 14:06 wtmp   #通常据块,目的文件的擁有者就是操作者
# 注意上面的特殊字體,在不加任何選項的情況下折剃,文件的某些屬性/權(quán)限會改變另假;
# 這是個很重要的特性!要注意喔怕犁!還有,連文件創(chuàng)建的時間也不一樣了奏甫!
# 那如果你想要將文件的所有特性都一起復(fù)制過來該怎辦苟耻?可以加上 -a 喔!如下所示:

[root@www tmp]# cp -a /var/log/wtmp wtmp_2
[root@www tmp]# ls -l /var/log/wtmp wtmp_2
-rw-rw-r-- 1 root utmp 96384 Sep 24 11:54 /var/log/wtmp
-rw-rw-r-- 1 root utmp 96384 Sep 24 11:54 wtmp_2
# 了了吧扶檐!整個數(shù)據(jù)特性完全一模一樣ㄟ!真是不賴~這就是 -a 的特性胁艰!


范例三:復(fù)制 /etc/ 這個目錄下的所有內(nèi)容到 /tmp 底下
[root@www tmp]# cp /etc/ /tmp
cp: omitting directory `/etc'   <== 如果是目錄則不能直接復(fù)制款筑,要加上 -r 的選項
[root@www tmp]# cp -r /etc/ /tmp
# 還是要再次的強調(diào)喔! -r 是可以復(fù)制目錄腾么,但是奈梳,文件與目錄的權(quán)限可能會被改變
# 所以,也可以利用『 cp -a /etc /tmp 』來下達(dá)命令喔解虱!尤其是在備份的情況下攘须!

范例四:將范例一復(fù)制的 bashrc 創(chuàng)建一個連結(jié)檔 (symbolic link)
[root@www tmp]# ls -l bashrc
-rw-r--r-- 1 root root 176 Sep 24 14:02 bashrc  <==先觀察一下文件情況
[root@www tmp]# cp -s bashrc bashrc_slink
[root@www tmp]# cp -l bashrc bashrc_hlink
[root@www tmp]# ls -l bashrc*
-rw-r--r-- 2 root root 176 Sep 24 14:02 bashrc  <==與原始文件不太一樣了!
-rw-r--r-- 2 root root 176 Sep 24 14:02 bashrc_hlink   #硬鏈接
lrwxrwxrwx 1 root root   6 Sep 24 14:20 bashrc_slink -> bashrc   #符號鏈接

范例五:若 ~/.bashrc 比 /tmp/bashrc 新才復(fù)制過來
[root@www tmp]# cp -u ~/.bashrc /tmp/bashrc
# 這個 -u 的特性殴泰,是在目標(biāo)文件與來源文件有差異時于宙,才會復(fù)制的浮驳。
# 所以,比較常被用於『備份』的工作當(dāng)中喔捞魁! ^_^

范例六:將范例四造成的 bashrc_slink 復(fù)制成為 bashrc_slink_1 與bashrc_slink_2
[root@www tmp]# cp bashrc_slink bashrc_slink_1
[root@www tmp]# cp -d bashrc_slink bashrc_slink_2
[root@www tmp]# ls -l bashrc bashrc_slink*
-rw-r--r-- 2 root root 176 Sep 24 14:02 bashrc
lrwxrwxrwx 1 root root   6 Sep 24 14:20 bashrc_slink -> bashrc
-rw-r--r-- 1 root root 176 Sep 24 14:32 bashrc_slink_1       <==與原始文件相同
lrwxrwxrwx 1 root root   6 Sep 24 14:33 bashrc_slink_2 -> bashrc <==是連結(jié)檔至会!
# 這個例子也是很有趣喔!原本復(fù)制的是連結(jié)檔谱俭,但是卻將連結(jié)檔的實際文件復(fù)制過來了
# 也就是說奉件,如果沒有加上任何選項時,cp復(fù)制的是原始文件昆著,而非連結(jié)檔的屬性县貌!
# 若要復(fù)制連結(jié)檔的屬性,就得要使用 -d 的選項了凑懂!如 bashrc_slink_2 所示煤痕。

范例七:將家目錄的 .bashrc 及 .bash_history 復(fù)制到 /tmp 底下
[root@www tmp]# cp ~/.bashrc ~/.bash_history /tmp
# 可以將多個數(shù)據(jù)一次復(fù)制到同一個目錄去!最后面一定是目錄征候!

如果文件名以-開頭:

#刪除文件-aaa-
rm -aaa-     #會認(rèn)為-aaa-是選項

解決方法有兩種:

rm ./-aaa-
rm -- -aaa-

取得路徑的文件名稱和目錄名稱:


[root@www ~]# basename /etc/sysconfig/network
network         <== 很簡單杭攻!就取得最后的檔名~
[root@www ~]# dirname /etc/sysconfig/network
/etc/sysconfig  <== 取得的變成目錄名了!

mv:移動文件疤坝、目錄兆解,或更名(rename命令也可以更名):

[root@www ~]# mv [-fiu] source destination
[root@www ~]# mv [options] source1 source2 source3 .... directory
選項與參數(shù):
-f  :force 強制的意思,如果目標(biāo)文件已經(jīng)存在跑揉,不會詢問而直接覆蓋锅睛;
-i  :若目標(biāo)文件 (destination) 已經(jīng)存在時,就會詢問是否覆蓋历谍!
-u  :若目標(biāo)文件已經(jīng)存在现拒,且 source 比較新,才會升級 (update)

范例一:復(fù)制一文件望侈,創(chuàng)建一目錄印蔬,將文件移動到目錄中
[root@www ~]# cd /tmp
[root@www tmp]# cp ~/.bashrc bashrc
[root@www tmp]# mkdir mvtest
[root@www tmp]# mv bashrc mvtest
# 將某個文件移動到某個目錄去,就是這樣做脱衙!

范例二:將剛剛的目錄名稱更名為 mvtest2
[root@www tmp]# mv mvtest mvtest2 <== 這樣就更名了侥猬!簡單~
# 其實在 Linux 底下還有個有趣的命令,名稱為 rename 捐韩,
# 該命令專職進(jìn)行多個檔名的同時更名退唠,并非針對單一檔名變更,與mv不同荤胁。請man rename瞧预。

范例三:再創(chuàng)建兩個文件,再全部移動到 /tmp/mvtest2 當(dāng)中
[root@www tmp]# cp ~/.bashrc bashrc1
[root@www tmp]# cp ~/.bashrc bashrc2
[root@www tmp]# mv bashrc1 bashrc2 mvtest2
# 注意到這邊,如果有多個來源文件或目錄,則最后一個目標(biāo)檔一定是『目錄裁良!』
# 意思是說葱跋,將所有的數(shù)據(jù)移動到該目錄的意思掂碱!

查看文件的命令:

cat  由第一行開始顯示文件內(nèi)容
tac  從最后一行開始顯示慎冤,可以看出 tac 是 cat 的倒著寫疼燥!
nl   顯示的時候,順道輸出行號蚁堤!
more 一頁一頁的顯示文件內(nèi)容
less 與 more 類似醉者,但是比 more 更好的是,他可以往前翻頁披诗!
head 只看頭幾行
tail 只看尾巴幾行
od   以二進(jìn)位的方式讀取文件內(nèi)容撬即!

man這個命令就是呼叫less來顯示說明文件的內(nèi)容的。

umask:目前使用者在創(chuàng)建文件或目錄時候的權(quán)限默認(rèn)值:


[root@www ~]# umask
0022             <==與一般權(quán)限有關(guān)的是后面三個數(shù)字呈队!
[root@www ~]# umask -S
u=rwx,g=rx,o=rx

其中剥槐,0022的后三位對應(yīng)的是需要減去的值,減完以后就是755掂咒。
而在默認(rèn)情況下才沧,即umask為0000時:
若使用者創(chuàng)建為『文件』則默認(rèn)『沒有可運行( x )權(quán)限』,亦即只有 rw 這兩個項目绍刮,也就是最大為 666 分温圆,默認(rèn)權(quán)限如下:
-rw-rw-rw-
若使用者創(chuàng)建為『目錄』,則由于 x 與是否可以進(jìn)入此目錄有關(guān)孩革,因此默認(rèn)為所有權(quán)限均開放岁歉,亦即為 777 分,默認(rèn)權(quán)限如下:
drwxrwxrwx

所以在此時如果umask值為0022膝蜈,則:
創(chuàng)建文件時:(-rw-rw-rw-) - (-----w--w-) ==> -rw-r--r--
創(chuàng)建目錄時:(drwxrwxrwx) - (d----w--w-) ==> drwxr-xr-x

[root@www ~]# umask
0022
[root@www ~]# touch test1
[root@www ~]# mkdir test2
[root@www ~]# ll 
-rw-r--r-- 1 root root     0 Sep 27 00:25 test1
drwxr-xr-x 2 root root  4096 Sep 27 00:25 test2

如果我希望創(chuàng)建的文件可以被同組的用戶編輯锅移,則可以直接修改umask:

[root@www ~]# umask 002
[root@www ~]# touch test3
[root@www ~]# mkdir test4
[root@www ~]# ll 
-rw-rw-r-- 1 root root     0 Sep 27 00:36 test3
drwxrwxr-x 2 root root  4096 Sep 27 00:36 test4

chattr:配置文件隱藏屬性:

[root@www ~]# chattr [+-=][ASacdistu] 文件或目錄名稱
+   :添加某一個特殊參數(shù),其他原本存在參數(shù)則不動饱搏。
-   :移除某一個特殊參數(shù)非剃,其他原本存在參數(shù)則不動。
=   :配置一定推沸,且僅有后面接的參數(shù)
a  :當(dāng)配置 a 之后备绽,這個文件將只能添加數(shù)據(jù)券坞,而不能刪除也不能修改數(shù)據(jù),只有root 
     才能配置這個屬性肺素。 
i  :他可以讓一個文件『不能被刪除恨锚、改名、配置連結(jié)也無法寫入或新增數(shù)據(jù)倍靡!』對于系統(tǒng)安全性有相當(dāng)大的助益猴伶!只有 root 能配置此屬性

范例:請嘗試到/tmp底下創(chuàng)建文件,并加入 i 的參數(shù)塌西,嘗試刪除看看他挎。
[root@www ~]# cd /tmp
[root@www tmp]# touch attrtest     <==創(chuàng)建一個空文件
[root@www tmp]# chattr +i attrtest <==給予 i 的屬性
[root@www tmp]# rm attrtest        <==嘗試刪除看看
rm: remove write-protected regular empty file `attrtest'? y
rm: cannot remove `attrtest': Operation not permitted  <==操作不許可
# 看到了嗎?呼呼雨让!連 root 也沒有辦法將這個文件刪除呢雇盖!趕緊解除配置!

范例:請將該文件的 i 屬性取消栖忠!
[root@www tmp]# chattr -i attrtest

lsattr:顯示文件隱藏屬性


[root@www ~]# lsattr [-adR] 文件或目錄
選項與參數(shù):
-a :將隱藏檔的屬性也秀出來崔挖;
-d :如果接的是目錄,僅列出目錄本身的屬性而非目錄內(nèi)的檔名庵寞;
-R :連同子目錄的數(shù)據(jù)也一并列出來狸相! 

[root@www tmp]# chattr +aij attrtest
[root@www tmp]# lsattr attrtest
----ia---j--- attrtest

有些文件的權(quán)限比較特殊:

[root@www ~]# ls -ld /tmp ; ls -l /usr/bin/passwd
drwxrwxrwt 7 root root 4096 Sep 27 18:23 /tmp
-rwsr-xr-x 1 root root 22984 Jan  7  2007 /usr/bin/passwd

比如/usr/bin/passwd文件中出現(xiàn)在所有者位置上的s權(quán)限,表示Set UID權(quán)限:

SUID 權(quán)限僅對二進(jìn)位程序(binary program)有效捐川;
運行者對於該程序需要具有 x 的可運行權(quán)限脓鹃;
本權(quán)限僅在運行該程序的過程中有效 (run-time);
運行者將具有該程序擁有者 (owner) 的權(quán)限古沥。

另外瘸右,SUID 僅可用在binary program 上, 不能夠用在 shell script 上面岩齿!這是因為 shell script 只是將很多的 binary 運行檔叫進(jìn)來運行而已太颤!所以 SUID 的權(quán)限部分,還是得要看 shell script 呼叫進(jìn)來的程序的配置盹沈, 而不是 shell script 本身龄章。當(dāng)然,SUID 對于目錄也是無效的~這點要特別留意乞封。

相似的做裙,還有Set GID權(quán)限:

[root@www ~]# ls -l /usr/bin/locate
-rwx--s--x 1 root slocate 23856 Mar 15  2007 /usr/bin/locate

該權(quán)限對于文件或者目錄均有效。對于文件而言:

SGID 對二進(jìn)位程序有用肃晚;
程序運行者對於該程序來說锚贱,需具備 x 的權(quán)限;
運行者在運行的過程中將會獲得該程序群組的支持关串!

對于目錄而言:

使用者若對於此目錄具有 r 與 x 的權(quán)限時拧廊,該使用者能夠進(jìn)入此目錄杂穷;
使用者在此目錄下的有效群組(effective group)將會變成該目錄的群組;
用途:若使用者在此目錄下具有 w 的權(quán)限(可以新建文件)卦绣,則使用者所創(chuàng)建的新文件,該新文件的群組與此目錄的群組相同飞蚓。

Sticky Bit權(quán)限滤港,即之前\tmp文件最后的t權(quán)限,只能運用于目錄:

當(dāng)使用者對於此目錄具有 w, x 權(quán)限趴拧,亦即具有寫入的權(quán)限時溅漾;
當(dāng)使用者在該目錄下創(chuàng)建文件或目錄時,僅有自己與 root 才有權(quán)力刪除該文件

SUID/SGID/SBIT 權(quán)限配置:
在3位權(quán)限描述符之前添加:

4 為 SUID
2 為 SGID
1 為 SBIT

比如:


[root@www ~]# cd /tmp
[root@www tmp]# touch test                  <==創(chuàng)建一個測試用空檔
[root@www tmp]# chmod 4755 test; ls -l test <==加入具有 SUID 的權(quán)限
-rwsr-xr-x 1 root root 0 Sep 29 03:06 test
[root@www tmp]# chmod 6755 test; ls -l test <==加入具有 SUID/SGID 的權(quán)限
-rwsr-sr-x 1 root root 0 Sep 29 03:06 test
[root@www tmp]# chmod 1755 test; ls -l test <==加入 SBIT 的功能著榴!
-rwxr-xr-t 1 root root 0 Sep 29 03:06 test
[root@www tmp]# chmod 7666 test; ls -l test <==具有空的 SUID/SGID 權(quán)限
-rwSrwSrwT 1 root root 0 Sep 29 03:06 test

注意最后一個S和T都是大寫添履,原因在于權(quán)限位7666,三類用戶均不可執(zhí)行脑又,那么S和T代表的都為空暮胧。
也可以通過符號設(shè)定權(quán)限:


# 配置權(quán)限成為 -rws--x--x 的模樣:
[root@www tmp]# chmod u=rwxs,go=x test; ls -l test
-rws--x--x 1 root root 0 Aug 18 23:47 test

# 承上,加上 SGID 與 SBIT 在上述的文件權(quán)限中问麸!
[root@www tmp]# chmod g+s,o+t test; ls -l test
-rws--s--t 1 root root 0 Aug 18 23:47 test

file:判斷文件格式:

[root@www ~]# file ~/.bashrc
/root/.bashrc: ASCII text  <==告訴我們是 ASCII 的純文字檔巴浴!
[root@www ~]# file /usr/bin/passwd
/usr/bin/passwd: setuid ELF 32-bit LSB executable, Intel 80386, version 1 
(SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), for 
GNU/Linux 2.6.9, stripped
# 運行檔的數(shù)據(jù)可就多的不得了严卖!包括這個文件的 suid 權(quán)限席舍、兼容於 Intel 386
# 等級的硬件平臺、使用的是 Linux 核心 2.6.9 的動態(tài)函式庫連結(jié)等等哮笆。
[root@www ~]# file /var/lib/mlocate/mlocate.db
/var/lib/mlocate/mlocate.db: data  <== 這是 data 文件来颤!

which搜索命令:

[root@www ~]# which [-a] command
選項或參數(shù):
-a :將所有由 PATH 目錄中可以找到的命令均列出,而不止第一個被找到的命令名稱

范例一:分別用root與一般帳號搜尋 ifconfig 這個命令的完整檔名
[root@www ~]# which ifconfig
/sbin/ifconfig            <==用 root 可以找到正確的運行檔名喔稠肘!

注意福铅,不同的用戶因為PATH不同,可能搜索到的命令也不一樣启具。

whereis:查找數(shù)據(jù)庫中的文件本讥,比find快:

[root@www ~]# whereis ifconfig 
ifconfig: /sbin/ifconfig /usr/share/man/man8/ifconfig.8.gz

locate:依據(jù) /var/lib/mlocate內(nèi)的數(shù)據(jù)庫記載,找出使用者輸入的關(guān)鍵字檔名:

[root@www ~]# locate [-ir] keyword
選項與參數(shù):
-i  :忽略大小寫的差異鲁冯;
-r  :后面可接正規(guī)表示法的顯示方式

范例一:找出系統(tǒng)中所有與 passwd 相關(guān)的檔名
[root@www ~]# locate passwd
/etc/passwd
/etc/passwd-
/etc/news/passwd.nntp
/etc/pam.d/passwd
....(底下省略)....

所以使用前需要更新數(shù)據(jù)庫(該數(shù)據(jù)庫一段時間也會自動更新):
updatedb:根據(jù) /etc/updatedb.conf 的配置去搜尋系統(tǒng)硬盤內(nèi)的檔名拷沸,并升級/var/lib/mlocate 內(nèi)的數(shù)據(jù)庫文件。

find:查找文件命令:

-uid n :n 為數(shù)字薯演,這個數(shù)字是使用者的帳號 ID撞芍,亦即 UID ,這個 UID 是記錄在/etc/passwd 里面與帳號名稱對應(yīng)的數(shù)字跨扮。
-gid n :n 為數(shù)字序无,這個數(shù)字是群組名稱的 ID验毡,亦即 GID,這個 GID 記錄在/etc/group帝嗡。
-user name :name 為使用者帳號名稱晶通。
-group name:name 為群組名稱。
-name filename:搜尋文件名稱為 filename 的文件哟玷;
   -type TYPE    :搜尋文件的類型為 TYPE 的狮辽,類型主要有:一般正規(guī)文件 (f),
                   裝置文件 (b, c), 目錄 (d), 連結(jié)檔 (l), socket (s), 
                   及 FIFO (p) 等屬性。
   -perm mode  :搜尋文件權(quán)限『剛好等於』 mode 的文件巢寡,這個 mode 為類似 chmod
                 的屬性值喉脖,舉例來說, -rwsr-xr-x 的屬性為 4755 抑月!
   -perm -mode :搜尋文件權(quán)限『必須要全部囊括 mode 的權(quán)限』的文件树叽,舉例來說,
                 我們要搜尋 -rwxr--r-- 谦絮,亦即 0744 的文件题诵,使用 -perm -0744,
                 當(dāng)一個文件的權(quán)限為 -rwsr-xr-x 挨稿,亦即 4755 時仇轻,也會被列出來,
                 因為 -rwsr-xr-x 的屬性已經(jīng)囊括了 -rwxr--r-- 的屬性了奶甘。
   -perm +mode :搜尋文件權(quán)限『包含任一 mode 的權(quán)限』的文件篷店,舉例來說,我們搜尋
                 -rwxr-xr-x 臭家,亦即 -perm +755 時疲陕,但一個文件屬性為 -rw-------
                 也會被列出來,因為他有 -rw.... 的屬性存在钉赁!

比如:

范例五:找出檔名為 passwd 這個文件
[root@www ~]# find / -name passwd
# 利用這個 -name 可以搜尋檔名疤阊辍!

#搭配通配符
[root@www ~]# find /etc -name '*httpd*'

關(guān)于權(quán)限的一個例子:

#以root用戶創(chuàng)建/tmp/test你踩,對于該目錄只賦予others用戶r權(quán)限:
#以其他用戶登錄后诅岩,無法進(jìn)入test目錄,但是可以:
test@myblog:/tmp$ ls test
aaa.txt
test@myblog:/tmp$ cat test/aaa.txt 
cat: test/aaa.txt: Permission denied
#以root用戶對于該目錄只賦予others只賦予x權(quán)限(刪除r權(quán)限):
test@myblog:/tmp/test$ ls        #有x權(quán)限所以可以進(jìn)入該目錄
ls: cannot open directory '.': Permission denied      #沒有r權(quán)限所以無法ls
test@myblog:/tmp/test$ cat aaa.txt       #若是指定該文件名带膜,則可以讀取文件內(nèi)容(前提是aaa.txt有r權(quán)限)
aaa

linux的inode/block文件存取系統(tǒng):


inode/block文件存取系統(tǒng)

對比一下FAT文件存取系統(tǒng)(windows 98 以前的微軟操作系統(tǒng)的文件存取系統(tǒng)):


FAT文件存取系統(tǒng)

linux的ext2文件系統(tǒng):


ext2文件系統(tǒng)

df:獲取目前掛載的裝置:

范例:找出我的根目錄磁盤文件名吩谦,并觀察文件系統(tǒng)的相關(guān)信息
[root@www ~]# df   <==這個命令可以叫出目前掛載的裝置
Filesystem    1K-blocks      Used Available Use% Mounted on
/dev/hdc2       9920624   3822848   5585708  41% /        <==就是這個光!
/dev/hdc3       4956316    141376   4559108   4% /home
/dev/hdc1        101086     11126     84741  12% /boot
tmpfs            371332         0    371332   0% /dev/shm

dumpe2fs:顯示ext2膝藕、ext3式廷、ext4文件系統(tǒng)的超級快和塊組信息:

[root@www ~]# dumpe2fs /dev/hdc2
dumpe2fs 1.39 (29-May-2006)
Filesystem volume name:   /1             <==這個是文件系統(tǒng)的名稱(Label)
Filesystem features:      has_journal ext_attr resize_inode dir_index 
  filetype needs_recovery sparse_super large_file
Default mount options:    user_xattr acl <==默認(rèn)掛載的參數(shù)
Filesystem state:         clean          <==這個文件系統(tǒng)是沒問題的(clean)
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              2560864        <==inode的總數(shù)
Block count:              2560359        <==block的總數(shù)
Free blocks:              1524760        <==還有多少個 block 可用
Free inodes:              2411225        <==還有多少個 inode 可用
First block:              0
Block size:               4096           <==每個 block 的大小啦!
Filesystem created:       Fri Sep  5 01:49:20 2008
Last mount time:          Mon Sep 22 12:09:30 2008
Last write time:          Mon Sep 22 12:09:30 2008
Last checked:             Fri Sep  5 01:49:20 2008
First inode:              11
Inode size:               128            <==每個 inode 的大小
Journal inode:            8              <==底下這三個與下一小節(jié)有關(guān)
Journal backup:           inode blocks
Journal size:             128M

Group 0: (Blocks 0-32767) <==第一個 data group 內(nèi)容, 包含 block 的啟始/結(jié)束號碼
  Primary superblock at 0, Group descriptors at 1-1  <==超級區(qū)塊在 0 號 block
  Reserved GDT blocks at 2-626
  Block bitmap at 627 (+627), Inode bitmap at 628 (+628)
  Inode table at 629-1641 (+629)                     <==inode table 所在的 block
  0 free blocks, 32405 free inodes, 2 directories    <==所有 block 都用完了芭挽!
  Free blocks:
  Free inodes: 12-32416                              <==剩余未使用的 inode 號碼
Group 1: (Blocks 32768-65535)
....(底下省略)....

當(dāng)我們在 Linux 下的 ext2 文件系統(tǒng)創(chuàng)建一個目錄時滑废, ext2 會分配一個 inode 與至少一塊 block 給該目錄蝗肪。其中,inode 記錄該目錄的相關(guān)權(quán)限與屬性蠕趁,并可記錄分配到的那塊 block 號碼薛闪; 而 block 則是記錄在這個目錄下的文件名與該文件名占用的 inode 號碼數(shù)據(jù)。所以說新增/刪除/更名文件名與目錄的 w 權(quán)限有關(guān)俺陋,因為文件名存儲在目錄的block而非inode中逛绵。

df:列出文件系統(tǒng)的整體磁盤使用量;(df的例子之前有了)
du:評估文件系統(tǒng)的磁盤使用量(常用在推估目錄所占容量):

范例一:列出目前目錄下的所有文件容量
[root@www ~]# du
8       ./test4     <==每個目錄都會列出來
8       ./test2
....中間省略....
12      ./.gconfd   <==包括隱藏文件的目錄
220     .           <==這個目錄(.)所占用的總量
# 直接輸入 du 沒有加任何選項時倔韭,則 du 會分析『目前所在目錄』
# 的文件與目錄所占用的硬盤空間。但是瓢对,實際顯示時寿酌,僅會顯示目錄容量(不含文件),
# 因此 . 目錄有很多文件沒有被列出來硕蛹,所以全部的目錄相加不會等于 . 的容量喔醇疼!
# 此外,輸出的數(shù)值數(shù)據(jù)為 1K 大小的容量單位法焰。

范例二:同范例一秧荆,但是將文件的容量也列出來
[root@www ~]# du -a
12      ./install.log.syslog   <==有文件的列表了
8       ./.bash_logout
8       ./test4
8       ./test2
....中間省略....
12      ./.gconfd
220     .

實體鏈接:
實體鏈接指的是兩個文件名指向同一個inode(在下面的例子中是1912701),那其實就是指向同一個block:

[root@www ~]# ln /etc/crontab .   <==創(chuàng)建實體鏈接的命令
[root@www ~]# ll -i /etc/crontab /root/crontab
1912701 -rw-r--r-- 2 root root 255 Jan  6  2007 /etc/crontab
1912701 -rw-r--r-- 2 root root 255 Jan  6  2007 /root/crontab

符號鏈接:
可以看到兩個文件的inode是不一樣的埃仪,Symbolic link 就是在創(chuàng)建一個獨立的文件乙濒,而這個文件會讓數(shù)據(jù)的讀取指向他 link 的那個文件的檔名。所以可以看到/root/crontab2的文件大小為12bytes卵蛉,正好其指向的/etc/crontab文件名位12字符:


[root@www ~]# ln -s /etc/crontab crontab2
[root@www ~]# ll -i /etc/crontab /root/crontab2
1912701 -rw-r--r-- 2 root root 255 Jan  6  2007 /etc/crontab
 654687 lrwxrwxrwx 1 root root  12 Oct 22 13:58 /root/crontab2 -> /etc/crontab

ln:制作鏈接:

[root@www ~]# ln [-sf] 來源文件 目標(biāo)文件
選項與參數(shù):
-s  :如果不加任何參數(shù)就進(jìn)行連結(jié)颁股,那就是hard link,至于 -s 就是symbolic link
-f  :如果 目標(biāo)文件 存在時傻丝,就主動的將目標(biāo)文件直接移除后再創(chuàng)建甘有!

觀察創(chuàng)建目錄后鏈接數(shù)的變化:

[root@www ~]# ls -ld /tmp
drwxrwxrwt 5 root root 4096 Oct 22 14:22 /tmp
[root@www ~]# mkdir /tmp/testing1
[root@www ~]# ls -ld /tmp
drwxrwxrwt 6 root root 4096 Oct 22 14:37 /tmp       #多了一個 /tmp/testing/.. 
[root@www ~]# ls -ld /tmp/testing1
drwxr-xr-x 2 root root 4096 Oct 22 14:37 /tmp/testing1  #多了/tmp/testing1和/tmp/testing1/.

mount:將文件系統(tǒng)掛載到某個目錄上:

范例一:用默認(rèn)的方式,將剛剛創(chuàng)建的 /dev/hdc6 掛載到 /mnt/hdc6 上面葡缰!
[root@www ~]# mkdir /mnt/hdc6
[root@www ~]# mount /dev/hdc6 /mnt/hdc6
[root@www ~]# df
Filesystem           1K-blocks      Used Available Use% Mounted on
.....中間省略.....
/dev/hdc6              1976312     42072   1833836   3% /mnt/hdc6
# 看起來亏掀,真的有掛載!且文件大小約為 2GB 左右啦泛释!
范例二:觀察目前『已掛載』的文件系統(tǒng)滤愕,包含各文件系統(tǒng)的Label名稱
[root@www ~]# mount -l
/dev/hdc2 on / type ext3 (rw) [/1]   #表示/dev/hdc2文件系統(tǒng)掛載到根目錄/下,文件系統(tǒng)類型為ext3
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/hdc3 on /home type ext3 (rw) [/home]
/dev/hdc1 on /boot type ext3 (rw) [/boot]
tmpfs 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)
/dev/hdc6 on /mnt/hdc6 type ext3 (rw) [vbird_logical]
# 除了實際的文件系統(tǒng)外胁澳,很多特殊的文件系統(tǒng)(proc/sysfs...)也會被顯示出來该互!
# 值得注意的是,加上 -l 選項可以列出如上特殊字體的標(biāo)頭(label)喔

mount:也可以用來掛載目錄:

范例七:將 /home 這個目錄暫時掛載到 /mnt/home 底下(需要--bind):
[root@www ~]# mkdir /mnt/home
[root@www ~]# mount --bind /home /mnt/home
[root@www ~]# ls -lid /home/ /mnt/home
2 drwxr-xr-x 6 root root 4096 Sep 29 02:21 /home/
2 drwxr-xr-x 6 root root 4096 Sep 29 02:21 /mnt/home

[root@www ~]# mount -l
/home on /mnt/home type none (rw,bind)      #單純的輸入 mount 會顯示目前掛載的信息韭畸。加上 -l 可增列 Label 名稱

unmount:將裝置文件卸除

范例八:將本章之前自行掛載的文件系統(tǒng)全部卸除:
[root@www ~]# mount
.....前面省略.....
/dev/hdc6 on /mnt/hdc6 type ext3 (rw)
/dev/hdd on /media/cdrom type iso9660 (rw)
/dev/sda1 on /mnt/flash type vfat (rw,iocharset=cp950)
/home on /mnt/home type none (rw,bind)
# 先找一下已經(jīng)掛載的文件系統(tǒng)宇智,如上所示蔓搞,特殊字體即為剛剛掛載的裝置啰!

[root@www ~]# umount /dev/hdc6      <==用裝置文件名來卸除
[root@www ~]# umount /media/cdrom   <==用掛載點來卸除
[root@www ~]# umount /mnt/flash     <==因為掛載點比較好記憶随橘!
[root@www ~]# umount /dev/fd0       <==用裝置文件名較好記喂分!
[root@www ~]# umount /mnt/home      <==一定要用掛載點!因為掛載的是目錄

啟動時自動掛載机蔗,是由/etc/fstab這個配置文件控制:

[root@www ~]# cat /etc/fstab
# Device        Mount point   filesystem parameters    dump fsck
LABEL=/1          /           ext3       defaults        1 1
LABEL=/home       /home       ext3       defaults        1 2
LABEL=/boot       /boot       ext3       defaults        1 2
tmpfs             /dev/shm    tmpfs      defaults        0 0
devpts            /dev/pts    devpts     gid=5,mode=620  0 0
sysfs             /sys        sysfs      defaults        0 0
proc              /proc       proc       defaults        0 0
LABEL=SWAP-hdc5   swap        swap       defaults        0 0
# 上述特殊字體的部分與實際磁盤有關(guān)蒲祈!其他則是虛擬文件系統(tǒng)或
# 與內(nèi)存置換空間 (swap) 有關(guān)。

如何掛載本機下載好的映像文件(使用mount -o loop):

[root@www ~]# ll -h /root/centos5.2_x86_64.iso
-rw-r--r-- 1 root root 4.3G Oct 27 17:34 /root/centos5.2_x86_64.iso
# 看到上面的結(jié)果吧萝嘁!這個文件就是映象檔梆掸,文件非常的大吧!

[root@www ~]# mkdir /mnt/centos_dvd
[root@www ~]# mount -o loop /root/centos5.2_x86_64.iso /mnt/centos_dvd
[root@www ~]# df
Filesystem           1K-blocks      Used Available Use% Mounted on
/root/centos5.2_x86_64.iso
                       4493152   4493152         0 100% /mnt/centos_dvd
# 就是這個項目牙言! .iso 映象文件內(nèi)的所有數(shù)據(jù)可以在 /mnt/centos_dvd 看到酸钦!

[root@www ~]# ll /mnt/centos_dvd
total 584
drwxr-xr-x 2 root root 522240 Jun 24 00:57 CentOS <==瞧!就是DVD的內(nèi)容霸弁鳌卑硫!
-rw-r--r-- 8 root root    212 Nov 21  2007 EULA
-rw-r--r-- 8 root root  18009 Nov 21  2007 GPL
drwxr-xr-x 4 root root   2048 Jun 24 00:57 images
.....底下省略.....

[root@www ~]# umount /mnt/centos_dvd/
# 測試完成!記得將數(shù)據(jù)給他卸除蚕断!

例子:創(chuàng)建大文件并進(jìn)行本機掛載:
首先創(chuàng)建大文件/home/loopdev:

[root@www ~]# dd if=/dev/zero of=/home/loopdev bs=1M count=512
512+0 records in   <==讀入 512 筆數(shù)據(jù)
512+0 records out  <==輸出 512 筆數(shù)據(jù)
536870912 bytes (537 MB) copied, 12.3484 seconds, 43.5 MB/s
# 這個命令的簡單意義如下:
# if 是 input file 欢伏,輸入文件。那個 /dev/zero 是會一直輸出 0 的裝置亿乳!
# of 是 output file 硝拧,將一堆零寫入到后面接的文件中。
# bs 是每個 block 大小葛假,就像文件系統(tǒng)那樣的 block 意義河爹;
# count 則是總共幾個 bs 的意思。

[root@www ~]# ll -h /home/loopdev
-rw-r--r-- 1 root root 512M Oct 28 02:29 /home/loopdev

接著對其格式化:


[root@www ~]# mkfs -t ext3 /home/loopdev
mke2fs 1.39 (29-May-2006)
/home/loopdev is not a block special device.
Proceed anyway? (y,n) y  <==由于不是正常的裝置桐款,所以這里會提示你咸这!
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
131072 inodes, 524288 blocks
26214 blocks (5.00%) reserved for the super user
.....以下省略.....

最后再掛載:


[root@www ~]# mount -o loop /home/loopdev /media/cdrom/
[root@www ~]# df
Filesystem           1K-blocks      Used Available Use% Mounted on
/home/loopdev           507748     18768    462766   4% /media/cdrom

swap:存儲空間的一片區(qū)域。當(dāng)內(nèi)存不夠時魔眨,會將內(nèi)存中暫時不用的數(shù)據(jù)移到swap中媳维。

集中壓縮文件的擴展名:

*.Z         compress 程序壓縮的文件;
*.gz        gzip 程序壓縮的文件遏暴;
*.bz2       bzip2 程序壓縮的文件侄刽;
*.tar       tar 程序打包的數(shù)據(jù),并沒有壓縮過朋凉;
*.tar.gz    tar 程序打包的文件州丹,其中并且經(jīng)過 gzip 的壓縮
*.tar.bz2   tar 程序打包的文件,其中并且經(jīng)過 bzip2 的壓縮

gzip:壓縮與解壓縮
zcat:讀取純文字檔被壓縮后的壓縮檔

[root@www ~]# gzip [-cdtv#] 檔名
[root@www ~]# zcat 檔名.gz
選項與參數(shù):
-c  :將壓縮的數(shù)據(jù)輸出到螢?zāi)簧希赏高^數(shù)據(jù)流重導(dǎo)向來處理墓毒;
-d  :解壓縮的參數(shù)吓揪;
-t  :可以用來檢驗一個壓縮檔的一致性~看看文件有無錯誤廓啊;
-v  :可以顯示出原文件/壓縮文件的壓縮比等資訊盔沫;
-#  :壓縮等級憔涉,-1 最快仔拟,但是壓縮比最差、-9 最慢迄委,但是壓縮比最好谋梭!默認(rèn)是 -6

范例一:將 /etc/man.config 復(fù)制到 /tmp 互广,并且以 gzip 壓縮
[root@www ~]# cd /tmp 
[root@www tmp]# cp /etc/man.config .
[root@www tmp]# gzip -v man.config
man.config:      56.1% -- replaced with man.config.gz
[root@www tmp]# ll /etc/man.config /tmp/man*
-rw-r--r-- 1 root root 4617 Jan  6  2007 /etc/man.config
-rw-r--r-- 1 root root 2057 Nov 10 17:14 /tmp/man.config.gz  <==gzip壓縮比較佳
范例二:由於 man.config 是文字檔踪栋,請將范例一的壓縮檔的內(nèi)容讀出來焙格!
[root@www tmp]# zcat man.config.gz
# 由於 man.config 這個原本的文件是是文字檔,因此我們可以嘗試使用 zcat  去讀纫亩肌间螟!
# 此時螢?zāi)簧蠒@示 man.config.gz 解壓縮之后的文件內(nèi)容!

范例三:將范例一的文件解壓縮
[root@www tmp]# gzip -d man.config.gz
# 不要使用 gunzip 這個命令损肛,不好背!使用 gzip -d 來進(jìn)行解壓縮荣瑟!
# 與 gzip 相反治拿, gzip -d 會將原本的 .gz 刪除,產(chǎn)生原本的 man.config 文件笆焰。

bzip2:壓縮比比gzip好劫谅,格式差不多:

[root@www ~]# bzip2 [-cdkzv#] 檔名
[root@www ~]# bzcat 檔名.bz2
選項與參數(shù):
-c  :將壓縮的過程產(chǎn)生的數(shù)據(jù)輸出到螢?zāi)簧希?-d  :解壓縮的參數(shù)
-k  :保留原始文件,而不會刪除原始的文件喔嚷掠!
-z  :壓縮的參數(shù)
-v  :可以顯示出原文件/壓縮文件的壓縮比等資訊捏检;
-#  :與 gzip 同樣的,都是在計算壓縮比的參數(shù)不皆, -9 最佳贯城, -1 最快!

范例一:將剛剛的 /tmp/man.config 以 bzip2 壓縮
[root@www tmp]# bzip2 -z man.config 
# 此時 man.config 會變成 man.config.bz2 霹娄!

范例二:將范例一的文件內(nèi)容讀出來能犯!
[root@www tmp]# bzcat man.config.bz2
# 此時螢?zāi)簧蠒@示 man.config.bz2 解壓縮之后的文件內(nèi)容!犬耻!

范例三:將范例一的文件解壓縮
[root@www tmp]# bzip2 -d man.config.bz2

tar:文件打包命令(配合-j-z參數(shù)可以進(jìn)行壓縮/解壓縮):

[root@www ~]# tar [-j|-z] [cv] [-f 創(chuàng)建的檔名] filename... <==打包與壓縮
[root@www ~]# tar [-j|-z] [tv] [-f 創(chuàng)建的檔名]             <==察看檔名
[root@www ~]# tar [-j|-z] [xv] [-f 創(chuàng)建的檔名] [-C 目錄]   <==解壓縮
選項與參數(shù):
-c  :創(chuàng)建打包文件踩晶,可搭配 -v 來察看過程中被打包的檔名(filename)
-t  :察看打包文件的內(nèi)容含有哪些檔名,重點在察看『檔名』就是了枕磁;
-x  :解打包或解壓縮的功能渡蜻,可以搭配 -C (大寫) 在特定目錄解開
      特別留意的是, -c, -t, -x 不可同時出現(xiàn)在一串命令列中。
-j  :透過 bzip2 的支持進(jìn)行壓縮/解壓縮:此時檔名最好為 *.tar.bz2
-z  :透過 gzip  的支持進(jìn)行壓縮/解壓縮:此時檔名最好為 *.tar.gz
-v  :在壓縮/解壓縮的過程中茸苇,將正在處理的檔名顯示出來排苍!
-f filename:-f 后面要立刻接要被處理的檔名!建議 -f 單獨寫一個選項羅税弃!
-C 目錄    :這個選項用在解壓縮纪岁,若要在特定目錄解壓縮,可以使用這個選項则果。

其他后續(xù)練習(xí)會使用到的選項介紹:
-p  :保留備份數(shù)據(jù)的原本權(quán)限與屬性幔翰,常用於備份(-c)重要的配置檔
-P  :保留絕對路徑,亦即允許備份數(shù)據(jù)中含有根目錄存在之意西壮;
--exclude=FILE:在壓縮的過程中遗增,不要將 FILE 打包! 

比如:打包并壓縮/etc文件:

[root@www ~]# tar -zpcv -f /root/etc.tar.gz /etc
tar: Removing leading `/' from member names  <==注意這個警告信息款青,去除根目錄/做修,防止解壓縮后為絕對路徑,覆蓋了/etc/下的文件
/etc/
....中間省略....
/etc/esd.conf
/etc/crontab
# 由於加上 -v 這個選項抡草,因此正在作用中的檔名就會顯示在螢?zāi)簧稀?# 如果你可以翻到第一頁饰及,會發(fā)現(xiàn)出現(xiàn)上面的錯誤信息!底下會講解康震。
# 至於 -p 的選項燎含,重點在於『保留原本文件的權(quán)限與屬性』之意。

[root@www ~]# tar -jpcv -f /root/etc.tar.bz2 /etc
# 顯示的信息會跟上面一模一樣羅腿短!

常用命令如下:

壓 縮:tar -jcv -f filename.tar.bz2 要被壓縮的文件或目錄名稱
查 詢:tar -jtv -f filename.tar.bz2
解壓縮:tar -jxv -f filename.tar.bz2 -C 欲解壓縮的目錄

dd:也可以用來備份文件:

[root@www ~]# dd if="input_file" of="output_file" bs="block_size" \
> count="number"
選項與參數(shù):
if   :就是 input file 羅~也可以是裝置喔屏箍!
of   :就是 output file 喔~也可以是裝置;
bs   :規(guī)劃的一個 block 的大小橘忱,若未指定則默認(rèn)是 512 bytes(一個 sector 的大小)
count:多少個 bs 的意思赴魁。

范例一:將 /etc/passwd 備份到 /tmp/passwd.back 當(dāng)中
[root@www ~]# dd if=/etc/passwd of=/tmp/passwd.back
3+1 records in
3+1 records out
1945 bytes (1.9 kB) copied, 0.000332893 seconds, 5.8 MB/s
[root@www ~]# ll /etc/passwd /tmp/passwd.back
-rw-r--r-- 1 root root 1945 Sep 29 02:21 /etc/passwd
-rw-r--r-- 1 root root 1945 Dec 17 18:09 /tmp/passwd.back
# 仔細(xì)的看一下,我的 /etc/passwd 文件大小為 1945 bytes钝诚,因為我沒有配置 bs 颖御,
# 所以默認(rèn)是 512 bytes 為一個單位,因此凝颇,上面那個 3+1 表示有 3 個完整的 
# 512 bytes郎嫁,以及未滿 512 bytes 的另一個 block 的意思啦!
# 事實上祈噪,感覺好像是 cp 這個命令啦~

cpio:也可以用于備份泽铛,一般配合find使用:

[root@www ~]# cpio -ovcB  > [file|device] <==備份
[root@www ~]# cpio -ivcdu < [file|device] <==還原
[root@www ~]# cpio -ivct  < [file|device] <==察看
備份會使用到的選項與參數(shù):
  -o :將數(shù)據(jù) copy 輸出到文件或裝置上 
  -B :讓默認(rèn)的 Blocks 可以添加至 5120 bytes ,默認(rèn)是 512 bytes 辑鲤! 
     這樣的好處是可以讓大文件的儲存速度加快(請參考 i-nodes 的觀念) 
還原會使用到的選項與參數(shù):
  -i :將數(shù)據(jù)自文件或裝置 copy 出來系統(tǒng)當(dāng)中 
  -d :自動創(chuàng)建目錄盔腔!使用 cpio 所備份的數(shù)據(jù)內(nèi)容不見得會在同一層目錄中,因此我們
       必須要讓 cpio 在還原時可以創(chuàng)建新目錄,此時就得要 -d 選項的幫助弛随!
  -u :自動的將較新的文件覆蓋較舊的文件瓢喉!
  -t :需配合 -i 選項,可用在"察看"以 cpio 創(chuàng)建的文件或裝置的內(nèi)容 
一些可共享的選項與參數(shù):
  -v :讓儲存的過程中文件名稱可以在螢?zāi)簧巷@示 
  -c :一種較新的 portable format 方式儲存 

比如:

范例:找出 /boot 底下的所有文件舀透,然后將他備份到 /tmp/boot.cpio 去栓票!
[root@www ~]# find /boot -print
/boot
/boot/message
/boot/initrd-2.6.18-128.el5.img
....以下省略....
# 透過這個 find 我們可以找到 /boot 底下應(yīng)該要存在的檔名!包括文件與目錄

[root@www ~]# find /boot | cpio -ocvB > /tmp/boot.cpio
[root@www ~]# ll -h /tmp/boot.cpio
-rw-r--r-- 1 root root 16M Dec 17 23:30 /tmp/boot.cpio

我們使用 find /boot 可以找出文件名愕够,然后透過那條管線 |走贪, 就能將文件名傳給 cpio 來進(jìn)行處理。接下來讓我們來進(jìn)行解壓縮看看:

范例:將剛剛的文件給他在 /root/ 目錄下解開
[root@www ~]# cpio -idvc < /tmp/boot.cpio
[root@www ~]# ll /root/boot
# 你可以自行比較一下 /root/boot 與 /boot 的內(nèi)容是否一模一樣惑芭!

參考:《鳥哥的Linux私房菜》

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末坠狡,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子遂跟,更是在濱河造成了極大的恐慌逃沿,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件幻锁,死亡現(xiàn)場離奇詭異凯亮,居然都是意外死亡,警方通過查閱死者的電腦和手機哄尔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進(jìn)店門假消,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人究飞,你說我怎么就攤上這事√美穑” “怎么了亿傅?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長瘟栖。 經(jīng)常有香客問我葵擎,道長,這世上最難降的妖魔是什么半哟? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任酬滤,我火速辦了婚禮,結(jié)果婚禮上寓涨,老公的妹妹穿的比我還像新娘盯串。我一直安慰自己,他們只是感情好戒良,可當(dāng)我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布体捏。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪几缭。 梳的紋絲不亂的頭發(fā)上河泳,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天,我揣著相機與錄音年栓,去河邊找鬼拆挥。 笑死,一個胖子當(dāng)著我的面吹牛某抓,可吹牛的內(nèi)容都是我干的纸兔。 我是一名探鬼主播,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼搪缨,長吁一口氣:“原來是場噩夢啊……” “哼食拜!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起副编,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤负甸,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后痹届,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體呻待,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年队腐,在試婚紗的時候發(fā)現(xiàn)自己被綠了蚕捉。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡柴淘,死狀恐怖迫淹,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情为严,我是刑警寧澤敛熬,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站第股,受9級特大地震影響应民,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜夕吻,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一诲锹、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧涉馅,春花似錦归园、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽悬钳。三九已至,卻和暖如春偶翅,著一層夾襖步出監(jiān)牢的瞬間默勾,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工聚谁, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留母剥,地道東北人。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓形导,卻偏偏與公主長得像环疼,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子朵耕,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,792評論 2 345

推薦閱讀更多精彩內(nèi)容