Linux使用小知識(轉)

BSDLite發表於2007-08-16
Linux使用小知識(轉)[@more@]  都很實用的,可能比較古典.但對於我這樣一個初學者還是有用的~~~

  從軟盤啟動grub

  製作啟動盤後可以用軟盤啟動引導硬碟上的作業系統 插入製作好的啟動軟盤,進入BIOS設定軟盤啟動。軟盤啟動成功後就會進入grub的命令列模式

grub>

  要啟動一個作業系統,首先指定引導哪個分割槽上的系統,例如要引導指第一個硬碟上的第一個分割槽的作業系統,先鍵入

grub>root (hd0,0)

  接著如果要啟動的是Windows系統,鍵入

grub>chainloader (hd0,0)+1

  注意(hd0,0)要隨著硬碟和分割槽的不同而改變數字。 如果要引導Linux或其他系統,應鍵入

grub>kernel (hd0,0)/boot/vmlinuz root=/dev/hda1

  注意hda1引數也要隨著硬碟和分割槽的不同而改變,如從第二個硬碟的第一個分割槽引導則用hdb1。

  最後敲入boot就可以啟動系統了。

  在任何時候不能確定命令或者命令的引數都可以按Tab獲得相關的幫助。用上下鍵可以獲得命令的歷史記錄。

其實這些命令就是menu.lst的啟動描述,您也可以根據那些描述來自己鍵入啟動命令,最後敲入boot就可以引導系統了。

  如何實現多網路卡bonding

  使用多塊網路卡虛擬成為一塊網路卡,具有相同的IP地址。這項技術其實在sun和cisco中已經存在,分別稱為Trunking和etherchannel技術,在Linux中,這種技術稱為bonding。

??因為bonding在核心2.4.x中已經包含了,只需要在編譯的時候把網路裝置選項中的Bonding driver support選中就可以了。

??然後,重新編譯核心,重新起動計算機,執行如下命令:

??ismod bonding

??ifconfig eth0 down

??ifconfig eth1 down

??ifconfig bond0 ipaddress

??ifenslave bond0 eth0

??ifenslave bond0 eth1

??現在兩塊網路卡已經象一塊一樣工作了.這樣可以提高叢集節點間的資料傳輸.

??你最好把這幾句寫成一個指令碼,再由/etc/rc.d/rc.local呼叫,以便一開機就生效.

??bonding對於伺服器來是個比較好的選擇,在沒有千兆網路卡時,用兩三塊100兆網路卡作bonding,可大大提高伺服器到交換機之間的頻寬.但是需要在交換機上設定連線bonding網路卡的兩個口子對映為同一個虛擬介面。

  如何實現為一個網路卡繫結多個IP地址?

  Linux的網路裝置配置檔案存放在/etc/sysconfig/network-scripts裡面,對於乙太網的第一個網路裝置,配置檔名一般為 ifcfg-eth0 如果需要為第一個網路裝置繫結多一個IP地址,只需要在/etc/sysconfig/network-scripts目錄裡面建立一個名為ifcfg-eth0:0的檔案,內容樣例為: DEVICE="eth0:0"

IPADDR="211.100.10.119"

NETMASK="255.255.255.0"

ONBOOT="yes"

  其中的DEVICE為裝置的名稱,IPADDR為此裝置的IP地址,NETMASK為子網掩碼,ONBOOT表示在系統啟動時自動啟動。

  如果需要再繫結多一個IP地址,只需要把檔名和檔案內的DEVICE中的eth0:x加一即可。LINUX最多可以支援255個IP別名。

如何根據NETBIOS名字查詢計算機IP

使用nmblookup test可以查詢到同個網路內NETBIOS名字為test的機器的IP,如果這個機器有多個IP,也會一併列出。

如何知道某個埠現在執行什麼監聽程式

當我們用netstat -an的時候,我們有時候可以看到類似的輸出: udp 0 0 0.0.0.0:32768 0.0.0.0:*

但是查詢/etc/services又沒有這個埠的相關說明,怎麼辦呢?這個是不是駭客程式?有沒有辦法檢視究竟什麼程式監聽在這個埠?

