網頁

2013年4月25日 星期四

cpio指令



  • cpio是一個比較古老的備份命令,也是用於磁帶機備份的工具,雖然如此現在許多時侯仍然需要使用這命令,例如定制系統內存映像盤時等。像是系統內存映像盤通常位於/boot中,文件名以initrd開頭。
  • 指令選項
    • i:使用copy-in模式,還原歸檔文件或列歸檔文件中的文件列表
    • o:使用copy-out模式,建立歸檔文件
    • p:使用copy-pass模式,將文件直接複制到目的目錄
    • c:使用老式的ascii歸檔格式。如果需要跟平台使用,就需要使用
    • d:倉建需要的目錄,如果需要文件不處於同一個目錄中,應該使用此選項
    • v:顯示處理過程
    • t:顯示歸檔文件中的文件列表
    • m:保持文件的時間標記
    • H:使用指定的格式歸檔文件
  • sample
    • find /bin -print | cpio -o > bin.bak
    • find -print | cpio -o > ../backup.cpio
    • find -print | cpio -ov > ../backup.cpio
    • find -print | cpio -ov | gzip > ../backup.cpio.gz
    • find -print | cpio -ov | bzip2 > ../backup.cpio.bz2
    • cpio -t < backup.cpio
    • cpio -tv < backup.cpio
    • cpio -tv "*.c" < backup.cpio
    • cpio -i < ../backup.cpio
    • cpio -iv < ../backup.cpio
      • 以上2個,使用選項i將文件恢複到當前的目錄
    • cpio -idv < ../backup.cpio
      • 文件恢複時保持目錄結構
    • cpio -imdv < ../backup.cpio
    • cpio -idv "*.c" < ../backup.cpio





2013年4月23日 星期二

ntpdate指令,通過網路同步時間


  • ntpdate指令,通過網路同步時間
    • ntpdate 192.168.11.15
      • 從192.168.111.15上同步時間
    • hwclock -w
      • 將系統的時間同步到硬件時鐘上
  • 時間服務器位置
    • 中國國家授時中心:210.72.145.44
    • CERNET時間服務:www.time.edu.cn/mem.htm

2013年4月22日 星期一

netstat指令,顯示網路的狀態


  • 假如想觀察本機網路服務的狀態,或本地端與其他主機貸間的連線狀態等資料,可執行netstat指令查詢相關資訊。
  • 範例
    • netstat -a
      • 顯示本機所有網路服務狀態
    • netstat -nt 
      • 查看所有tcp的連線狀態
  • 其他網路上擷取的資訊
netstat
如果你覺得你的某個網路服務明明就啟動了,但是就是無法造成連線的話,那麼應該怎麼辦? 首先你應該要查詢一下自己的網路介面所監聽的埠口 (port) 來看看是否真的有啟動,因為有時候螢幕上面顯示的 [OK] 並不一定是 OK 啊! ^_^
[root@www ~]# netstat -[rn]       <==與路由有關的參數
[root@www ~]# netstat -[antulpc]  <==與網路介面有關的參數
選項與參數:
與路由 (route) 有關的參數說明:
-r  :列出路由表(route table),功能如同 route 這個指令;
-n  :不使用主機名稱與服務名稱,使用 IP 與 port number ,如同 route -n
與網路介面有關的參數:
-a  :列出所有的連線狀態,包括 tcp/udp/unix socket 等;
-t  :僅列出 TCP 封包的連線;
-u  :僅列出 UDP 封包的連線;
-l  :僅列出有在 Listen (監聽) 的服務之網路狀態;
-p  :列出 PID 與 Program 的檔名;
-c  :可以設定幾秒鐘後自動更新一次,例如 -c 5 每五秒更新一次網路狀態的顯示;

# 範例一:列出目前的路由表狀態,且以 IP 及 port number 顯示:
[root@www ~]# netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth0
0.0.0.0         192.168.1.254   0.0.0.0         UG        0 0          0 eth0
# 其實這個參數就跟 route -n 一模一樣,對吧!這不是 netstat 的主要功能啦!

