一、常用技巧 1,在linux中設置環境變數的方法: 如果命令在環境變數已經設置的路徑下,在終端命令行輸入該命令的文件名和參數(如需要參數),回車即可。如果不在已設路徑下,命令前需要加上完整的路徑。每次都這樣會很麻煩,一個「一勞永逸」的辦法是把一些常用命令的路徑加入環境變數。有三種方法可以設置環境變數: 使用以下命令可以把這些路徑加入環境變數,但是退出這個命令行就會失效: #export PATH=".:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin" #source .bashrc(有些命令即便能調用,也不會出現任何信息,或者要輸入root密碼的,說明要以超級用戶許可權運行) 修改profile文件,可永久生效。有兩個文件可選:「/etc/profile」和用戶主目錄下的「.bash_profile」,「/etc/profile」對系統里所有用戶有效,用戶主目錄下的「.bash_profile」只對這個用戶有效。 profile文件中「PATH=$PATH:$HOME/bin」這一行是設置環境變數路徑的,「$PATH」表示原先設定的路徑仍然有效,注意不要漏掉,某些軟體可能還有「PATH」以外類型的環境變數需要添加,但方法與此相同,並且也需要注意「$」。可在此行後面加入需要設置的路徑,如:「PATH=$PATH:$HOME/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin」,當用戶輸入一個命令並回車后,shell會依次在這些路徑里找對應的可執行文件並交給系統核心執行。 修改用戶主目錄下的「.bashrc」文件,可永久生效。 在裡面加入「PATH=".:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin」 注意,與DOS/Window不同,UNIX類系統環境變數中路徑名用冒號分隔,不是分號。另外,軟體越裝越多,環境變數越添越多,為了避免造成混亂,建議所有語句都添加在文件結尾,按軟體的安裝順序添加。格式如下: # 軟體名-版本號 PATH=$PATH:路徑1:路徑2:...:路徑n 其他環境變數=$其他環境變數:... 在「profile」和「.bash_profile」中,「#」是註釋符號,寫在這裡除了視覺分隔外沒有任何效果。 設置完畢,註銷並重新登錄,設置就生效了。如果不註銷,直接在shell里執行這些語句,也能生效,但是作用範圍只限於執行了這些語句的shell。 相關的環境變數生效后,就不必總是到軟體的可執行文件目錄里去操作了。設置完成後,可用「echo $PATH」命令進行驗證。 2,虛擬控制台與運行級別: 在虛擬控制台下(TUI),可以使用Alt+F1到Alt+F6在多個虛擬控制台間切換;在圖形界面下,可以使用Ctrl+Alt+F1到Ctrl+Alt+F6切換到虛擬控制台,Ctrl+Alt+F7可切換到圖形界面下。系統任何時候都運行在一個指定的運行級別上,系統的關機、重啟等動作實際上是運行級別間的切換,單用戶時可以直接用「init x」進行關機和重啟。 運行級別 說明 0 所有進程將被終止,機器將有序地停機,關機時處於此級別 1 單用戶模式,用於系統維護,只有少量進程運行,所有的服務也不啟動 2 多用戶模式,只比「3」少啟動NFS服務 3 多用戶模式,允許多用戶登錄,是系統默認的級別 4 留給用戶自定義的級別 5 多用戶模式,並在啟動后運行X-windows,給出一個GUI 6 所有進程被終止,系統重啟 #init 級別數 (切換系統的運行級別為「級別數」) #runlevel (查看系統當前運行級別) 3,設置系統默認運行級別: #vi /ect/inittab (將「id:5:initdefault:」中的「5」改為需要的運行級別代碼) 4,關機與重啟: #halt (系統關機) #reboot (系統重啟) 在多用戶環境中,通常使用「shutdown」命令關機或重啟系統,它能夠以一種比較安全的方式來關閉系統,所有登錄的用戶將被通知,新的登錄將被阻止,同時所有進程也將被通知。 #shutdown 選項 -t sec (等待sec秒后關機) -k (並不真的關機,只是給每個用戶發送警告信息) -r (關閉之後重啟系統) -h (關閉之後停滯系統) -f (重啟后不用fsck檢查磁碟) -F (重啟后強制用fsck檢查磁碟) Time (設置系統關閉的時間,後面加上時間,格式為hh:mm) Warning-message (發給用戶的警告信息) #shutdown -r +5 "system will be reboot 5 minnites,please save your work."(5分鐘后重啟,並對登錄的用戶發出警告) #shutdown -r now(立即重啟) #shutdown -h now(立即關機) #shutdown -t 60(60秒后關機) #shutdown -k(僅發出警告,假關機) 5,linux下清屏命令 #clear (或Ctrl+l) 二、網路命令 1,ifconfig命令 ifconfig可設置網路設備的狀態,或是顯示目前的設置。 #ifconfig [網路設備] [down|up|-allmulti|-arp|-promisc] [add<地址>] [del<地址>] [<網路設備類型> <硬體地址>] [io_addr] [irq ] [media<網路媒介類型>] [mem_start<內存地址>] [metric<數目>] [mtu<位元組>] [netmask<子網掩碼>] [tunnel<地址>] [-broadcast<地址>] [- pointopoint<地址>] [IP地址] add<地址> 設置網路設備IPv6的IP地址。 del<地址> 刪除網路設備IPv6的IP地址。 down 關閉指定的網路設備。 <網路設備類型><硬體地址> 設置網路設備的類型與硬體地址 #ifconfig eth0 hw ether XX:XX:XX:XX:XX:XX(更改eth0的mac地址) io_addr 設置網路設備的I/O地址。 irq 設置網路設備的IRQ。 media<網路媒介類型> 設置網路設備的媒介類型。 mem_start<內存地址> 設置網路設備在主內存所佔用的起始地址。 metric<數目> 指定在計算數據包的轉送次數時,所要加上的數目。 mtu<位元組> 設置網路設備的MTU。 netmask<子網掩碼> 設置網路設備的子網掩碼。 tunnel<地址> 建立IPv4與IPv6之間的隧道通信地址。 up 啟動指定的網路設備。 -broadcast<地址> 將要送往指定地址的數據包當成廣播數據包來處理。 -pointopoint<地址> 與指定地址的網路設備建立直接連線,此模式具有保密功能。 -promisc 關閉或啟動指定網路設備的混雜(promiscuous)模式。 [IP地址] 指定網路設備的IP地址。 [網路設備] 指定網路設備的名稱。 使用ifconfig和route命令更改IP設置: #ifconfig eth0 down (關閉eth0) #ifconfig eth0 hw ether XX:XX:XX:XX:XX:XX(臨時更改eth0的mac地址,即時生效) #ifconfig eth0 192.168.161.9 netmask 255.255.252.0 up (臨時設置IP地址,子網掩碼,即時生效) #route add default gw 192.168.162.1 (臨時設置網關,即時生效) #vi /etc/sysconfig/network-scripts/ifcfg-eth0 (編輯配置文件,永久更改IP設置,重啟生效) #vi /etc/resolv.conf (編輯配置文件,設置DNS) #ifconfig eth0 promisc (將eth0設置為混雜模式) #ifconfig eth0 -promisc (取消混雜模式) #ifconfig eth0 arp (打開eth0的arp解析) #ifconfig eth0 -arp (關閉arp解析) #ifconfig eth0:1 192.168.1.1 netmask 255.255.255.0 #ifconfig eth0:2 192.168.1.2 netmask 255.255.255.0 (一塊網卡設置兩個地址) 2,route命令 # route [-n|ee] (顯示內核路由表) # route add [-net|-host] 目?酥?C或?域 [netmask] 目標掩碼 [gw|dev] (添加一條路由) # route del [-net|-host] 目?酥?C或?域 [netmask] 目標掩碼 [gw|dev] (刪除一條路由) -n (以IP地址的形式顯示路由表) -ee (以較長的形式顯示路由表) add (增加一條路由) del (刪除一條路由) -net (操作一條到網路的路由) -host (操作一條到主機的路由) netmask (子網掩碼) default (即「-net 0.0.0.0 netmask 0.0.0.0」) gw (網關,即gateway,需要以IP地址的形式給出) dev (網關,即device,需要以設備名的形式給出) # route -ee Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface MSS Window irtt 192.168.9.2 * 255.255.255.255 UH 0 0 0 ppp0 0 0 0 192.168.122.0 * 255.255.255.0 U 0 0 0 virbr0 0 0 0 192.168.160.0 * 255.255.252.0 U 0 0 0 eth0 0 0 0 default * 0.0.0.0 U 0 0 0 ppp0 0 0 0 路由表中各欄位含義 Destination (目標地址) Gateway (網關的主機名或IP地址,*表示目標網路與主機在同一子網內,即直連路由,不需要網關) Genmask (目標地址的網路掩碼) Flags (表示路由的標誌,有以下幾種) U (route is up):路由已經啟動 H (target is a host):目標是一台主機 G (use gateway):使用網關 R (reinstate route for dynamic routing):對動態路由進行複位設置 D (dynamically installed by daemon or redirect):已經由服務或轉port功能設置為動態路由 M (modified from routing daemon or redirect):路由已?被修改 ! (reject route):拒絕路由,用來抵擋不安全的網路 Metric (路由的單位開銷量,即到達指定網路所需的跳數) Ref (對這個路由的引用次數) Use (表示路由表條目被使用的次數) Iface (即interface,表示數據應發往哪個介面) 使用route命令添加的路由條目,在重啟後會失效。如果需要添加永久路由,可以將route add ...語句添加到以下文件里: 1.在/etc/rc.local里添加 2.在/etc/sysconfig/network里添加到末尾 開啟IP轉發: # echo "1" >/proc/sys/net/ipv4/ip_forward (臨時) # vi /etc/sysctl.conf --> net.ipv4.ip_forward=1 (永久開啟) 3,netstat命令: netstat命令用於顯示網路連接、路由表和網路介面信息,用戶可以知道目前有哪些網路連接正在運行。 #netstat <選項> -a (顯示所有的socket,包括正在監聽的) -c (每隔一秒就刷新一遍,直到中斷) -i (顯示所有網路介面的信息) -n (以IP代替名稱,顯示網路連接信息) -r (顯示核心路由表) -t (顯示tcp協議的連接信息) -u (顯示udp協議的連接信息) -v (顯示正在進行的網路協議) 三、文件系統管理 1,查看文件系統: (1)df命令 df命令用於檢查文件系統的磁碟空間佔用情況。可以獲取硬碟被佔用了多少空間,目前還剩下多少空間等信息。 #df 選項 -a, --all (顯示所有文件系統的使用情況,包括虛擬文件系統) include dummy file systems -B, --block-size=SIZE (使用位元組大小塊) use SIZE-byte blocks -h, --human-readable (以人們可讀的形式顯示大小) print sizes in human readable format (e.g., 1K 234M 2G) -H, --si (同-h,但是強制使用1000而不是1024) likewise, but use powers of 1000 not 1024 -i, --inodes (列出inode信息,代替塊用法) list inode information instead of block usage -k (類似--block-size=1k) like --block-size=1K -l, --local (只列出本地文件系統) limit listing to local file systems --no-sync (在獲取使用信息前不調用sync) do not invoke sync before getting usage info (default) -P, --portability (使用POSIX輸出格式) use the POSIX output format --sync (在獲取使用信息前調用sync) invoke sync before getting usage info -t, --type=TYPE (只列出指定類型的文件系統) limit listing to file systems of type TYPE -T, --print-type (顯示文件系統類型) print file system type -x, --exclude-type=TYPE (只列出不是指定類型的文件系統) limit listing to file systems not of type TYPE (2)fdisk命令 fdisk命令用於查看硬碟及分區的詳細信息,如磁頭、柱面、扇區、磁軌等。 #fdisk [-b SSZ] [-u] DISK (改變分區表) Change partition table #fdisk -l [-b SSZ] [-u] DISK (列出分區表)List partition table(s) #fdisk -s PARTITION (給出分區大小,以block為單位)Give partition size(s) in blocks 這裡的DISK是一些像/dev/sda或/dev/hdb的設備,分區是一些像/dev/hday的設備 Here DISK is something like /dev/hdb or /dev/sda and PARTITION is something like /dev/hda7 -u (給出開始和結束扇單元,代替柱面)give Start and End in sector (instead of cylinder) units -b 2048 (確定操作使用2048位元組扇區的磁碟) (for certain MO disks) use 2048-byte sectors 2,創建文件系統: #mkfs <參數> <設備名> -t fstype (指定要創建的文件系統的類型) -c (查找壞塊,初始化壞塊列表) #mkfs -t ext3 /dev/sdb2 (在b串口硬碟的第2個分區上創建ext3類型的文件系統) #mkfs -t vfat /dev/sda1(在a串口硬碟的第1個分區上創建fat32類型的文件系統) 3,掛裝其它存儲設備: #mount [<參數>|<設備名>|<掛裝點>] -t fstype (指定要掛裝的文件系統的類型,如果不知道可以用-t auto參數讓系統自行判斷) -r (如果不想修改要掛裝的文件系統,可以使用此參數,以只讀方式掛起) -w (以可寫的方式掛裝文件系統) -o (用於指定選項,如只讀為ro,讀寫為rw) -a (安裝所有的文件系統) #mount -t vfat /dev/sdb1 /mnt/ude(將/dev/sdb1掛載到/mnt/ude) fedora8可直接識別NTFS,FAT32格式的文件系統,系統默認掛裝在「/media」下 掛裝ntfs格式分區 #mount -t ntfs-3g 設備名 掛裝點 掛裝ISO文件 #mount -t iso9660 -o loop 文件名 掛裝點 如果想製作ISO文件,把光碟放到光碟機中,然後執行如下的拷貝命令就可以把光碟上的內容拷貝到一個ISO文件中去。 #cp /dev/cdrom *.iso 4,卸載掛裝的文件系統: #umount <設備名或掛裝點> #umount /dev/cdrom (將/dev/cdrom上掛裝的文件系統卸載) 5,查看目錄或文件屬性: #ls 參數 (=dos下「dir」命令) -a 列出所有文件,包括以「.」開頭的隱藏文件; -A 列出除「.」和「..」外的所有文件; -B 不輸出以「~」結尾的備份文件; -C 按列輸出,縱向排序; -c 輸出文件的i節點的修改時間,並以此排序; -d 將目錄像文件一樣顯示,而不是顯示其下的文件; -F 在文件后以符號說明文件類型,*為可執行文件; -G 輸出文件的組信息; -h 列出文件實際大小 -i 輸出文件的i節點的索引信息; -l 列出文件詳細信息,可用「ll」命令代替; -m 橫向輸出文件名,以「,」分開; -n 用數字的UID,GID代替名稱; -o 顯示除組外的詳細信息; -Q 把文件名用雙引號括起; -R 列出所有子目錄下的文件; -s 在文件后輸出文件大小; -S 以文件大小排序; -t 以時間排序; -u 以上次被訪問的時間排序; -x 按列輸出,橫向排序; -X 以文件的擴展名排序; -1 一行只輸出一個文件; --color 不顯示彩色文件名; 6,刪除文件或目錄: #rm [參數] 文件名目錄名 -f (強制刪除) -r (遞歸地刪除) #rm -rf /temp (強制刪除/temp及其下所有文件) 7,新建目錄: #mkdir 目錄名 8,刪除目錄: #rmdir 目錄名 (rmdir命令只能刪除空目錄) 創建鏈接文件:ln -s(表示符號鏈接) /路徑/源文件 /路徑/鏈接文件.ln;(「鏈接文件」類似win中的「快捷方式」) 9,改變路徑: #cd 絕對或相對路徑 10,創建鏈接文件: linux中的鏈接文件類似windows中的快捷方式。鏈接文件可部分代替原文件的功能,且對鏈接文件進行修改,可自動更新到源文件中。 #ln -s 源文件 目標文件 (-s表示創建的是符號鏈接) #ln -s /test/file /test1/file.ln (為file文件創建鏈接文件file.ln) 11,複製文件: #cp [參數] 源文件 目標文件 -f (強制覆蓋已經存在的目標文件) -r (遞歸地連同子目錄一起copy) 12,移動文件: #mv 源文件 目標文件 mv命令類似於windows中的剪切,不同之處在於它帶有將文件改名的功能。 13,顯示文件內容: #cat 文件名 cat命令可以將文件內容顯示出來,也可以將文件內容合併后輸出。它不支持分而顯示,如果文件較長,只能看到最後一頁。 #cat file1 file2> file3 (將file1和file2連接起來並輸出到file3) 14,分頁顯示文件內容: #more [+「num」or「str」] 文件名 more命令可以分頁顯示文件內容,+參數后可跟行號或字元串,+行號表示從指定行開始顯示,+字元串表示從指定字元串處開始顯示。 #more +abc /etc/rpc (從字元串「abc」開始分頁顯示/etc/rpc文件的內容) 三、用戶和組群管理 1,linux下的帳戶系統文件 linux系統中,用戶和組的相關係統都保存在用戶和組資料庫文件中,主要有「/etc/passwd」、「/etc/shadow」、「/etc/group」和「/etc/gshadow」四個文件。 (1),用戶帳號文件-passwd /etc/passwd文件也稱為密碼文件,是於基本的用戶資料庫文件,它列出了所有有效用戶的相關信息。passwd文件需要能夠被所有用戶訪問。該文件內每個用戶佔一行,被分為7個欄位: (1) 用戶名; (2) 密碼,採用加密形式; (3) UID; (4) GID; (5) 帳號信息,也叫GECOS。 (6) 用戶主目錄; (7) 登錄shell。 /etc/passwd中UID很重要,系統使用UID而不是用戶名來區別用戶。0-99為系統UID,如果passwd文件中有兩個不同用戶具有相同的UID,則這兩個用戶對相互的文件具有相同的存取許可權。 /etc/passwd文件格式可以使root能夠要求用戶定期修改他們的口令。passwd文件中,有些加密口令項中有「,」號,「,」號后字元的意義為: (1)第一個字元,口令有效期的最大周數, (2)第二個字元,再次修改口令前原口令需使用的最小周數, (3)其餘字元表示口令最新修改時間。 steve:xyDfccTrt180x,M.y8:0:0:admin:/:/bin/sh pat:xmotTVoyumjls:0:0:admin:/:/bin/sh 口令中「,」后字元是根據passwd_esc計數器計算的,計算的方法為: :=0 /=1 0~9=2~11 A~Z=12=37 a~z=38~63 root需要將前兩個字元放進/etc/passwd文件中,以要求用戶定期修改口令,另外兩個字元在用戶修改口令時由passwd自動寫入。可在「,」后加入「..」,使用戶在下次登錄時必須修改口令。有兩種特殊情況: (1)第一字元小於第二字元,則不允許用戶修改口令,僅root可以修改; (2)前兩個字元都是「.」,用戶下次登錄時將被要求修改口令,修改後passwd命令將「.」刪除,以後不再要求用戶修改口令。 (2),用戶口令文件-shadow 在影子口令機制中,加過密的口令數據項被從passwd文件中轉移到shadow文件中,passwd文件仍然可以被系統上所有用戶訪問,shadow文件只能被具有root許可權的用戶訪問。shadow文件包含著口令失效期和帳號是否被禁用等信息,分為9個欄位: (1) 用戶名; (2) 加過密的口令。如果為空則登錄時不需要口令,如果含有不屬於口令集{.,/,0-9,A-Z,a-z}中的字元,則對應的用戶不能登錄; (3) 從1970年1月1日起計算,到用戶最後一次修改口令時的天數(時間起點會因系統不同而不同); (4) 兩次修改口令之間所需的最小天數,即一次修改後需要再過多少天才能修改這個口令; (5) 口令保持有效的最大天數,即一次修改後需要再過多少天這個口令必須被修改; (6) 警告天數,需要在這個口令失效前多少天對用戶發出警告; (7) 口令失效后多少天禁用此帳號,另外的解釋是用戶沒有登錄活動但帳號仍能保持有效的天數; (8) 從1970年1月1日起計算,該口令已經被禁用多少天,另外的解釋是帳號從設置開始可使用的天數; (9) 保留。 (3),用戶組帳號文件-group 每個用戶至少會屬於一個分組,也就是他預設的用戶分組。在需要的情況下,用戶還可以分配到其他分組中去。group文件也需要能夠被所有用戶訪問,因為這樣應用程序才能測試用戶與分組之間的關聯性。分組名不允許超過8個字元,每個分組ID也必須是唯一的。/etc/group包含著每個每個用戶預設的分組ID(GID),分為4個欄位: (1) 分組名; (2) 加過密的分組口令; (3) GID; (4) 以「,」分隔的分組成員清單 (4),使用vipw和vigr命令編輯用戶帳號文件和組帳號文件 vipw或vigr啟動vi編輯器打開文件的一個副本,每次只允許一個人編輯passwd或group文件,可以防止用戶在passwd文件被編輯的時候修改他們的口令。當編輯結束時,用副本代替原文件。可以使用「vipw -s」給shadow文件加入對應的項。 (5),使用pwck和grpck驗證用戶和組帳號文件 pwck命令檢查密碼文件passwd和shadow的完整性,以確認文件中的信息都有正確的格式、各數據域有合法的信息。對於不正確的信息建議用戶刪除。 grpck命令檢查group和gshadow文件的完整性,以確認文件中的信息都有正確的格式、各數據域有合法的信息。 2,用戶帳號維護命令 (1),useradd命令 #useradd [參數] 用戶名 useradd命令允許一次添加一個用戶到系統中,如果命令中不定義參數,則使用各參數的默認值,可以使用「useradd-D」命令查看各參數的默認值。 -c 其他信息 (在GECOS域中設置用戶全名,與其它參數一樣,如果設置值中間有空格,必須在兩端加上引號) -d 主目錄 (預設情況下,用戶主目錄被定義為/home/用戶名,此參數可以改變主目錄) -e 失效日期 (預設情況下,帳號永不失效,此參數可以設置用戶失效日期,日期格式為MM/DD/YY,2000年用00表示) -f 天數 (此參數定義口令失效后該帳號還能夠使用的天數,0表示立刻禁用,-1表示永不禁用,預設值為-1) -g 分組名或GID (此參數定義用戶的預設分組,後面可以跟分組名或GID,但分組必須已經在group文件中定義) -G 分組名或GID (此參數把用戶添加到其他的分組中去,可用「,」分隔,定義多個分組) -M (不建立用戶登錄子目錄) -n (redhat把建立一個與新用戶同名的分組做為用戶添加工作的一部分,此參數禁止這種行為) -s shell路徑 (此參數可定義用戶的登錄shell,預設為/bin/bash) -u UID (預設情況下,程序會自動找出一個可用的UID分配給新用戶,此參數可將指定UID分配給新用戶) #useradd -c "H.D.core" -g admin -G sopport,root -s /bin/tcsh hdc (添加一個名為hdc的用戶,命名為H.D.cor,預設分組為admin並屬於sopport和root組,登錄shell為/bin/tcsh) (2),usermod命令 #usermod [參數] 用戶名 usermod命令允許修改現有用戶的信息,它的工作原理與useradd類似,參數作用相同。在使用-l和-u參數時應注意,必須確認被修改的用戶當前沒有登錄上機或運行任何程序,否則會引起不便。 -l 新用戶名 (此參數可修改現有用戶的登錄名) (3),userdel命令 #userdel [-r] 用戶名 userdel命令可刪除現有用戶,此命令只有-r一個可選參數。在不加參數時,將只刪除passwd、shadow和group中關於此用戶的項目,加-r參數將遞歸地刪除以上項目和登錄子目錄中該用戶的所有文件。 3,組帳號維護命令: (1),groupadd命令 對於用戶分組進行操作的命令類似於對用戶進行操作的命令,但他們並不作用於單個用戶,而是作用於/etc/group文件中列出的分組。改變分組並不會改變該分組中用戶的屬性。 #groupadd [參數] 分組名 -g GID (指定新分組的GID,預設情況下系統會把GID指定為找到的第一個可用值) -r (預設情況下,系統會自動搜索第一個大於499的GID值,此參數告groupadd命令這個一個系統分組,需要使用第一個小於499的可用值) -f (在添加新分組時,如果該分組已經存在,命令會自動退出執行,使用此參數,在退出執行前不會修改分組的設置值) #groupadd -g 800 test (添加一個GID為800,名為test的分組) (2),groupmod命令 groupmod命令可以修改某個現有分組的屬性。 #groupmod [參數] 分組名 -g 新GID (改變現有分組的GID為新GID) -n 新組名 (改變現有分組的分組名為新組名) #group -g 1000 -n new test (將test分組的GID和分組名分別改為1000和new) (3),groupdel命令 #groupdel 分組名 (刪除指定分組,此命令沒有可選參數) 4,口令維護命令 (1),passwd命令 root可以使用passwd命令修改任何用戶的口令。passwd會提示用戶輸入一個新口令,並需要重複輸入一次,如果輸入的口令過於簡單,passwd會發出抱怨,要求用戶使用複雜一些的口令。 #passwd [參數] 用戶名 -k或--keep-token (保持沒有到期認證的令牌) -d或--delete (從指定的用戶名刪除口令,root only) -l或--lock (鎖住指定的用戶名,root only) -u或--unlock (解鎖指定的用戶名,root only) -f或--force (強制操作) -x或--maximum=DAYs (最大密碼生存天數,root only) -n或--minimum=DAYs (最小密碼生存天數,root only) -w或--warning=DAYs (密碼失效前對用戶發出警告的天數,root only) -i或--inactive=DAYs (密碼失效后多少天禁用此帳戶,root only) -S或--status (報告指定帳戶的口令狀態,root only) --stdin (從stdin讀取新的令牌,root only) --usage (顯示簡短的使用信息) (2),gpasswd命令 類似於passwd命令,root可用gpasswd修改任何組的口令。 #gpasswd 分組名 (3),chfn命令 chfn用來改變finger信息,該信息是存放在/etc/passwd檔內的GECOS信息,可使用finger命令來顯示。linux的finger顯示4段信息:真實姓名、工作地點、辦電和宅電。 #chfn [參數] [用戶名] -f 姓名 (改變指定用戶的姓名) -o office (改變指定用戶的工作地) -p phone (改變指定用戶的辦電) -h homephone (改變指定用戶的宅電) (4),chsh命令 chsh用來改變用戶的登錄shell,如果在命令列沒有指定shell,chsh會提示一個有效shell給用戶。 #chsh [參數] [用戶名] -s (更改指定用戶的登錄shell) -l (列出記錄在/etc/shells文件中的shell) 5,用戶和組狀態命令 (1),id命令 id命令用於顯示指定用戶的實際ID和有效ID。 #id [參數] [用戶名] -a (忽略,用於兼容其他版本) -g (只顯示有效{effective}GID) -G (顯示所有GID) -n (顯示用戶名而不是數字,不可單獨使用) -r (顯示實際ID而不是有效ID) -u (只顯示有效UID) (2),whoami命令 whoami命令用於查看當前用戶名。 (3),su命令 使用su命令可以從當前用戶切換為其他用戶,如不加用戶名,則切換為root用戶。出於安全的考慮,系統一般禁止root從除系統控制台外的其他方式登錄,以root身分登錄一般使用su命令。從root切換到其他用戶時不需要輸入口令。su不記錄以root身份做了什麼,它會創建一條日誌說明誰在什麼時候變成了root。 #su [參數] [用戶名] -,-l,--login (類似重登錄為新用戶,以新用戶改變環境變數及登錄目錄) -c 命令(變為新用戶,執行一條「命令」后再變回原用戶) -f(不讀取啟動文件,如「csh,cshre」等,僅用於csh或tcsh兩種shell) -m,-p(不改變環境變數) (4),groups命令 groups命令用來顯示指定用戶的屬組。 #groups 用戶名 6,臨時禁用帳號 在不刪除帳號的情況下臨時禁用它,可以先編輯tail腳本,然後將該帳號的登錄shell改為此腳本,此腳本需設置可執行位。 #mkdir /usr/local/lib/no-login/ (建立no-login目錄) #vi /usr/local/lib/no-login/deny (建立deny文件,加入以下內容) #!/usr/bin/tail +2 (#!表示該行是一條命令,需要執行,+2表示顯示第2行以後的內容) This account has been closed! Please call 13995096098. #chomd 755 /usr/local/lib/no-login/deny (給deny文件添加可執行位) #chsh -s /usr/local/lib/no-login/deny 用戶名 (改變需要禁用的帳號的登錄shell為deny) 四、許可權與文件系統安全 1,「ls -l」命令輸出結果中各欄位含義: (1),文件類型,第1位(「-」普通文件、「d」目錄文件、「l」符號鏈接文件、「b」快設備文件、「c」字元設備文件、「p」管道文件、「s」socket文件) (2),許可權,第2至10位(9個字母分成3組,3個一組,分別代表「屬主許可權」、「屬組許可權」、「其他許可權」,「-」表示沒有許可權) (3),i-node,硬連接數(表示佔用 i-node數。i-node是文件內容的真實表達,而filename是inode上層的表示方法。因此,每個文件名只能對應一個i-node,一個i-node可以對應多個文件名) (4),文件屬主 (5),文件屬組 (6),文件大小 (7),創建時間 (8),文件名 2,UNIX下關於文件許可權的表示方法和解析 在linux中,使用系統資源的人分為4類:超級用戶、文件屬主、屬主同組、其他。超級用戶具有操作系統的一切許可權,不需要指定許可權,其他三類都需要指定許可權。UNIX下可以用ls -l 命令來看到文件的許可權。用ls命令所得到的表示法的格式是類似這樣的:-rwxr-xr-x 。下面解析一下格式所表示的意思。這種表示方法一共有十位: 1 2 3 4 5 6 7 8 9 10 - r w x r - x r - x 第1位表示文件類型,可以為p、d、l、s、c、b和-: p表示命名管道文件 d表示目錄文件 -表示普通文件 s表示socket文件 c表示字元設備文件 b表示塊設備文件 l表示符號連接文件 第2-4位、5-7位、8-10位分別表示文件所有者的許可權,同組用戶的許可權,其他用戶的許可權,其形式為rwx: r:可讀,文件可讀其內容,目錄可列出基下文件 w:可寫,文件可修改內容,目錄創建、刪除文件 x:可執行,文件可執行,目錄可進入 s:suid(第4位)或sgid(第7位)與可執行許可權均被設置 S:suid(第4位)或sgid(第7位)被設置,可執行許可權沒有設置 t:sticky(粘著位)與可執行許可權被設置 T:sticky(粘著位)被設置,可執行許可權沒有設置 -:沒有許可權 例子:ls -l myfile顯示為: -rwxr-x--- 1 foo staff 7734 Apr 05 17:07 myfile 表示文件myfile是普通文件,所有者foo對文件有讀寫執行許可權,staff組的成員對文件有讀和執行許可權,其他的用戶對這個文件沒有許可權,1個硬連接,文件的所有者是foo用戶,而foo用戶屬於staff組,文件只有1個硬連接,長度是7734個位元組,最後修改時間4月5日17:07。 如果一個文件被設置了SUID或SGID位,會分別表現在所有者或同組用戶的許可權的可執行位上,設置了sticky位,會表現在其他用戶的可執行位上,例如: 1、-rwsr-xr-x 表示SUID和所有者可執行被設置 2、-rwSr--r-- 表示SUID被設置,所有者可執行沒有被設置 3、-rwxr-sr-x 表示SGID和同組用戶可執行被設置 4、-rw-r-Sr-- 表示SGID被設置,同組用戶可執行沒有被設置 5、-rwxr-xr-t 表示sticky和其他用戶可執行被設置 6、-rwxr--r-T 表示sticky被設置,其他用戶可執行沒有被設置 其實在UNIX的實現中,文件許可權用12個二進位位表示,如果該位上的值是1表示有相應的許可權,值為0表示沒有此許可權。 11 10 9 8 7 6 5 4 3 2 1 0 S G T r w x r w x r w x 第11位為SUID位,第10位為SGID位,第9位為sticky位,第8-6為所有者位,第5-3位為所屬組許可權,第2-0位為其他用戶許可權。上面的「-rwsr-xr-x」的值為: 1 0 0 1 1 1 1 0 1 1 0 1,「-rw-r-Sr--」的值為: 0 1 0 1 1 0 1 0 0 1 0 0。 在查找文件時可以用文件許可權的8進位代號來查找,將以上12位2進位數轉換為8進位即可。例如,設置SUID位的文件為「100,000,000,000(2進位)=4000(8進位)」,設置SUID與SGID的文件為「110,000,000,000(2進位)=6000(8進位) 」,查找命令為「find / -perm -4000 -type f -ls」 3,使用「chmod」命令改變文件許可權 文字設定法 #chmod [ugoa] [+-=] [rwxugosStT] <文件名> u表示屬主,g表示屬組,o表示其他,a表示所有 +表示增加許可權,-表示刪除許可權,=表示分配新許可權的同時將原有許可權刪除 r表示可讀,w表示可寫,x表示可執行,ugo表示與該字母代表的用戶有相同許可權,s與S表示suid或sgid,t與T表示sticky 數字設定法 chmod [xxxx] <文件名> 其中「xxxx」是由表示文件許可權的12位二進位數換算的4位八進位數 4,特殊許可權的作用: SUID是Set User ID, SGID是Set Group ID的意思。當用戶運行一個應用程序時,此程序將繼承運行它的用戶的許可權,而不是繼承它所屬用戶的許可權。設置了SETUID與SETGID的程序將繼承它所屬用戶的許可權,而不受運行它的用戶許可權的限制。 由於SUID和SGID是在執行程序(程序的可執行位被設置)時起作用,而可執行位只對普通文件和目錄文件有意義,所以設置其他種類文件的SUID和SGID位是沒有多大意義的。 首先講普通文件的SUID和SGID的作用,如果普通文件myfile是屬於foo用戶的,是可執行的,現在沒設SUID位,ls命令顯示為「-rwxr-xr-x 1 foo staff 7734 Apr 05 17:07 myfile」,任何用戶都可以執行這個程序。UNIX的內核是根據什麼來確定一個進程對資源的訪問許可權的呢?是這個進程的運行用戶的(有效)ID,包括 user id和group id。用戶可以用id命令來查到自己的或其他用戶的user id和group id。除了一般的user id 和group id外,還有兩個稱之為effective 的id,就是有效id,上面的四個id表示為:uid,gid,euid,egid。內核主要是根據euid和egid來確定進程對資源的訪問許可權。一個進程如果沒有SUID或SGID位,則euid=uid egid=gid,分別是運行這個程序的用戶的uid和gid。例如kevin用戶的uid和gid分別為204和202,foo用戶的uid和gid為 200,201,kevin運行myfile程序形成的進程的euid=uid=204,egid=gid=202,內核根據這些值來判斷進程對資源訪問的限制,其實就是kevin用戶對資源訪問的許可權,和foo沒關係。 如果一個程序設置了SUID,則euid和egid變成被運行的程序的所有者的uid和gid,例如kevin用戶運行myfile,euid=200,egid=201,uid=204,gid=202,則這個進程具有它的屬主foo的資源訪問許可權。 SUID的作用就是這樣:讓本來沒有相應許可權的用戶運行這個程序時,可以訪問他沒有許可權訪問的資源。passwd就是一個很鮮明的例子。SUID的優先順序比SGID高,當一個可執行程序設置了SUID,則SGID會自動變成相應的egid。 SGID。UNIX系統有一個/dev/kmem的設備文件,是一個字元設備文件,裡面存儲了核心程序要訪問的數據,包括用戶的口令。所以這個文件不能給一般的用戶讀寫,許可權設為「cr--r----- 1 root system 2, 1 May 25 1998 kmem」,但ps等程序要讀這個文件,而ps的許可權設置如為「-r-xr-sr-x 1 bin system 59346 Apr 05 1998 ps」,這是一個設置了SGID的程序,而ps的屬主是bin,不是root,所以不能設置SUID來訪問kmem,但大家注意了,bin和root都屬於 system組,而且ps設置了SGID,一般用戶執行ps,就會獲得system組用戶的許可權,而文件kmem的同組用戶的許可權是可讀,所以一般用戶執行ps就沒問題了。但有些人說,為什麼不把ps程序設置為root用戶的程序,然後設置SUID位,不也行嗎?這的確可以解決問題,但實際中為什麼不這樣做呢?因為SGID的風險比SUID小得多,所以出於系統安全的考慮,應該盡量用SGID代替SUID的程序。下面來說明一下SGID對目錄的影響。SUID對目錄沒有影響。如果一個目錄設置了SGID位,那麼如果任何一個用戶對這個目錄有寫許可權的話,他在這個目錄所建立的文件的組都會自動轉為這個目錄的屬主所在的組,而文件所有者不變,還是屬於建立這個文件的用戶。 sticky許可權打開后,僅允許文件屬主刪除及移動該文件。 5,使用umask命令設置許可權掩碼: 該命令可為用戶帳號中新建文件設置預設用戶許可權。許可權掩碼由4位8進位數組成,第一位為精度位(0),其他三位分別表示屬主、屬組、其他的許可權。將現有的許可權減去掩碼后,即是建立文件時默認的許可權。使用「umask -S」命令查看各用戶的默認許可權。 例:將許可權掩碼設置為「077」,則只有屬主具有「rwx」許可權,其它用戶沒有任何許可權 # umask 077 # umask -S u=rwx,g=,o= 6,用chgrp命令改變文件屬組: chgrp命令用來改變指定文件的屬組,指定的文件名支持通配符,如果用戶不是該文件的屬主或root,則不能更改。 #chgrp [參數] 組名或組ID 文件名 -R 表示遞歸地改變其下子目錄和文件的屬組 7,用chown命令改變文件屬主和屬組: #chown [-R] <新屬主[.新屬組]> <文件名> -R 表示遞歸地改變基下子目錄和文件的屬性 -v 顯示chown所做的工作 五、軟體包管理 1,rpm包的名稱格式 rpm包的名稱格式為「name-version.type.rpm」,其中,name為軟體名稱,version為軟體版本,type為包的類型(i[3456]86表示在intel x86計算機上編譯的,sparc表示在sparc平台上編譯的,alpha表示在alpha平台上編譯的,src表示軟體源代碼),rpm為擴展名。 2,安裝rpm包 #rpm -ivh 包文件名 -i (表示安裝) -v (表示在安裝過程中顯示詳細信息) -h (表示顯示水平進度條) 如果某rpm包的同一版本已經被安裝,再次安裝時系統會拒絕並提示該包已經安裝,可以使用「--replacepkgs」參數來重新安裝已安裝過的rpm包。例如: #rpm -ivh --replacepkgs cvs-1.11-i386.rpm 可以使用「rpm -i url」的形式,從網路上安裝rpm包。注意:rpm目前已經允許通過ftp進行查詢或安裝 3,查詢rpm (1),查詢所有的rpm包 #rpm -qa [包文件名] (q=query) (2),查詢指定的rpm包在系統中是否安裝 #rpm -q 包文件名 (3),查詢rpm包文件中的信息,用於在未安裝前了解軟體包的信息 #rpm -qp [包文件名] (4),查詢系統中已安裝的軟體包的描述信息 #rpm -qi 包文件名 (5),查詢系統中已安裝的軟體包中包含的文件 #rpm -ql [包文件名] ql參數可以用於查找不明路徑的程序的真實路徑 #rpm -ql mplayer | cat -n (查找mplayer的安裝路徑) (6),查詢軟體包的最低依賴要求 #rpm -qR [包文件名] (7),查詢軟體包提供的可使用的所有文件 #rpm -q -provides [包文件名] (8),查詢系統中指定文件所屬的軟體包 #rpm -qf [文件名] 4,刪除rpm #rmp -e [包文件名] (e=erase) 5,升級rpm 升級實際上是「刪除」與「重新安裝」的組合,即先刪除舊的版本,再安裝新的版本,只是在升級過程中不顯示此操作。當系統沒有安裝軟體包時,升級操作也會安裝新的軟體包。 #rpm -Uvh [包文件名] 如果用戶試圖升級到舊的版本,系統會拒絕此操作,並提示新的版本已經安裝,可用以下命令強制升級到舊版本: #rpm -Uvh --oldpackage [包文件名] 6,刷新rpm 刷新操作會比較用戶指定的軟體包和已安裝的軟體包的版本。如果指定的包比已安裝的包版本更新,則升級到新版本。如果此包沒有安裝,刷新操作將不會安裝該軟體包,這與升級操作是不同的。此特性可用於升級一組軟體包時,當用戶下載了大量軟體包,但只想升級已經安裝在系統上的包,即可使用刷新命令,不必先刪除不需要安裝的包。 #rpm -Fvh 包文件名 使用下面的命令將只升級已經安裝的軟體包: #rpm -Fvh *.rpm 六、備份和壓縮 1,備份的策略: 完全備份。指每隔一段時間就對系統進行一次全面的備份,當數據丟失時可以恢復到前一次備份時的狀況。每次都需要備份所有的數據,工作量大,且在上次備份之後的數據不能被恢復。 增量備份(incremental)。首先進行一次完全備份,然後每天備份一次在這一天中更改的內容,當經過較長時間后再完全備份,之後重複以上過程。由於只有每個備份周期進行完全備份,其他只進行更新數據的備份,因此工作量小。恢復時首先恢復到前一個完全備份,然後再經過多次恢復到前一天的狀態,這種方法比較經濟。 差分備份(defferential)。首先進行一次完全備份,然後每天從上次完全備份后更改的全部數據,恢復時只需兩次就可以恢復到前一天的狀態。 2,使用tar命令打包: #tar [主選項+輔選項] 文件名 -f name (使用name指定存檔文件名或設備名) -v (列出處理的詳細信息) -c (用於創建一個新的存檔文件) -x (從存檔文件中恢復備份文件) -t (列出一個存檔文件中的文件名) -z (使用GNU的gzip壓縮文件或解壓) -Z (使用compress壓縮文件或解壓) -j (使用bzip2壓縮文件或解壓) -u (僅添加比存檔文件中更新的文件,即用新增的文件取代原備份文件,如果在備份文件中找不到要更新的文件,則把它追加到備份文件的最後) -C directory (表示操作的目錄為directory,可用「--directory directory」參數代替) -d (將歸檔文件的內容與系統上當前文件做比較) -M (創建/列出/恢復多?淮嫻滴募??員閽詡父霰阜萁櫓手寫娣? -N DATE (指定僅對那些比DATE新的文件進行操作) -p (保留文件許可許可權) -P (保留文件的絕對路徑,即不去掉「/」) -w (要求等待用戶確認每一步操作) -W (表示在寫入備份內容到備份設備以後再讀出來進行驗證以提高可靠性) -T filename (從指定的文件中讀取需要備份或恢復的文件名) -X filename (不處理給定文件中列出的文件) --exclude filename (操作不包括filename文件) 例(1),備份整個系統 #tar -zcvpf /archive/full-backup-`date '+%d-%B-%Y'`.tar.gz --directory / --exclude=mnt . z表示用gzip壓縮,c表示建立一個新的存檔文件,v表示顯示詳細處理信息,p表示保留許可權,f表示後面是存檔文件名或設備名,`date '+%d-%B-%Y'`可以在文件名中加入當前日期,.tar.gz為文件後綴名(表示用tar命令建立,用gzip壓縮),--directory /表示操作的目錄為「/」,--exclude=mnt表示不備份「mnt」,.表示備份當前目錄下所有內容。此命令將「/」下除「mnt」外的所有文件使用tar打包並用gzip壓縮備份為「full-backup-日-月-年.tar.gz」的存檔文件,並保留文件許可權。 例(2),備份指定文件到SCSI磁帶驅動器 #tar -cvpf /dev/nst0 --label="backup set created on `date '+%d-%B-%Y'`." --directory / etc home c表示建立一個新的存檔文件,v表示顯示詳細處理信息,p表示保留文件許可權,f表示後面是存檔文件名或設備名(因為磁帶驅動器是一個設備,不能用文件名表示,所以只能把「/dev/nst0」作為tar的參數),由於無法為存檔文件指定文件名,「--label」選項可以 在存檔文件里寫入一些信息,--direcoty / etc home表示要備份的目錄為「/etc」和「/home」,此命令將「/etc」和「/home」兩個目錄下的文件在「/dev/st0」上用tar打包為「backup set created on 日-月-年.」的文件,並保留文件許可權。 例(3),恢復備份文件 #tar -zxvpf /archive/full-backup-14-may-2008.tar.gz 此命令解開壓縮檔中的文件,同時保持了原來的屬性和許可權。z表示用gzip壓縮,x表示解包,v表示顯示得到的文件列表,p保持許可權,f表示後面是存檔文件名或設備名。此命令將存檔文件解包並釋放到當前目錄下,如果需要將文件釋放到指定目錄,可加參數「--dierctory 路徑」。 例(4),只解包「etc/passwd」和「usr/sbin/chpasswd」,並將他們釋放到當前目錄下。 #tar -zxvpf /archive/full-backup-14-may-2008.tar.gz etc/passwd usr/sbin/chpasswd 例(5),如果想只從檔案中恢復一個或幾個少量文件,需要先找到路徑和文件名。「| grep」表示將輸出結果重新定向到grep命令,「-i」表示忽略大小寫。此命令可顯示出路徑或文件名中包含「chpasswd」的所有文件,找到了路徑和文件名,就可以用上面的命令恢復指定的文件。 #tar -ztvpf /archive/full-backup-14-may-2008.tar.gz | grep -i chpasswd 說明:tar命令如不帶路徑參數,則會打包或解包到當前目錄下。 3,dump(轉儲命令)和restore(還原轉儲) dump命令可執行tar的功能,但dump傾向於考慮文件系統而不是個別文件,dump檢查ext2文件系統上的文件,並確定哪些文件需要備份。這些文件將出於安全保護而被複制到給定的存儲媒體上,大於輸出媒體的轉儲將被劃分到多個卷。restore命令從轉儲映像還原文件,執行轉儲的逆向功能。dump和restore可以在網路上運行,可從遠程設備進行備份和還原。兩者僅限於ext2和ext3文件系統。 (1),dump命令語法格式 #dump [-cnu] [-0至9] [-b 區塊大小] [-B 區塊數目] [-d 密度] [-f 設備或文件名] [-h 層級' [-s 磁帶長度] [-T 日期] [路徑或文件系統] 或dump [-wW] -0至9 (備份的層級) -b (指定區塊大小,單位為db) -B (指定備份卷冊的區塊數目) -c (修改備份磁帶預設的密度與容量) -d (設置磁帶密度,單位為BPI) -f (指定備份設備或文件名) -h (當備份層級=或>指定的層級時,將不備份用戶標識為「nodump」的文件) -n (當備份工作需要管理員介入時,向所有「operator」群組中的使用者發出通知) -s (備份磁帶的長度,單位為英尺) -T (指定開始備份的時間與日期) -u (備份完畢后,在/etc/dumpdates中記錄備份的文件系統、層級、日期與時間等) -w (與-W類似,但僅顯示需要備份的文件) -W (顯示需要備份的文件及基最後一次備份的層級、時間與日期) 例:備份整個系統 #dump 0f /dev/nst0 /boot #dump 0f /dev/nst0 / 此例中,系統有兩個文件系統,「/boot」和「/」,這是常見的配置。它們必須在執行備份時分別地引用。「/dev/nst0」引用第一個SCSI磁帶驅動器。 「0」表示0級或基本級備份,這是完全系統備份。對於後續的備份,可以使用其他數字1-9來代替0,以改變備份級別。1級備份會保存從執行0級備份以來更改過的所有文件,2級備份會保存從執行1級備份以來更改過的所有文件,以此類推。dump在執行備份時會輸出一個更新文件(/etc/dumpupdates),此更新文件將在每次執行0級備份時被重設,後續級別的備份會保留它們的標記,直至執行一次0級備份。 「chattr +d 」命令將向文件添加一個標記,讓dump在執行備份時跳過此文件。 (2),restore命令語法格式 #restore [-cCvy] [-b 區塊大小] [-D 文件系統] [-f 備份文件] [-s 文件編號] 或 #restore [-chimvy] [-b 區塊大小] [-f 備份文件] [-s 文件編號] 或 #restore [-crvy] [-b 區塊大小] [-f 備份文件] [-s 文件編號] 或 #restore [-cRvy] [-b 區塊大小] [-D 文件系統] [-f 備份文件] [-s 文件編號] 或 #restore [-chtvy] [-b 區塊大小] [-D 文件系統] [-f 備份文件] [-s 文件編號] [文件...] 或 #restore [-chmvxy] [-b 區塊大小] [-D 文件系統] [-f 備份文件] [-s 文件編號] [文件...] -b (設置區塊大小,單位是Byte) -c (不檢查傾倒操作的備份格式,僅准許讀取使用舊格式的備份文件) -C (使用對比模式,將備份文件與現有文件相互對比) -D (允許用戶指定文件系統的名稱) -f (從指定的文件中讀取備份數據,進行還原操作) -h (僅解出目錄而不包括與該目錄相關的所有文件) -i (使用互動模式,在操作時將依序詢問用戶) -m (解開符合指定的inode編號的文件或目錄,而非用文件名指定) -r (進行還原操作) -R (全面還原文件系統時,檢查應從何處開始進行) -s (當備份數據超過一卷磁帶時,可以指定備份文件的編號) -t (指定文件名稱,若該文件已經存在於備份文件中,則列出它們的名稱) -v (顯示處理的詳細信息) -x (設備文件名稱,從指定的存儲媒體里讀入它們,若該文件已經存在於備份文件中,則將其還原到文件系統內) -y (不詢問任何問題,一律以同意回答並繼續執行指令) 例:重建 #restore -rf /dev/nst0 在設計dump傾向於文件系統而不是單獨的文件,因此存在兩各不同的文件還原風格。要重建一個文件系統,可以使用-r參數,此參數是為了在空文件系統上進行操作,並將它還原為已經保存的狀態。在執行重建之前,應該已經創建、格式化和裝載(mount)了該文件系統,不應該對包含文件的文件系統進行重建。上面的命令需要針對要還原的每個文件系統分別進行操作,可以重複這個命令來添加增量備份。 例:提取 #restore -xf /dev/nst0 /etc 如果需要使用單獨的文件,而不是整個文件系統,則使用-x參數來提取它們。上面的命令將從磁帶備份中提取「/etc」目錄。 例:互動式還原 #restore -if /dev/nst0 此命令將把用戶置於互動式shell中,同時還顯示了包含在該存檔文件中的項。鍵入「help」將顯示一個命令列表,然後就可以瀏覽並選擇需要提取的項目。需要注意,提取的任何文件都將還原至當前目錄下。 4,關於壓縮的知識: 打包的存檔文件與壓縮文件都是文件和目錄的一個集合。存檔文件是將許多文件或目錄變成一個總的文件,其大小是其中所有文件和目錄的總和,壓縮文件則是將文件通過一些壓縮演算法變成一個較小的文件。在linux下進行備份,通常先創建存檔文件,然後再將其壓縮來節省空間。 常用壓縮命令 壓縮文件的格式 gzip/gunzip .gz compress/uncompress .Z zip/unzip .zip bzip2/bunzip2 .bz2 lha .lzh 5,gzip/gunzip命令 #gzip [選項] 文件名 -c (將輸出寫到標準輸出上,並保留原文件) -d (將壓縮文件解壓) -l (針對每個壓縮文件顯示以下欄位:「壓縮文件的大小」、「未壓縮文件的大小」、「壓縮比」、「未壓縮文件的名字」) -r (遞歸式地查找指定目錄並處理(壓縮或解壓)其中所有文件) -t (測試,檢查壓縮文件是否完整) -v (顯示每個文件的文件名和壓縮比) -num (用指定的數字「num」調整壓縮比,-1或--fast表示最快壓縮(壓縮比最低),-9或--best表示最慢壓縮(高壓縮比),預設值為6。 -S (使用用戶自行指定的擴展名) #gzip 1.txt (使用gzip壓縮當前路徑下的「1.txt」文件) 在預設狀態下,gzip會將文件壓縮並加上一個.gz的擴展名,然後將原文件刪除。 #gzip -d 1.txt.gz (使用gzip解壓當前目錄下的「1.txt.gz」文件) gzip將文件解壓,並刪除原有的壓縮文件。 #gunzip [選項] 文件名 (功能與「gzip -d」相同,參數有「c、l、r」,功能與gzip命令相同) 說明:gzip/gunzip只針對文件,不能壓縮目錄,即只能壓縮,不能打包。預設將文件壓縮至原路徑下,並刪除原文件。可處理compress(.Z格式)、zip(.zip格式)和pack命令壓縮的文件。 6,bzip2/bunzip2命令 #bzip2 [選項] 文件名 它採用了新的壓縮演算法,壓縮效果更好。若沒有加入參數,生成壓縮文件後會刪除原文件。可處理「.bz2」格式的文件。 -c或stdout (將執行結果輸送到標準輸出) -d或decompress (解壓縮) -f或force (處理時若文件與現有文件同名,預設為不覆蓋現有文件。此參數為覆蓋現有文件) -h或help (顯示幫助) -k或keep (保留原有文件) -s或small (降低程序執行時內存使用量) -t或test (檢查文件的完整性) -v或verbose (顯示處理的詳細信息) -z或compress (強制壓縮) -L、license、V、version (顯示版本信息) --repetitive-best (若文件中有重複出現的資料時,可利用此參數提高壓縮效果) --repetitive-fast (若文件中有重複出現的資料時,可利用此參數加快執行速度) -num (用指定的數字「num」調整壓縮比,-1或--fast表示最快壓縮(壓縮比最低),-9或--best表示最慢壓縮(高壓縮比)。 #bunzip2 [選項] 文件名 (功能與「bzip2 -d相同,參數有「f」、「k」、「s」、「v」、「l」,功能與bzip2相同) 7,compress/uncompress命令 #compress [選項] 文件名 此命令歷史悠久,但壓縮效果不佳,已經逐漸被gzip和bzip2取代,生成壓縮文件后預設會刪除原文件。可處理「.Z」格式的文件。 -r (遞歸操作,如果指定目錄變元,則壓縮該目錄及其子目錄中的所有文件) -c (將壓縮數據返回標準輸出,而預設情況下為壓縮文件將壓縮數據返迴文件) -v (顯示每個文件夾的壓縮百分比) #uncompress [選項] 文件名 -c (將壓縮數據發往標準輸出而不是改寫舊的壓縮文件) 8,zip/unzip命令 功能與win平台下的zip類壓縮工具相同,可以把許多文件壓縮成一個文件。生成壓縮文件后,預設不刪除原文件,可處理「.zip」格式的文件。 #zip [選項] [-b 工作目錄] [-ll] [-n 字尾字元串] [-t 日期時間] [-壓縮效率] [壓縮文件] [文件...] [-i 範本樣式] [-x 範本樣式] -A (調整可執行的自動解壓縮文件) -b (指定暫存放文件的目錄) -c (替每個壓縮的文件加上註釋) -d (從壓縮文件內刪除指定的文件) -D (壓縮文件內不建立目錄名稱) -f (類似-u參數,但不更新已有文件,會將壓縮檔中沒有的文件加入到壓縮檔中) -F (嘗試修復已損壞的壓縮文件) -g (將文件壓縮后附加在已有的壓縮文件之後,而非另行建立新的壓縮文件) -h (幫助) -i (只壓縮符合條件的文件) -j (只保存文件名稱及其內容,不存放任何目錄) -J (刪除壓縮文件前面不必要的數據) -k (使用ms-dos兼容格式的名稱) -l (壓縮文件時,把LF字元換成LF+CR字元) -ll (壓縮文件時,把LF+CR字元換成LF字元) -L (顯示版本信息) -m (將文件壓縮並加入壓縮文件后,刪除原文件) -n (不壓縮具有特定字尾字元串的文件) -o (以壓縮文件內擁有最新更改時間的文件為準,將壓縮文件的更改時間設成和該文件相同) -q (不顯示指令執行過程) -r (遞歸處理) -S (包括系統和隱藏文件) -t (把壓縮文件的日期設成指定日期) -T (檢查備份文件內的每個文件是否正確無誤) -u (更新較新的文件到壓縮文件內) -w (在文件名稱里加入版本號,本參數僅在VMS操作系統下有效) -x (壓縮時排除符合條件的文件) -X (不保存額外的文件屬性) -y (直接保存符號鏈接) -z (給壓縮文件加上註釋) -$ (保存第一個被壓縮文件所在磁碟的卷冊名稱) -壓縮效率 (壓縮效率是一個介於1-9的數值) #zip 1.zip 1.txt (將1.txt文件壓縮為1.zip文件,預設為不刪除原文件) #zip -r file.zip text (text文件夾下有多個文件,如果不加-r參數,zip會只將text文件夾壓縮,壓縮包內沒有其他文件。使用-r參數后,zip會將所有文件連同text文件夾一同壓縮) #unzip [選項] 壓縮文件名 (此命令為zip包解壓縮命令) -x (文件列表解壓縮文件,但不包括指定的file文件) -v (查看壓縮文件目錄,但不解壓) -t (測試文件有無損壞,但不解壓) -d 目錄 (把壓縮文件解壓到指定目錄) -z (只顯示壓縮文件的註解) -n (不覆蓋已經存在的文件) -o (覆蓋已經存在的文件且不要求用戶認證) -j (不重建文檔的目錄結構,把所有文件解壓到同一目錄下) 9,.bin文件的用法 (1),chmod u+x name.bin (2),./name.bin 七、系統監視與進程管理 1,使用who命令查看在線用戶 在linux系統中,who命令用來顯示當前登錄到系統的每個用戶的註冊名、終端類型、註冊時間和遠程主機名。 #who [-Humqsw] [--help] [--version] [am i] [記錄文件] -H或heading (顯示各欄位的標題信息列) -u或-i或--idle (顯示閑置時間,若該用戶在一分鐘之前有任何動作,將標示成「.」號,如已超過24小時沒有任何動作,則標示出「old」字元串.-i將在新版本中棄用,一般使用-u) -m (與「am i」字元串相同) -q或--count (只顯示登入系統的帳號名稱和總人數) -w或-T或--mesg或--message或--writable (顯示用戶的狀態信息欄,其中{+:允許寫信息;-:不允許寫信息;?:不能找到終端設備) --help (幫助) --version (顯示版本) -s (此參數僅負責解決其他版本兼容問題) #who (查看在線用戶) #who am i (顯示運行who的用戶名、登錄終端和登錄時間) #who -uH (顯示登錄用戶的詳細信息) who命令標題欄意義 標題 說明 NAME 用戶登錄帳號 LINE 用戶登錄使用終端 TIME 用戶登錄時間 IDLE 用戶空閑時間 PID 用戶登錄shell的進程ID COMMENT 備註 2,使用w命令查看用戶的行為 w命令用於顯示登錄到系統的用戶情況和用戶的行為,它比who命令功能更強大,顯示的統計數據更加詳細科學,可以顯示出用戶當前正在進行的工作。 #w [-husfV] [user] -h (不顯示標題) -u (列出當前進程和cpu時間時忽略用戶名。這主要是用於執行su命令后的情況) -s (使用短模式,不顯示登錄時間、JCPU和PCPU時間) -f (切換顯示FROM項,也就是遠程主機名項。默認值是不顯示主機名,系統管理員可以修改源文件使顯示該項成為默認值) -V (顯示版本信息) user (只顯示指定用戶的情況) #w (使用w命令顯示登錄到系統的用戶情況) 18:39:27 up 35 min, 3 users, load average: 0.00, 0.01, 0.00 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT xu tty1 - 18:04 34:49 0.01s 0.01s login -- xu xu tty7 :0 18:04 0.00s 14.13s 1.52s /usr/bin/gnome-session xu pts/0 :0.0 18:05 0.00s 0.10s 1.88s gnome-terminal 第一行四項基含義如下: 18:39:27 (當前時間,表示執行w命令的時間) up 35 min (表示該系統已運行35分鐘) 3 users (表示當前有3個用戶登錄該系統) load average (表示系統平均負載指數,其中「0.00」、「0.10」和「0.00」分別表示最近1秒、5秒和15秒的平均負載) 第二行八項如下: USER (登錄的用戶帳號名,如果該用戶重複登錄,該帳號名就會重複出現) TTY (用戶登錄的終端代號) FROM (顯示用戶從何處登錄。如果是本地,則此欄位為「-」,如果是遠程,則顯示遠程主機的IP地址或主機名。「:0.0」表示用戶是從Xwindows以文本模式登錄的) LOGIN@ (表示該用戶登錄的時間) IDLE (表示用戶閑置時間。這是一個計時器,一旦用戶執行任何操作,該計時器就會被重置) JCPU (JCPU時間指的是和該終端{tty}連接的所有進程佔用的時間。這個時間裡並不包括過去的後台作業時間,但包括當前正在運行的後台作業佔用的時間) PCPU (PCPU時間是指當前進程{即在WHAT項中顯示的進程}所佔用的時間) WHAT (該終端當前進程的命令名) 3,top命令 top命令用來顯示執行中的程序進程,獲得內存、交換分區和cpu的使用率等信息,使用許可權是所有用戶。top命令是一個動態顯示過程,即可以通過用戶按鍵來不斷刷新當前狀態。如果在前台執行該命令,它將獨佔前台,直到用戶終止該程序。top命令提供了實時的對系統處理器的狀態監視,該命令的很多特性都可以通過互動式命令或者在個人定製文件中設定。 #top [-dqcsSi] -d (指定每兩次屏幕信息刷新之間的時間間隔,用戶可以使用s交互命令來改變) -q (使top沒有任何延遲地刷新。如果調用程序有root許可權,top將以儘可能高的優先順序運行) -c (顯示整個命令行而不是只顯示命令名) -s (使top命令在安全模式中運行,這將去除交互命令所帶來的潛在危險) -S (指定累計模式) -i (使top不顯示任何閑置或僵死進程) #top (顯示執行中的進程,獲得內存、交換分區、CPU的使用率等信息) top - 10:48:11 up 2:55, 3 users, load average: 1.00,0.73,0.52 Tasks: 139 total, 2 running, 135 sleeping, 1 stopped, 1 zombie Cpu(s): 2.6%us, 1.2%sy, 0.0%ni, 96.2%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 2074872k total, 553528k used, 1521344k free, 24808k buffers Swap: 2096472k total, 0k used, 2096472k free, 277016k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 2768 root 20 0 293m 14m 7552 R 4 0.7 1:12.27 X 3090 xu 20 0 113m 19m 12m S 2 1.0 0:05.84 gnome-terminal 2950 xu 20 0 18752 5500 4408 S 1 0.3 0:03.62 gnome-screensav 3386 xu 20 0 310m 56m 27m S 1 2.8 1:09.84 firefox-bin 第一行:當前時間、系統啟動時間、當前登錄用戶數、平均負載,各欄位意義與w命令相同。 每二行,進程信息:已啟動的總數、正在運行的、掛起的、已停止的、僵死的。 第三行,CPU使用情況:用戶佔用、系統佔用、用戶使用比、閑置比等。 第四行,物理內存使用情況:總數、已使用、未使用、緩衝區佔用。 第五行,交換分區使用情況:總數、已使用、未使用、用於高速緩存的大小。 第六行: PID (進程標示號,Process ID) USER (進程屬主) PR (進程優先順序) NI (進程優先順序數值) VIRT (進程佔用的虛擬內存值) RES (進程佔用的物理內存值) SHR (進程使用的共享內存值) S (進程的狀態,其中S表示休眠,R表示正在運行,Z表示僵死,N表示進程優先順序是負數) %CPU (該進程佔用的CPU使用率) %MEM (該進程佔用的物理內存使用率) TIME+ (該進程啟動后佔用的總的CPU時間) Command (進程啟動的命令名稱) top交互命令: 空格 (立即刷新) P (根據CPU使用大小排序) M (根據內存使用大小排序) T (根據時間或累計時間排序) m (切換顯示內存信息) t (切換顯示進程和CPU狀態信息) c (切換顯示命令名稱和完整命令行) U (輸入用戶名,可監控指定用戶的進程) W (將當前設置寫入~/.toprc文件中,這是寫top配置文件的推薦方法) q (退出top命令) 4,使用free命令查看內存使用情況: #free [-b|k|m] [-s delay] [-otV] -b|k|m (分別以位元組、k位元組和m位元組為單位顯示內存使用情況) -s delay (顯示每隔多少秒刷新一次) -t (顯示內存總和) -o (不顯示緩衝區調節列) #free -b -s5 (以位元組為單位顯示,每5秒刷新一次) 5,使用ps命令管理進程 linux系統包括3種不同的進程,每種進程都有自己的特點和屬性。交互進程是由一個shell啟動的進程,它即可以在前台運行,也可以在後台運行。批處理進程和終端沒有聯繫,是一個進程序列。監控進程(也稱守護進程)是linux啟動時的進程,並在後台運行。 #ps 參數 -e (顯示所有進程) -f (全格式) -h (不顯示標題) -l (長格式) -w (寬輸出) -a (顯示終端上的所有進程,包括其他用戶的進程) -u (顯示進程屬主的用戶名和其他詳細信息,不加此參數顯示為UID且沒有其他信息) -r (只顯示正在運行的進程) -x (顯示不在終端上的進程,即沒有控制終端的進程) -pids (只列出指定進程的情況,各進程ID間用,號隔開,該進程ID必須在參數的最後一個選項後面緊接著給出,不能空格) 使用「#ps -aux」可以顯示最詳細的進程情況。 [root@scb9 xu]# ps -aux | more USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.0 1948 736 ? Ss 20:26 0:01 /sbin/init root 2 0.0 0.0 0 0 ? S< 20:26 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? S< 20:26 0:00 [migration/0] root 4 0.0 0.0 0 0 ? S< 20:26 0:00 [ksoftirqd/0] USER:屬主 PID:ID %CPU:佔用的CPU使用率 %MEM:佔用的內存使用率 VSZ:佔用的虛擬內存大小 RSS:佔用的物理內存大小 TTY:終端代號 (minor device number of tty) STAT:該進程的狀態: D:不可中斷的靜止 R:正在執行中 S:靜止狀態 T:暫停執行 Z:不存在但暫時無法消除 W:沒有足夠的內存分頁可分配 <:高優先順序的進程 N:低優先順序的進程 L:有內存分頁分配並鎖在內存內 START:進程開始時間 TIME:執行的時間 COMMAND:所執行的指令 6,使用kill命令殺死進程: 中斷一個前台進程可以使用「Ctrl+c」組合鍵,對於後台進程就必須使用kill命令。kill命令是通過向進程發送指定信號來結束進程的,如果沒有指定信號,默認值為TERM,TERM信號將終止所有不能捕獲該信號的進程,對於可以捕獲該信號的進程需要用kill(9)信號,9信號是不能被捕獲的。當一個程序出錯造成系統死鎖時,可以切換到其他虛擬控制台使用kill命令關閉這個程序。 #kill [-s(信號) | -p] [-a] 進程號 #kill -l [信號] (顯示信號名稱列表) -a (當前進程有相同的UID時,不限制命令名到UID的轉換) -s (指定需要送出的信號,可以是信號名或代碼) -p (指定kill命令只顯示進程的pid,並不真送出結束信號) -l (列出信號表,也可在/usr/include/linux/signal.h文件中找到) #kill -9 332 (殺死PID為332的進程) #kill -SNGKILL 332 (殺死PID為332的進程) 7,進程優先順序的控制: 進程在系統執行時,在佔用CPU的權力方面有優先順序的差別,優先順序低的進程在遇到優先順序高的進程時,會空出CPU資源,供高級別的進程使用。 (1),nohup命令 用戶退出系統時,會把所有的進程結束掉,包括後台程序。可以使用nohup命令使進程在用戶退出後繼續執行。 #nohup sort sales.dat & 此命令告訴sort命令,忽略用戶退出系統,一直運行直到完成,&表示在後台運行。 (2),renice命令 renice命令可以調整正在執行的程序的優先順序。-num表示進程的優先順序,範圍是-20~19,其中-20最高,19最低,只有管理員可以設置負數的優先順序。注意: a、用戶只能對自己所擁有的進程renice; b、root可以renice任何進程; c、只有root才能提高進程優先順序。 #renice -num PID 8,作業控制: 作業控制是指控制當前正在運行的進程,也稱程序控制,它是shell的一個特性,使用戶能夠在多個獨立進程間切換。 命令或快捷鍵 功能說明 cmd & 將該命令放在後台運行,以免霸佔終端 Ctrl+d 終止一個正在運行的進程,含有正常含義 Ctrl+c 終止一個正在運行的進程,含有強制含義 Ctrl+z 掛起一個正在前台運行的進程 jobs 顯示後台作業和被掛起的進程 fg 在前台恢復一個被掛起的進程 Bg 在後台恢復一個被掛起的進程 9,守護進程的管理: (1),文本用戶界面(TUI)下的守護進程管理工具。 ntsysv是文本用戶界面(TUI)下的守護進程管理工具,*表示激活,F1可以獲得幫助。註:該工具只是設置服務在系統啟動時的狀態,不會立即生效,需重啟后才能生效。 (2),命令行界面(CLI)下的守護進程管理工具。 chkconfig命令可以檢查和設置系統的各種服務。此命令是通過操作/etc/rc[0-6].d目錄上的符號鏈文件對系統的各種服務進行管理的。該命令可以添加新服務、清除指定服務、顯示由chkconfig管理的服務、改變服務的運行級別、檢查指定服務的啟動狀態等。註:該命令只是設置服務在系統啟動時的狀態,不會立即生效,需重啟后才能生效。 #chkconfig --list [服務名稱] (顯示chkconfig管理的所有服務) #chkconfig --add 服務名稱 (添加一個由chkconfig管理的服務) #chkconfig --del 服務名稱 (刪除一個由chkconfig管理的服務) #chkconfig --level [運行級別] 服務名稱 (on|off在指定的運行級別開啟或關閉服務,不指定運行級別是,默認為3、4、5。reset在指定的運行級別重置服務,使其返回系統啟動時的狀態,resetpriorities重置優先順序) #chkconfig --list (顯示由chkconfig管理的所有服務) #chkconfig --list atd (顯示atd服務在所有運行級別的運行狀態) #chkconfig --level 3 atd reset (重置atd服務) 可以使用service命令啟動、終止以及重啟守護進程。註:該命令執行后立即生效。 #service 服務名稱 {start|stop|restart|status} #service atd stop (終止atd守護進程) 可以使用"/etc/init.d/服務名",啟動、終止以及重啟守護進程。註:該命令主執行后立即生效。 #/etc/init.d/服務名 {start|stop|restart|condrestart|configtest|status} 八、系統信息相關命令 1,查看系統內核 /etc/redhat-release (管理員可以修改這裡的內容) /etc/issue 2,查看cpu信息 /proc/cpuinfo (processor 0 為一個U, 1為兩個,flags表示超線程) 3,查看操作系統信息 #uname 4,顯示/設置當前時間 #date 5,顯示系統運行時間 #uptime 6,顯示機器的核心構架(如i386) arch 7,顯示終端名 #tty 8,顯示登錄/登出在履歷 #last 9,顯示非法登錄信息 #lastb 10,顯示當前鍵盤配置 #dumpkeys 11,變更鍵盤配置 #loadkeys 12,顯示系統啟動消息 #dmesg 13,保存輸入輸出到文件 #script
[火星人
]
fedora經驗總結(新手必看)!!! 已經有1123 次圍觀
本文地址: http://coctec.com/docs/linux/show-post-163910.html