使用lsof -i :32768就可以看到:

COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME

rpc.statd 603 root 4u IPv4 953 UDP *:32768

rpc.statd 603 root 6u IPv4 956 TCP *:32768 (LISTEN)

原來是rpc的程式。

使用lsof -i :port就能看見所指定埠執行的程式,同時還有當前連線。

如何監視某個tty

你可以把 /etc/inetd.conf中 ??# Use this one instead if you want to snoop on telnet users (try to use this

??# for ethical purposes, ok folks?) :

??telnet stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.telnetsnoopd

??1.把原本的in.telnetd換成上述的in.telnetsnoopd,

??2.然後啟用 ttysnoops &

?3.mkdir /var/spool/ttysnoop

??4.重新啟用 inetd

??用法就是 ttysnoop tty*,這時它會要你輸入root的密碼,按 ctrl+7可以終止,不過監視人家時要小心不要被發現了喲。這兩個視窗是一樣的,你還可以控制他的鍵盤 (自己先練習一下,呵呵...)

如何恢復iptables的預設設定

/usr/local/sbin/iptables -P INPUT ACCEPT /usr/local/sbin/iptables -P FORWARD ACCEPT

/usr/local/sbin/iptables -P OUTPUT ACCEPT

#

# reset the default policies in the nat table.

#

/usr/local/sbin/iptables -t nat -P PREROUTING ACCEPT

/usr/local/sbin/iptables -t nat -P POSTROUTING ACCEPT

/usr/local/sbin/iptables -t nat -P OUTPUT ACCEPT

#

# flush all the rules in the filter and nat tables.

#

/usr/local/sbin/iptables -F

/usr/local/sbin/iptables -t nat -F

#

# erase all chains that's not default in filter and nat table.

#

/usr/local/sbin/iptables -X

/usr/local/sbin/iptables -t nat -X'

GRUB多重啟動管理器

什麼是grub

  grub 是一個多重啟動管理器。grub是GRand Unified

Bootloader的縮寫,它可以在多個作業系統共存時選擇引導哪個系統。它可以引導的作業系統包括Linux,FreeBSD,Solaris,NetBSD,BeOSi,OS/2,Windows95/98,Windows

NT,Windows2000。它可以載入作業系統的核心和初始化作業系統(如Linux,FreeBSD),或者把引導權交給作業系統(如Windows 98)來完成引導。

如何允許非root使用者mount光碟和軟盤

可以透過修改檔案系統配置檔案:/etc/fstab來使非root使用者使用光碟和軟盤,將/etc/fstab中關於fd0及cdrom的內容修改為如下所示:   /dev/fd0 /mnt/floppy auto noauto,user 0 0

  /dev/cdrom /mnt/cdrom iso9660 noauto,ro,user,unhide 0 0

  你可以透過察看/etc/mtab或使用不帶引數的mount命令來察看哪些檔案系統被載入及它們的載入引數是什麼。

如何限制某個使用者只能FTP不能TELNET?

很簡單,修改此使用者的shell即可。開啟/etc/password,查詢要修改的使用者所對應的記錄,如: floatboat:x:500:500::/home/floatboat:/bin/bash

  要禁止floatboat使用者登入,只需要把此行中的“/bin/bash”改為/usr/bin/passwd即可。這樣使用者telnet上伺服器只能修改密碼,而無法直接控制檯。

  當然,如果你希望連密碼都不允許此使用者修改,只要把shell改為“/sbin/nologin”即可。

怎麼樣做到限時登入

透過以下三個指令碼程式呼叫at和系統維護功能即可實現限時登入: 在指定的時間執行該指令碼,將在/etc下生成一名為nologin的檔案,登入程式在執行時會自動判斷此檔案是否存,如果存在將不允許使用者登入,內容為:

vi /sbin/login.denied

echo " Login Denied " > /etc/nologin

chmod 700 login.denied

在指定的時間執行該指令碼,刪除/etc/下的nologin檔案以允許使用者登入,內容為:

vi /sbin/login.allowed

if [ -f /etc/nologin ]; then