# 範例二:列出目前的所有網路連線狀態,使用 IP 與 port number
[root@www ~]# netstat -an
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address     Foreign Address     State
....(中間省略)....
tcp        0      0 127.0.0.1:25      0.0.0.0:*           LISTEN
tcp        0     52 192.168.1.100:22  192.168.1.101:1937  ESTABLISHED 
tcp        0      0 :::22             :::*                LISTEN
....(中間省略)....
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags    Type    State      I-Node Path
unix  2      [ ACC ]  STREAM  LISTENING  11075  @/var/run/hald/dbus-uukdg1qMPh
unix  2      [ ACC ]  STREAM  LISTENING  10952  /var/run/dbus/system_bus_socket
unix  2      [ ACC ]  STREAM  LISTENING  11032  /var/run/acpid.socket
....(底下省略)....
netstat 的輸出主要分為兩大部分,分別是 TCP/IP 的網路介面部分,以及傳統的 Unix socket 部分。 還記得我們在基礎篇裡面曾經談到檔案的類型嗎?那個 socket 與 FIFO 檔案還記得吧? 那就是在 Unix 介面用來做為程式資料交流的介面了,也就是上頭表格內看到的 Active Unix domain sockets 的內容囉~
通常鳥哥都是建議加上『 -n 』這個參數的,因為可以避過主機名稱與服務名稱的反查,直接以 IP 及埠口號碼 (port number) 來顯示,顯示的速度上會快很多!至於在輸出的訊息當中, 我們先來談一談關於網路連線狀態的輸出部分,他主要是分為底下幾個大項:
  • Proto:該連線的封包協定,主要為 TCP/UDP 等封包;
  • Recv-Q:非由使用者程式連接所複製而來的總 bytes 數;
  • Send-Q:由遠端主機所傳送而來,但不具有 ACK 標誌的總 bytes 數, 意指主動連線 SYN 或其他標誌的封包所佔的 bytes 數;
  • Local Address:本地端的位址,可以是 IP (-n 參數存在時), 也可以是完整的主機名稱。使用的格是就是『 IP:port 』只是 IP 的格式有 IPv4 及 IPv6 的差異。 如上所示,在 port 22 的介面中,使用的 :::22 就是針對 IPv6 的顯示,事實上他就相同於 0.0.0.0:22 的意思。 至於 port 25 僅針對 lo 介面開放,意指 Internet 基本上是無法連接到我本機的 25 埠口啦!
  • Foreign Address:遠端的主機 IP 與 port number
  • stat:狀態列,主要的狀態含有:
    • ESTABLISED:已建立連線的狀態;
    • SYN_SENT:發出主動連線 (SYN 標誌) 的連線封包;
    • SYN_RECV:接收到一個要求連線的主動連線封包;
    • FIN_WAIT1:該插槽服務(socket)已中斷,該連線正在斷線當中;
    • FIN_WAIT2:該連線已掛斷,但正在等待對方主機回應斷線確認的封包;
    • TIME_WAIT:該連線已掛斷,但 socket 還在網路上等待結束;
    • LISTEN:通常用在服務的監聽 port !可使用『 -l 』參數查閱。
基本上,我們常常談到的 netstat 的功能,就是在觀察網路的連線狀態了,而網路連線狀態中, 又以觀察『我目前開了多少的 port 在等待用戶端的連線』以及 『目前我的網路連線狀態中,有多少連線已建立或產生問題』最常見。 那你如何瞭解與觀察呢?通常鳥哥是這樣處理的:
# 範例三:秀出目前已經啟動的網路服務
[root@www ~]# netstat -tulnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address  Foreign Address   State   PID/Program name
tcp        0      0 0.0.0.0:34796  0.0.0.0:*         LISTEN 987/rpc.statd
tcp        0      0 0.0.0.0:111    0.0.0.0:*         LISTEN 969/rpcbind
tcp        0      0 127.0.0.1:25   0.0.0.0:*         LISTEN 1231/master
tcp        0      0 :::22          :::*              LISTEN 1155/sshd
udp        0      0 0.0.0.0:111    0.0.0.0:*                969/rpcbind
....(底下省略)....
# 上面最重要的其實是那個 -l 的參數,因為可以僅列出有在 Listen 的 port
你可以發現很多的網路服務其實僅針對本機的 lo 開放而已,網際網路是連接不到該埠口與服務的。 而由上述的資料我們也可以看到,啟動 port 111 的,其實就是 rpcbind 那隻程式,那如果想要關閉這個埠口, 你可以使用 kill 刪除 PID 969,也可以使用 killall 刪除 rpcbind 這個程序即可。如此一來, 很輕鬆的你就能知道哪個程式啟動了哪些埠口囉!
# 範例四:觀察本機上頭所有的網路連線狀態
[root@www ~]# netstat -atunp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address     Foreign Address     State       PID/Program
tcp        0      0 0.0.0.0:111       0.0.0.0:*           LISTEN      969/rpcbind
tcp        0      0 0.0.0.0:22        0.0.0.0:*           LISTEN      1155/sshd
tcp        0      0 127.0.0.1:25      0.0.0.0:*           LISTEN      1231/master
tcp        0     52 192.168.1.100:22  192.168.1.101:1937  ESTABLISHED 4716/0
....(底下省略)....
看到上頭的特殊字體吧?那代表目前已經建立連線的一條網路連線,他是由遠端主機 192.168.1.101 啟動一個大於 1024 的埠口向本地端主機 192.168.1.100 的 port 22 進行的一條連線, 你必須要想起來的是:『Client 端是隨機取一個大於 1024 以上的 port 進行連線』,此外『只有 root 可以啟動小於 1024 以下的 port 』,那就看的懂上頭那條連線囉!如果這條連線你想要砍掉他的話, 看到最右邊的 4716 了沒? kill 會用吧! ^_^
至於傳統的 Unix socket 的資料,記得使用 man netstat 查閱一下吧! 這個 Unix socket 通常是用在一些僅在本機上運作的程式所開啟的插槽介面檔, 例如 X Window 不都是在本機上運作而已嗎?那何必啟動網路的 port 呢?當然可以使用 Unix socket 囉,另外,例如 Postfix 這一類的網路伺服器,由於很多動作都是在本機上頭來完成的, 所以以會佔用很多的 Unix socket 喔!
例題:
請說明服務名稱與 port number 的對應在 Linux 當中,是用那個檔案來設定對應的?
答:
/etc/services

ifconfig顯示或設定網路的介面


  • ifconfig指令
    • 查詢目前的網路介面資訊,不加選項時會顯示已安裝的網路卡與封閉迴路(lo,loopback)的資訊。
    • 相關的欄位資訊
      • inet addr:全名為網際網路位址 ,就是此台的ip位址
      • HWaddr:硬體位址;前3碼是網路炩生產廠商的代號;後3碼是該網路卡的生產序號。
      • Bcase:這是廣播(broadcast)的位址,用於同時發送訊息給相同網域裡的其他電腦。
      • Mask:網路遮罩
      • MTU:每個資料封包的最大傳輸單位(Maximun Transmission Unit),用來控制封包的大小,預設值是1500Bytes.
      • RX、TX:分別代表已接收(Received)與已輸出(Transmitted)的封包總數,以及傳輸時封包出現流失或碰撞等狀況之數量。
    • 網路下設定
      • ifconfig eth0 netmask 255.255.0.0
        • 設定eth0這張網卡的mask為255.255.0.0
      • ifconfig eth0 down
        • 關閉eth0這張網卡
      • ifconfig eth0 up
        • 啟動eth0這張網卡

2013年4月20日 星期六

du指令(追蹤大文件命令)


  • 追蹤大文件命令
    • 隨著系統運行時間的持續,用戶數越來越多,可能會使文件仦統的可用空間越來越小,直到有一天收到系統磁盤空間告警的消息,這時管理員可能需要查看是哪些文件占用了過多的空間,以清理文件系統上的無用文件。此時du指令就派上用場了
    • du指令選項
      • h:以更直觀的方式顯示文件大小。
      • s:查看當前目錄的大小
    • 使用範例:
      • du /mnt
      • du -h /mnt
      • du -sh

2013年4月16日 星期二

關閉、啟動投影密碼(shadow)


  • 若要關閉投影密碼功能,可執行pwunconv指令,將使用者的密碼從shadow檔寫回passwd檔。若要再啟動,則執行pwconv指令。
  • 在郡組上也有相同的投影密影功能,若要關閉群組的投影密碼功能,則可執行grpunconv指令,將密碼從gshadow檔寫回group檔中,若要啟動,則執行grpconv指令。

單人模式-忘記root密碼的救星


  • 如果你忘了root密碼時
    • 先切換到單人模式
      • 在開機顯示LILO畫面時,按Ctrl+X切換到文字模式的LILO畫面,並輸入
        • linux s
        • passwd root 
          • 重新設定root的密碼