rm /etc/nologin

fi

chmod 700 login.allowed

編寫一個限制時間的指令碼,內容為:

vi /sbin/login.rollback

if [ -f /sbin/login.denied ]; then

at -f /sbin/login.denid 22:00

fi

if [ -f /sbin/login.allowed ]; then

at -f /sbin/login.allowed 8:00

if

chmod 744 /sbin/login.rollback

建立完成以後,把/sbin/login.rollback指令碼放進crontab中,在每天凌晨執行:

crontab -e

# roll login script

00 1 * * * /sbin/login.rollback

此種設定的功能是:從晚上10:00到第二天早上8:00靜止非root使用者登入,顯示為系統維護狀態。

lilo.conf配置例項

有了這些基礎知識,我們可以很容易地按照自己的意圖配置LILO。請看一個lilo.conf檔案的例子:

  boot=/dev/hda         #將LILO安裝在MBR。LILO作為主引導管理器

  message=/boot/message     #註釋為/boot/message

  compact             #產生一個更小的“map”檔案

  map=/boot/map         #指定“map”檔案為/boot/map

  install=/boot/boot.b

  password=zhoudi         #設定口令

  vga=normal           #80x25文字模式

  linear             #使用“linear”地址

  prompt             #提示使用者鍵盤輸入

  timeout=50           #超時時長為5秒

  default=dos           #預設引導label為dos的作業系統

  #設定Linux

  image=/boot/vmlinuz-2.0.34-1  

  #設定Linux核心引導映像

   label=linux         #標識為linux

   root=/dev/hda1       #設定根檔案系統

   read-only          #LILO以只讀方式載入根檔案系統

  #設定MS-DOS或Windows 95

  other=/dev/hda2         #DOS分割槽為第一個IDE硬碟的第二分割槽

   label=dos          #標識為dos

   table=/dev/hda       #主裝置為第一個IDE硬碟

  #設定SCO UNIX

  注意:SCO分割槽必須設為活動(active)分割槽並將LILO安裝在MBR上。

  other=/dev/hda3

   label=sco

   table=/dev/hda

  這個例子中,LILO是作為主引導管理器來管理機器上所有作業系統的。LILO也可作為二

級引導管理器,這隻要將“boot”引數改為根分割槽就可做到。例如:

  boot=/dev/hda1

  以這種方式使用LILO時,Linux根分割槽必須用DOS或Linux的fdisk程式將其設定為活動分割槽,

並且這種方式只對硬碟主分割槽(不是擴充套件或邏輯分割槽)有效。

  LILO還可以啟動第二個以上的作業系統。在我的機器上有兩塊希捷硬碟,一塊硬碟為8.4GB,

另一塊為1.2GB,都以LBA模式接在主IDE口上。8.4GB跳線為主盤,1.2GB跳線為從盤,Linux

核心很容易地就將它們辨認出來並能正常使用,1.2GB的硬碟上安裝了MS-DOS 6.22。筆者是

這樣設定lilo.conf的:

  disk=/dev/hda

   bios=0x80      

  #由於IDE硬碟存在雙硬碟問題,所以當啟動DOS系統時,會提示“無系統盤或系統盤錯!”,需修改程式如下。

  disk=/dev/hdb

   bios=0x81

  boot=/dev/hda

  map=/boot/map

  install=/boot/boot.b

  linear

  prompt

  timeout=50

  default=dos

  image=/boot/vmlinuz-2.2.11-1

   label=linux

   root=/dev/hda1

   read-only

  other=/dev/hdb1

   label=dos

   map-drive = 0x80

      to = 0x81

      map-drive = 0x81

      to = 0x80

  #交換兩硬碟主、從順序

   table=/dev/hdb

  配置好lilo.conf檔案後,在root賬戶下執行lilo命令,新的LILO就被載入系統。

上面第一個例子執行結果如下:

  #lilo

  Added linux

  Added dos*      

  Added sco

  (注:帶*號的表示其為預設作業系統)

為Linux系統設定備份