Linux軟體整理


  • 小弟是一邊看書一邊整理的…所以一開始可能看見一些已經作古的軟件,請別再在意哦!!!會續陸更新的!!
  • 辦公室軟體-KOffice
    • KWord:文書編輯軟體
    • KSpread:試算表軟體
    • KPresenter:簡報軟體
    • KChart:圖表繪製軟體
    • KFormula:公式製作軟體
    • Kivio:標程表軟體
    • Kontour:向量繪圖軟體
    • Kugar:商業數據分析軟體
    • OpenOffice:文件編輯軟體
    • GhostView:觀看PS,PDF文件
    • Xpdf:觀看PS,PDF文件
  • 一般軟體
    • Electric Eyes:影像編輯
    • gimp:影像編輯
  • 燒錄軟體
    • X-CD-Roast
  • 影音軟體
    • gtv(Gtk+MPEGPlayer)
    • MpegTV Player(mtv)
    • Xmms:mp3播放軟體
    • Gnome:聽音樂CD
  • 虛擬機器軟體
    • VMWare
  • 系統&管理相關
    • xosview
    • Webmain(管理)
    • GnoRPM
  • 模組維護工具
    • modutils
    • module-init-tools

傳輸檔案的ftp指令


  • 在ftp的模式下
    • hash :表示為了避免傳輸大檔時,不知道檔案是在傳輸中或斷線了,可讓檔案在每傳送一定大小後顯示一個#號
    • binary:指定要傳送的是2進位檔
    • ascii:指定要傳送的檔是文字檔
    • get:下載一個檔案
    • put:上傳一個檔案
    • mget:下載多個檔案
    • mput:上傳多個檔案
    • ?:顯示所有指令
    • prompt:可以設定是否要在檔案傳輸前一個一個確定
    • !指令:有!打頭的表示這一個指令是下在系統的終端機上的不是ftp本身,如
      • !pwd
      • !mkdir download
    • lcd:在不登出ftp下,切換本機目前的目錄

ssh遠端登入常用的指令&設定


  • Red Hat 預設是開啟telnet伺服器,而是以ssh伺服器來代替。因為telnet在資料傳輸時是不加密的,而ssh是有加密的。
  • 常用的指令
    • ssh canred.com.tw
    • ssh 192.168.x.xx
    • ssh -l 192.168.x.xx
      • 使用l選項,你可以指定要登入遠端主機的帳號
  • 設置
    • 取消root遠端登入
      • Red Hat的ssh伺服器default是允許root帳號登入的;如果你要關掉的話你可以修改/etc/ssh/sshd_config檔
        • PermitRootLogin no :表示不允許Root帳號登入系統
    • 當設定檔變更時,你必須重新啟動服務
      • /etc/rc.d/init.d/sshd restart

2013年4月15日 星期一

建立開機磁片,mkbootdis指令,建立一個軟盤


  • 如果你在安裝系統時,並沒有製作開機磁片;或者開機磁片已經損毀,安裝系統後,可利用mkbootdisk指偷建立一張新的開機磁片。
    • mkbootdis `runame -r`
    • 或是
    • mkbootdis --device /dev/fd0 --noprompt 2.6.18

2013年4月14日 星期日

創建文件系統指令。mkfs,mke2fs指令


  • 在linux系統中,創建文件系統可以使用mkfs系統指令,按創建的文件系統不同,mkfs系列命令包括:mkfs.ext3、mkfs.ext2和ext.vfat等。利用這些指令可以為分區創建ext3、ext2和fat32等不同的文件系統,也可以直接使用mkfs指令創建不同的文件系統。
    • mkfs 指令,類似dos下的format指令
    • 指令的格式
      • mkfs [option] device
    • 常用的option
      • t:用於指定創建的文件系統類型
      • L:創建文件系統的同時,為文件系統增加卷標
      • c:創建文件系統前,先檢查指定分區的壞道。
      • v:顯示詳細內容
    • 使用方法如下:
      • mkfs -t ext2 -v /dev/sda4
      • mkfs -t ext3 /dev/sdb1
      • mkfs.ext3 -c /dev/sdb1
        • 用mkfs.ext3指令創建文件系統的同時,使用選項c檢查磁盤中的壞道
      • mkfs -t ext3 -L /data /dev/sdb1
        • 創建文件系統的同時,使用選項L為sdb1創建卷標。
  • 查看和修改卷標指令e2label
    • 卷標是用戶對文件系統增加一個別名,通常用于標識文件系統的用途。在linux系統中卷標也可以用於掛載文件系統。
      • 指令格式:e2label device [new_label]
    • e2label /dev/sdb1 /file
      • 為sdb1的磁盤分區設定一個名稱file的卷標
    • e2label /dev/sdb1
      • 查為sdb1的磁盤分區使用的卷標
  • 掛載文件系統
    • 在linux等類unix系統中,創建文件系統後,必須先將文件系統掛載到某個目錄,然後才能使用該文件系統存儲數據。掛載是將文件系統的階區"掛"在某個目錄下,這個目錄就是該分區的訪問點。
    • 在linux系統中,掛載分區使用mount指令,不僅可以掛載分區,還可以掛載光驅、u盤、光盤鏡象等設備和文件。
    • 指令格式
      • mount [option] device directory
        • device:表示要掛載的設備或文件
        • directory表示設備或文件的掛載點。
      • 常用的選項
        • a:掛載所有可以掛載的文件系統,如果不指定,則掛載文件/etc/fstab中列出的文件系統
        • o:指定掛載時使用的參數
          • async:以非同步的方式讀寫文件系統
          • atime:每次存取都更新文件的訪問時間戳記
          • auto:自動掛載。該選項只能用於/etc/fstab文件中,表示用戶使用選項a時,此文件系統將自動掛載。
          • user:允許普通用戶掛載文件系統,此選項還附帶有noexec、nodev等選項(除非掛載時重新指定這些參數,否則default不生效)
          • users:允許所有用戶掛載文件系統,此選項還附帶有noexec、nodev等選項(除非掛載時重新指定這些參數,否則default不生效)
          • dev:提載後可讀取文件系統上的字符設備和塊設備文件。
          • exec:掛載後可執行文件系統上的2進制文件
          • noatime:與atime參數作用相反,不更新訪問時間戳記。此參數通常用於光盤等只讀的文件系統
          • noauto:與auto參數作用相反。
          • nouser:禁止普通用戶掛載文件系統
          • noexec:與exec選項相反,不允許執行文件系統上的2進制文件
          • nodev:與dev選項閜反,不允許讀取文件系統上的字符設備和塊設備文件。
          • remount:試圖重新掛載一個文件系統,通常用於改變文件系統的掛載參數。
          • ro:以只讀方式掛載文件系統。
          • rw:以可讀寫方式掛載文件系統
          • sync:所有對文件系統的讀寫操作者應該立即完成
          • suid:設置用戶id和組id
          • loop:將文件當成文件系統掛載
          • nosuid:與suid功能相反;不設置用戶id和組id
          • bind:將一個子樹掛載到其他地方,即從多個位置訪問一文件系統
          • defaults:default參數,包括:rw,suid,dev,exec,auto,nouser,async
          • 注意:如非必要,不要使用user或users等參數,否則可能會引起系統安全性的問題
        • t:指定文件系統的類型。如果掛載常見的文件系統,一般不必指定文件系統的類型。通常只有光盤鏡像、遠程文件系統等需要指定文件系統類型。
      • 用法示例:
        • mount -t ext3 /dev/sdb1 /mnt/sdb1
        • mount ext3 /dev/sdb1 /mnt/sb1
          • 不使用t選項,表示讓系統自動判斷文件系統並掛載
        • mount 
          • 查看系統掛載的狀況
        • mount -p loop linux.iso /media
          • 使用loop選項掛載光盤鏡像文件
--------------------------------------------------------
badblocks 指令用新檢查硬碟是否有壞塊的存在
使用方法如下:
badblocks -s -v /dev/sda
--------------------------------------------------------

mke2fs 指令,用於創建第2擴展文件系統
使用方法如下:
mke2fs-t ext2 -v /dev/sda4
--------------------------------------------------------

2013年4月11日 星期四