備份是一項重要的工作,但是很多人沒有去做。一旦由於使用不當造成資料丟失,備份就成了真正的救命者。本文將討論設定備份的策略和如何選擇備份介質,並介紹用於備份的tar和cpio工具。 設定備份策略

  設定備份策略和計劃可以增加進行備份的可能性。備份開始前,要確定備份哪些資料、備份的頻率和使用什麼樣的介質進行備份。備份的時候,應該進行完全備份。

  備份通常安排在空閒時間進行。在大多數系統中,由於此時使用者數量最少,所以開啟的檔案也最少。由於備份要佔用一些系統資源,執行備份時使用者會發現系統反應遲鈍。

  如果Linux計算機只有一個使用者,可以一個星期或一個月對整個系統備份一次。如果有關鍵性的檔案,就應該有計劃地把這些檔案複製到一個可移動的磁碟中。

  備份之前,首先要確保正確地設定備份裝置。大多數磁帶備份系統在安裝時可以發現是否正確。系統啟動後,開啟一個終端視窗並且輸入下面的命令:

  $dmeg | less

  滾動列表,並從中尋找你的磁帶系統的驅動。如果沒有發現,就需要載入一個元件驅動程式。

  如果執行Linux伺服器,就要制定一個備份計劃,但這並不意味著每天要對所有的東西都備份。系統中只有一部分東西需要每天備份,下面列出需要備份的專案:

  使用者檔案 每天都要對/home目錄中的使用者檔案進行備份。

  配置檔案 /etc和/var目錄中的配置檔案不需要頻繁備份,每個星期或每月備份一次即可,主要取決於配置更改的頻繁程度。

  程式檔案 /usr和/opt目錄中的程式檔案很少發生變化,安裝後做一次備份即可。通常情況下,程式檔案可方便地從原始安裝盤中恢復。

選擇備份介質

  把備份存到哪裡有多種選擇。下面介紹一些可選擇的備份介質:

  軟盤 如果要把重要檔案快速備份,或者將其帶到家中,這時軟盤仍舊是一種可選的備份介質。

  光碟寫入器 隨著光碟寫入器變得越來越可靠,價格也越來越低,光碟本身也非常便宜。選用此項的一個好處是光碟不容易被損壞,它備份的可靠性很高。

  使用光碟寫入器有兩點不利因素:它們速度較慢,並且只能儲存大約650MB。

  可重寫的光碟 可重寫光碟驅動器比光碟寫入器要貴得多,工作方式與其類似。但是,這些光碟是可被重寫的,並且它比只能寫一次的光碟貴許多。可重寫光碟其它的特性都與光碟寫入器類似。

  Jaz和Zip Zip驅動器很流行,已經成為許多PC機的標準配置,同時它的磁碟和驅動器也都不貴。它一張磁碟可容納100MB的資料,是一種用於快速、可移動備份的很好選擇。

  Jaz磁碟可以容納上G位元組的資料,並且使用更先進的技術以獲得更好的表現。Jaz驅動器和Jaz磁碟都比較貴。

  Jaz和Zip的缺陷是都容易損壞,並且保持時間相對要短。

  磁帶機 磁帶備份裝置是大多數Linux伺服器的標準配置。磁帶是可靠的,並且很少出現錯誤,它幾乎比其它介質儲存時間都要長。

  對於點對點工作組網路和中型網路,Travan和高階數字音訊磁帶(DAT)通常是最好的選擇。Travan驅動器經過壓縮可以處理8GB資料,這對於具有5-10個PC機的小型網路來說足夠了。DAT驅動器有更好的表現,可以處理24GB的資料。DAT驅動器比Travan驅動器昂貴,但它磁帶的價格要比Travan QIC磁帶卷便宜。

  高階磁帶 選擇高階磁帶可能是相當貴的。與Travan或DAT相比,這種驅動器有更大的容量和更高的速度。三種廣泛使用的驅動器型別是:Sony Advanced Intelliget Tape ( AIT ) 、Quantum Digital Linear Ta p e ( DLT )和Exabyte Mammoth 8mm。它們最少可以容納20GB的不壓縮資料,並且具有更高的資料傳輸能力。