排程指令crond


  • 在使用排程crontab前,你必須確保計劃任務的相關服務已經正確啟動。也就是crond,atd這2個服務
    • chkconfig --level 35 crond on
    • chkconfig --list crond
    • chkconfig --level 35 atd on
    • chkconfig --list atd
    • service crond start
    • service atd start
  • 如果要禁用某些用戶的計劃任務
    • 在/etc/cron.denyt檔中加入需要禁用的用戶名。
  • 電腦在很多的時侯需要週期性的執行某一項目工作,這時侯你就需要使用到crond的排程指令了。
  • 排程設定檔的寫法
    • 在啟動時間格式為:Minute Hour Day Month DayOfWeek Command
    • 如遇到不指定的時間單位你可以用*來表示
      • 1 * * * * program -a -b -c
        • 上列為每分鐘執行某工作
      • 20 4 * * *  program 
        • 上列為每4點20分的時侯執行某工作
      • 1 0 8 sep * program
        • 每年九月8日的0點1分時
      • 9 4 * * sun program
        • 每個星期日的不限日4時9分時執行
      • 20 2 1,15 * * program
        • 每月的1或15日2點20分執行
      • 25 1-4 * * * program
        • 每日的1至4點的25分執行
      • */10 * * * * program
        • 每十分鐘執行一次
      • 35 5 */10 * * program
        • 每隔十日的5點35分執行
  • /etc/contab的檔案內容
    • SHELL =/bin/bash                  #指定執行排程工作所使用的shell
    • PATH=/sbin:/bin:/user/sbin:/usr/bin  #指定指令搜尋的路徑
    • MAILTO=root     #指定輸出的結果,郵寄給root帳號
    • HOME=/        #指定根目錄
    • 01 * * * * root run-parts /ect/cron.hourly
      • 每個小時的第1分鐘以root帳號執行/etc/cron.hourly目錄中的所有執行檔
      • run-parts指令會執行隨後目錄中的所有執行檔
  • crond排程指偷會每小時、每天、每週及每月執行一次/etc/hourly,/etc/daily,/etc/monthly目錄中的所有執行檔
  • 個人的排程工作
    • 你可以透過crontab -e指令來編輯自已的排程設定檔,並在此檔加入要定期執行的工作,以下為canred使用者編輯自已的排程設定檔
      • crontab -u canred
        • 指定查看canred帳號的計劃任務
      • crontab -e
      • crontab -l
        • 查詢自已所有的排程工作
      • crontab -r 
        • 刪除自已所有的排程工作,在使用前一定要特別的注意哦…因為一不小心就全刪除了。
    • 一般狀態下排程工作的設定檔會被儲存在/var/spool/cron目錄下,以帳號名稱為檔名的設定檔。
  • 系統管理員是可以編輯其他人員的排程工作哦…
    • crontab -e -u canred
      • 使用u選項來指定編輯的帳號
    • Default下系統會將用戶提交的計劃任務放在目錄/var/spool/cron/中,並以用戶命名計劃任務文件。
  • 在設定排程的常用輸出結果方式
    • 1 * * * * program >> /home/canred/cron.log
    • 1 * * * * program >> /home/canred/cron.log 2>&1
      • 2>&1表示執行結果及錯誤訊息
    • 1 * * * * program > /dev/null 2>&1
      • /dev/null 是表示不儲存資料,也就是直接放棄啦
  • 備份/還回計劃任務
    • 備份
      • crontab -l > \backup\cron_canred
    • 還原
      • crontabl \backup\cron_canred
  • 系統計劃任務
    • 有4個關鍵的目錄
      • /etc/cron.daily
      • /etc/cron.hourly
      • /etc/cron.monthly
      • /etc/cron.weekly

bzip2,bunzip2和bzip2reconver指令


  • bzip2,bunzip2和bzip2reconver
    • 你可能可以看到*.tar.bz2的壓解檔,這種壓縮檔通常會拿來壓縮統統kernel或path檔
    • bunzip2實際上就是bzip2,你可以用ls -l bzip2 bunzip2 看看
    • 選項:
      • -k:在壓縮和解壓縮的過程中保留原檔
      • -f:強迫產生檔案
      • -d:執行解壓縮行為
    • 範例:
      • *.tar.bz2的解壓縮方法
        • bzip2 -dc linux-2.1.xxx.tar.bz2 | tar xvf -
  • bzip2recover指令;用來修復損毀的.bz2檔案。
    • bzip2recover test.bz2





2013年4月10日 星期三

gunzip指令;解壓gzip檔案


  • gzip/gunzip與zip的用法上的不同
    • zip指令能將許多檔案壓縮成一個檔案的功能,但gzip不能,所以gzip一般會和tar合併使用。目前大部份可以見到的壓縮檔大都是用tar將所有檔案打包成一個檔案,再用gzip做壓縮,所以當我們看到副檔名為.tar.gz或.tgz者,大多就是這類型的檔案。
  • gzip指令
    • 選項(大致於zip的選項大同小異)
      • -S:指定副檔名
        • gzip -S .gzip data01.txt
        • 注意:使用-S的選項壓縮檔案時在解壓的時侯也要加上-S的選項
          • gzip -S .gzip -d data01*
      • -f:解壓時強迫覆蓋輸出檔案,不要提示user訊息。
        • gzip -d -f data02.txt.gz
    • 常用的範例:
      • gzip data.txt 
        • 壓縮data.txt檔案,並產出一個data.txt.gz的檔
      • gzip -d data.txt.gz
        • 解縮動作
  • gunzip指令
    • 基本是就是gzip只是負責解壓行為;另外可以用gunzip來解zip或compress所壓縮的檔案。