用於備份的tar

  tar工具是以前備份檔案的可靠方法,幾乎可以工作於任何環境中,Linux老使用者一般都信賴它。

  Linux中以.tar結尾的檔案都是用tar建立的。它的使用超出了單純的備份,可用來把許多不同檔案放到一起組成一個易於分開的檔案。tar是從Tape ARchiver備份工具起步的。

  包含在Linux中的GNU tar工具簡便易用,包含了一個用來壓縮的選項,且支援不斷增加的備份。

  tar是一個命令列的工具,沒有圖形介面。使用Konsole或Kvt開啟一個終端視窗,接下來是一個簡單的備份命令:

  $tar cvf - /home > /temp/backup.tar

  這個命令在/tmp目錄中建立一個backup.tar的檔案,/home目錄中所有內容都包含在其中。

  接下來可以把tar檔案複製到備份磁碟中。使用簡單備份時,如果要使用壓縮功能,改為下面命令:

  $tar czvf - /home > /tmp/backup.tgz

  上面副檔名. tgz指出這是一個壓縮檔案。

  下一個例子可以用來直接備份到一個安裝好的Jaz驅動器中,但這樣做要確定有足夠的空間:

  $tar czvf /mnt/jaz/backup.tgz - /home

  對於一個磁帶驅動器,使用裝置名稱:

  $tar czvf /dev/st0/backup.tgz - /home

  如果有一個備份非常大,可以使用多卷選項。但是,這樣做就不能使用壓縮。當第一個磁碟或磁帶填滿後,tar將提示插入另一張:

  $tar cvMf /dev/st0/5mar2000.tar -home

  要恢復備份使用下面的命令,以Jaz磁碟為例:

  $tar xzvf /mnt/jaz/5mar2000.tgz /home

  表1列出了tar主要功能引數。此外還有很多可選引數,本文不再詳述。

  表1 tar主要功能引數

  引數       描述

  -A     附加到另一個tar存檔的後面

  -C     建立一個新的tar存檔

  -d     找出tar存檔和檔案間的差別,用於一個文件的驗證

  --delete 從存檔刪除檔案,磁碟備份不能選用

  -r     把檔案附加到tar存檔的後面

  -t     列出tar存檔的內容

  -u     只把比tar文件中的檔案新的檔案附加到存檔中

  -x     解開一個tar存檔

  tar備份可以用crontab工具設定成基於時間的有規律地執行。例如,每晚2點把/home目錄備份到SCSI磁帶驅動器中,只要將下面語句新增到root的crontab中即可:

  00 02 * * * tar cvf /dev/st0/homefiles.tar - /home

用於備份的cpio

  GNU cpio工具像tar一樣從命令提示行啟動程式。與tar相比cpio更復雜,但是也更為可靠。因為如果一個tar檔案中某處有一個壞塊,就不能對備份檔案的其它部分進行訪問,而使用cpio,只有壞塊不能被訪問。

  cpio建立一個稱為copy-out mode的備份,備份存檔中包含了檔案和所有者、時間及訪問許可等資訊。cpio需要一個假定要備份的檔案列表。建立列表的一個最方便的方法就是使用ls命令。例如,要把/home目錄備份到SCSI磁帶裝置中,輸入下面的命令:

  $ls /home | cpio -o > /dev/st0

  也可以使用find命令。它包括許多選項可以用來消減被存檔檔案的數量。例如,下面的命令對所有在上一個2 4小時內修改過的檔案進行存檔:

  $find /home -mtime 1 -type f -print | cpio -o > /dev/st0

  copy - in模式把檔案從備份存檔中解出來。下面的命令會恢復前兩個備份例子中的所有檔案:

  $cpio -i < /dev/st0

  你也可以對cpio的備份進行計劃,用crontab工具設定成基於任何時間的有規律地執行。例如,要在每晚2點把/ home目錄備份到SCSI磁帶驅動器中,把下面的語句新增到root的crontab檔案中即可:

  00 02 * * * ls /home | cpio -o > /dev/st0

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617542/viewspace-962238/,如需轉載,請註明出處,否則將追究法律責任。