zip 指令 , unzip 指令



  • zip 指令
    • 常用的選項
      • g:將新的檔案附加到一個已存在的zip檔中
        • zip -g test *.txt
      • j:只壓縮檔案,但是不儲存目錄的結構;default是有目錄結構的
        • zip -j test *.text /data2/*.txt
      • r:遞廻方式壓縮
        • zip -r test *
      • -f:更新壓縮檔中的檔案
        • zip -f test *.txt *.doc
      • -u:可又新修改過的檔案並加入新檔
    • 常見的範列:
      • 將所有*.txt的檔案壓成一個myfiles.zip檔
      • zip myfiles *.txt
      • zip myfiles *.txt *.doc
  • unzip 解壓zip檔
    • 選項
      • d:指定解壓的目的目錄
      • u:在解壓時,如果目的目錄已經存在此檔案就不解壓;若不存在時才解壓。
        • unzip -u test.zip 
      • j:用法跟zip的j選項雷同;有j選項時只解壓檔案出來不含目錄的結構。
        • unzip -j test.zip 
    • 常見的用法
      • unzip test.zip
      • unzip test.zip -d mydir




2013年4月9日 星期二

tar 打包檔案以及壓縮/解壓


  • tar指令是讓使用者所指定的檔案或目錄打包成一個檔案,不過它並不做壓縮。一般unix上常用的壓縮方式是先用tar將許多檔案打包成一個檔案,再以gzip等壓縮指令壓縮成xxx.tar.gz
  • tar常用的選項
    • c:建新一個新的tar檔
    • v:顯示運作過程的資訊
    • f:指定一個檔案的名稱通常與c,x,z選項一起使用(指定打包的文件檔)
    • z:呼叫gzip壓縮指令執行壓縮
    • Z:使用compress解壓縮/壓縮
      • tar -cZvf test.tar.Z *.txt
    • t:檢視壓縮檔案的內容
    • x:解開tar檔
    • --atime-preserve:壓縮後的檔案以原來的檔案時間為主
    • --checkpoint:讀取壓縮檔時顯示目錄名稱
    • h:儲存符號連結(symbolic link)所連結的檔案,而不是符號連結本身
    • --delete:刪除.tar檔中的檔案
      • tar --delete -vf text.tar test.txt
    • r:將新的檔案附加到tar後
      • tar -rvf text.tar newfile.new
    • u:更新tar檔案的內容
      • tar -uvf test.tar t.txt
    • k:在解包的時侯不要覆蓋已存在的檔案
      • tar -xkvf test.tar
    • --remove-files:將檔案移入tar檔中,並移除原檔案。
      • tar --remove-files -cvf test.tar *.txt
    • W:可在寫入時,檢查 tar檔
      • tar -Wcvf text.tar *.txt
    • --use-compress-program:指定壓縮程式
      • tar --cvf test.tar --use-compress-program zip *.txt
    • --totals:會顯示寫入的bytes數
      • tar --total -cvf text.tar *.txt
    • j:通過bzip2處理歸檔的文件
  • tar 範例
    • tar -cvf data.tar *
      • 將所有檔案打包成為一個data.tar檔
    • tar -cvzf data.tar.gz *
      • 與上例相同但是多了壓縮
    • tar -tvf data.tar
      • 檢視data.tar檔中包含那些檔案
    • tar -xvf data.tar
      • 將data.tar檔解開
    • tar -xzvf bin.tar.gz
      • 用gzip格式解包解縮







2013年4月8日 星期一

fg,bg,&指令,將指令放到後台執行;nohup指令可讓使用者登出系統後,程序繼續執行


  • 使用者有時侯執行的程序可能要花很多時間,如果將它放在前景執行,將導致無法繼續做其他事情,最好的方法就是將它放在背景執行,甚至可能還希望使用者登出系統後,程序還可以繼續執行。
    • 在背景執行程序的&,bg指令
      • 格式:指令 &
        • sample 1 :
          • netscape
        • sample 2:
          • updatedb
            • 按下Ctrl+Z中斷動作
          • bg
            • 將更新動作放到背景執行
        • sample 3:
          • sleep 300 &
          • ps
        • 後台執行時,並將輸出重定向到指定文件中
          • mv /mnt/sdd5/test /root/ &>message &
            • 上例,使用重定向將命產生的輸出和錯誤信息寫入文件message中,這樣命令執行過程中就不會有消息發送到控制台了。
    • 在前景執行程序的fg指令
      • fg
  • nohup指令可讓使用者登出系統後,程序繼續執行
    • nohup myserver &
----編輯紀錄
  • 2013/4/23:
    • 新增:
      • 背景執行範例程式 sample 3 、重定向


開機時自動掛載光碟或軟碟片;設定允許一般使用者也能掛載光碟片


  • 假如你想在開機時就自動掛載光碟片或軟片,可編輯fstab檔案
    • 以下為光碟機為例
      • 第1欄                 第2欄           第3欄     第4欄                       第5,6欄
      • /dev/cdrom         /mnt/cdrom    iso9660  auto,owner,kudzu,ro   0  0
        • 第4欄:要開機時自動掛載光碟片,請將原本"noauto,owner,kudzu,ro"改成auto,owner,kudzu,ro
        • 第5,6欄:此行是設定掛載光碟片時的參數
    • 以下為軟碟機為例
      • /dev/fd0         /mnt/floppy    auto  auto,owner,kudzu,ro   0  0
  • 若要一般使用者要可以掛載設備資源的話,你要修改fstab檔案
    • 依上例光碟機的第4欄改成auto,owner,kudzu,user
  • 掛載其他種類的儲存媒體
    • mount指令除了可掛載光碟或軟碟片之外,也可掛載碟分割區,ZIP磁碟機等,例如fat的分割區
      • mount -t -vfat /dev/hda1 /mnt/win98

2013年4月7日 星期日

掛載的儲存媒體看不到中文檔名?


  • 如果掛載的儲存媒體中含有中文檔名,需要在執行mount指令時,再加上"-o iocharset=cp950"參數,如此才能看到此儲存媒體內的中文檔名。例如要掛載光碟片,則執行以下指令。
    • mount -o iocharset=cp950 /dev/cdrom /mnt/cdrom

避免按Ctrl+Alt+Del重新開機的方法


  • 要在Linux底下重新開機,也可以直接按下組合鍵Ctrl+Alt+Del,如果你不希望任何人利用這組合鍵隨意的重新啟動電腦,請修改/etc/initab檔:
    • 將原有的ca::ctrlaltdel:/sbin/shutdown -t3 -r now前面加上一個#即可
      • #ca::ctrlaltdel:/sbin/shutdown -t3 -r now

/etc/inittab 設定錯誤,導致無法開機!


  • 若修改了/etc/inittab後無法正常開機,則可以在開機時採用單人模式進入系統,重新修改inittab設定檔以解決此問題。
  • 使用LILO為開機管理程式時,只要在開機顯示LILO選單畫面時,按下Ctrl+x鍵,切換到文字模式的LILO的登入畫面,並輸入以下參數即可:  
    • linux s
  • 若使用GRUB為開機管理程式時,同樣在開機顯示選單畫面時,按 Ctrl+x鍵,接著按p鍵,再輸入GRUB密碼,最後按a鍵,並在指令列輸入以下參數以進入單人模式
    • ro root=/dev/hda2 s 


2013年4月1日 星期一

設定GRUB開機管理程式


  • GRUB(GRand Unified Bootloader)為多重開機管理程式的後起之秀,這套多重開機程式最初由Erich Stefan Boleyn所設計及實作出來,目前由GNU所維護。GRUB可以取代LILO,同時功能更強大,目前已有許多Linux發行版內附GRUB的程式。
  • 如何改新開機設定檔
    • GRUB預設會去讀位於/boot/grub/menu.lst的設定檔,在Red Hat Linux裡的menu.lst為一個連結到/boot/grub/grub.conf的連結檔。並由修改此設定檔可更改GRUB的開機時的相關功能。
    • 若你想更改開機的選單、圖片,可編輯/boot/grub/menu.lst檔案修改。以下簡單的說明一下menu.lst檔案
      • default=0        //此處預設開機的作業系統
      • timeout=10    //GRUB選單的延遲時間
      • splashimage=(hd0,1)/boot/grub/splash.xpm.gz //開機選單的背影圖片
      • title Red Hat Linux (2.x.x)    //選單上所顯示的名稱
      •         root (hd0,1)                //存放系統核心的分割區
      •        kernel /boot/vmlinuz-2.....  ro root=/dev/hda2   //指定要載入的核心及掛載系統的根目錄
      •        initrd /boot/initrd.2......    
      • title DOS       //表Windows分割區
      •       rootnoverify (hd0,0)     //指定開機的磁碟
      •       chainloader +1 //由於microsoft的作業系統屬封閉類型,因此需以chainloader的方式啟動該分割區中第一個磁區裡的開機程式
  • 重新安裝GRUB
    • 修改完設定檔後必須重新安裝GRUB才能生效,請執行下面的指令
      • grub-install /dev/hda