網頁

2013年2月28日 星期四

/etc/sysconfig/*目錄的介紹


  • /etc/sysconfig/clock : 時間格式的設定
  • /etc/sysconfig/keyboard : 盤種類的設定
  • /etc/sysconfig/mouse : mouse的設定
  • /etc/sysconfig/network : 網路的設定
    • 是否啟動網路設定
      • NETWORKING = yes|no
      • 主機名稱,在這邊會與/etc/hosts當中設定相同
        • HOSTNAME=canred
      • 是否啟動 IP forwarding 的yes 相當於將 /proc/sys/net/ipv4/ip_forwarding設為1
        • FORWARD_IPV4=yes|no
      •  設定gateway的IP address
        • GATEWAY = geteway ip
      • 設定gateway的裝置名稱,如eth0
        • GATEWAYDEV = gateway device
        • NISDOMAIN = nis domain name
  • /etc/sysconfig/static-routes:如果沒有特別指定,這個檔案是空的
  • /etc/sysconfig/network-scripts/ifup
  • /etc/sysconfig/network-scripts/ifdown
    • 上上的ifup,ifdown分別連結到/sbin/ifup , /sbin/ifdown 。這個指令後面必須要加參數(裝置的名稱eth0,ppp0)
  • /etc/sysconfig/network-scripts/network-functions
    • 這是一個shell script檔,這是一個來源,系統透過它啟動網路上的服務
  • /etc/sysconfig/network-scripts/ifcfg-interfacename
  • /etc/sysconfig/network-scripts/ifcfg-interfacename-clonename
    • 以上的2個檔案 , 第1個是定義介面,如:eth0 ;第2個是介面的別名,這種狀況會發生在一張介面卡上有2個ip address,如eth0:0
    • 一般的內容如下:
      • DEVICE=硬體的名稱,ex : eth0 , eth1 ,ppp etc.
      • IPADDR=IP address
      • NETMASK=子網路遮罩
      • NETWORK=網路,也就是網路中IP address區段的第一個
      • BROADCAST=廣播位址,也就是網路中IP Address區段的最後一個
      • GATEWAY=閘道的位址
      • ONBOOT=yes|no 開機後啟動
      • BOOTPROTO = none | bootp | dhcp (啟動時的網路設定)
  • etc/sysconfig/network-scripts/ifup-post
    • 除了SLIP之外的網路裝置啟動時,都會被呼叫,它會呼叫ifup-routes來啟動所有靜態的路由,以及它的附屬檔案



聯線用戶相關指令


  • 查看聯線用戶命令 who , finger , w , last
    • who 
      • 查看常前系統中的用戶(一般查詢時使用)
      • who指令的選項
        • H:此選項會顯示標題欄位
        • i:顯示閒置的時間
        • T:顯示使用者是否原意接收其他使用者的訊息
          • +:表示可接收write指令所傳送的訊息
          • -:則表示不願接收訊息
          • 使用者可以透會mesg指令來設定自已是否要接收write來的訊息
            • mesg y :表接收
            • mesg n :表不接收
    • finger
      • 查看登錄系統用戶及相關信息
    • w(功能比較強大)
      • 查看正在使用系統的用戶並列出用戶占用系統資源的情況
      • w指令資料輸出格式
        • 第一列的欄位
          • 系統目前的時間
          • 系統啟動後已經過的時間
          • 目前登入此系統的使用者總數
          • 系統平均負載指示:如:"load average:0.12,0.09,0.08";分別表示系統1,5,10分鐘的平均負載率
        • 第二列的欄位
          • user:顯示登入的使用者帳號
          • tty:該使用者登入的終端機代號
          • from:顯示使用者從何處登入系統;":0"表示該使用者從x window下,開啟文字模式登入。
          • login@:表示該使用者是登入時間
          • idle:使用者閒置的時間
          • jcpu:以終端機之代號來區分,該終端機所有相關的程序執行時,所使用cpu時間,此值會不斷的累加。
          • pcpu:cpu執行程式所用的時間,該時間就是執行what欄內的程式所用的時間。
          • what:使用者正在做什麼事。
    • last指令;查看曾登入此系統的使用者的資訊
      • last指令其實是讀取/var/log目錄下的wtmp檔案內容
  • 斷開聯線用戶命令 fuser
    • 在一些特殊情況下,需要對系統進行緊急維擭,這時應該將已經聯線到系統的用戶強制斷開,不且不允許除root以外的用戶登錄;我們可以使用fuser的指令斷開使用者。
      • fuser -k /dev/pts/3
    • 另外還有一個方法可以禁止所有用戶登錄,就是在/etc中新建一個名為nologin的空文件(算是大絕吧)。
----編輯記錄
  • 2013/4/23
    • 新增
      • w指令欄位說明
      • who指令的選項
      • last指令

write指令;向針定的人員發出訊息,mesg指令;talk指令


  • wall指令
    • 將向系統的所有用戶發送關資訊
  • write指令
    • 向root用戶發送一個訊息
      • write root
                               Hello ! 
                               My name is canred.
                               按下ctrl+c退出
      • write test 1 "Hello"
  • mesg指令
    • 用來拒絕收到訊息(非root),root用戶發出來的不可以拒絕
  • talk指令;要先啟動talkd 服
    • vim etc/xinetd.d/ntalk
    • 要修改disable = no
    • service xinetd restart
    • talk test1@localhost tty2

date,clock,hwclock指令,系統中的硬件時鍾


在Linux的系統中有2個時鐘:1是由硬件設備控制的硬件時鐘,另一個是由操作系統控制的係統時鐘,如果需要修改系統時間,就應該同時修改硬件時鐘和系統時鐘。


  • date
    • 修改系統的日期
      • date -s 06/25/08
      • date -s 15:30:23
      • date "%y-%m-%d %T"
      • date -s "2010-10-10 12:12:12"
    • date 還可顯示某檔案的修改時間
      • date -r sample.txt
  • 將當前系統的時鐘寫入硬件時鐘
    • clock -w
  • hwclock設定硬件的時鍾
    • 用來同步硬件時鍾與系統時鍾
      • hwclock --systohc
      • hwclock --set --date="9/22/12 18:18:18"




wc指令用來統計文本文件的字符數、行字符數


  • 許多時侯需要對一個文檔或命令的輸入做一個統計,例如要統計命令的輸出一共有多少行,或者命令輸出、文檔的字數統計等,這時可以使用wc命令來完成這些工作
    • 選項
      • c:字節數
      • m:統計並顯示字符數
      • l:統計全顯示文件的行數
      • L:顯示文件中最長行的長度
      • w:統計并輸出文件的字數
    • 範例
      • wc a.txt
        • 輸出:123 456 789 a.txt
          • 第1組數字:行數
          • 第2組數字:詞數
          • 第3組數字:字節數
      • wc -w a.txt
        • 使用w選項只顯示詞數
      • wc -l a.txt
        • 使用l選項只顯示行數
      • ps aux | grep apache | wc -l
        • 說明:在進程中找有關apache的進程有幾個




2013年2月27日 星期三

命令別名功能


  • 系統定定的別名
    • 你可以使用alias指令列出所有的別名
    canred@canred:~$ alias
    alias
    alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'
    alias egrep='egrep --color=auto'
    alias fgrep='fgrep --color=auto'
    alias grep='grep --color=auto'
    alias l='ls -CF'
    alias la='ls -A'
    alias ll='ls -alF'
    alias ls='ls --color=auto'
    canred@canred:~$

      • 如果你要保存你的別名功能,可以建立一個新的sh檔案並保存在/etc/profile.d目錄下
        • 內容如下
                                   alias l='ls -CF'
                                   alias la='ls -A'
                                   alias ll='ls -alF'
                                   .......... 


    • 用戶自定義別名
      • alias type='cat'
        • type test.txt 
    • 取消定義的別名
      • unalias type

    chsh指令;更換登入者的shell



    • 設定指定使用者的shell
      • chsh canred
        • 這是一個以詢問是的方式來設定shell
      • chsh -s /sbin/nologin test100
        • 以指令的方式直接修改使用者的shell
      • usermod -s /bin/ksh canred
        • 使用usermod指令也可以修改


    2013年2月26日 星期二

    passwd指令;批量修改密碼;/etc/passwd,/etc/shadow,/etc/group,/etc/gshadow 檔案介紹


    • 用來顯示密碼概要資訊…
      • passwd -S test100
    • 用來問答方式設定新的密碼
      • passwd canred
    • 使用 echo 來設密碼
      • echo 123456 | passwd --stdin  test100
    • /etc/passwd 檔案介紹
      • 這一個檔案是一個文字檔,包含了帳號的資訊。每一行表示一個帳號資訊,其格式如下
        • 名稱:密碼:UID:GID:註解:目錄:shell
          • 欄位說明:
            • 名稱:不要使用特殊符號即可…這應該不用多說了吧
            • 密碼:加密過的密碼欄位以*顯示,並存於shadwo中;若沒有使用shadow而且密碼欄為*時,刪無法登入系統。
            • UID :使用者的唯一識別碼,但0是給root帳號用的
              • 備註:UID在0-499為系統保留給系統用戶(通常是軟體的專有用戶)使用的,因此管理員在新增用戶id時通常大於500
            • GID :主群組的號碼,與名稱的對應定在 /etc/group 的檔案中
            • 註解:就是註解…
            • 目錄:使用者根目錄的所在的位置,你也可以使用usrmod -s的指令來修改
            • shell :登入時所使用的程式shell,常見的有sh csh ksh bash ,如果此欄位不存在則使用預設的sh,若為/sbin/nologin,則無法登入
          • 備註
            • 若是不想讓該使用者登入系統
              • 在shadow模式下;把使用的的密碼變成非*即可
              • 使用passwd -l account   ;參數 l 為lock
              • 在passwd的檔案修改shell部份的/sbin/nologin
    • chpasswd指令(資料來源為:鳥哥的 Linux 私房菜)
      • 說明:此指令可以『讀入未加密前的密碼,並且經過加密後, 將加密後的密碼寫入 /etc/shadow 當中。』這個指令很常被使用在大量建置帳號的情況中喔! 他可以由 Standard input 讀入資料,每筆資料的格式是『 username:password 』。 舉例來說,我的系統當中有個使用者帳號為 dmtsai ,我想要更新他的密碼 (update) , 假如他的密碼是 abcdefg 的話,那麼我可以這樣做:
        • echo "dmtsai:abcdefg" | chpasswd -m
    • /etc/shadow 檔案介紹
      • 這是一個加密的密碼檔,其中包含了使用者的重要資訊,格式如下
        • (A)使用者名稱:(B)加密的密碼:(C)密碼變動日:(D)密碼可能改變前的日期:(E)密碼必須在多少日後變更:(F)密碼失效前多少日提出警告:(G)密碼失效後多少日停用該帳號:(H)從1970/1/1,該帳後被停用的日數:(I)保留欄位
          • 密碼在(D)之前是不得變更的,而必須在(E)之前變更
          • (E)大於(D),應使用不能再變更密碼
          • (B)加密的密碼是一個md5加密(不可逆的加密方式),通常是以$1$開頭的。
          • (c)表示最後一次密碼修改的天數(從1970/1/1日算起)
          • (d)表示2次修改密碼之間的問隔天數,在此期間用戶不能修改密碼(0表示可以隨時修改密碼)
          • (e)表示密碼最長存留的天數
          • (f)用於標識密碼過期之前的警告天數(-1表示沒有警告)
          • (g)用於表示密碼過期之後禁止戶登錄的天數(1表示不會被禁用)若為空也表示不會被禁止登錄。
          • (h)表示過期後被禁用的天數(-1或空表示不會被禁用)
          • 在shadow文件中出現2個『!!』號,表示是空的密碼
          • 在shadow文件中二個用戶相同的密碼的情況下,密文若然是不同的
    用戶組管理
    • 用於保存用戶組的文件為/etc/group,其密碼文件在/etc/gshadow中,概念於用戶管理是相同的
    • /etc/group
      • 它定義群組的名稱,gid,以及使用者的對應,格式如下:
        • group_name:passwd:GID:user_list
          • group_name:是群組名稱
          • passwd:加過密的密碼,也就是使用shadow時則欄就以*/x表示,而加過密的密碼置於/etc/gshadow
          • GID:群組id
          • user_list:使用者列表,這邊可列出群組的所有人員,以逗號分隔
    • /etc/gshadow
      • 用於保存用戶組密碼、用戶組管理員等設置。
        • group_name:用戶組密碼:用戶組管理員:組的成員
          • group_name:組名稱
          • 用戶組的密碼
          • 用戶組管理員;若為多個時以『,』分隔
          • 用戶組成員;若為多個時以『,』分隔
        • 系統用戶組文件和用戶shadow都是由系統自動生成的,不建議使用手動修改。

    2013年2月25日 星期一

    使用者與群組相關的基本指令


    • 新增使用者(useradd/adduser) 
      • 說明:我要建立一個名稱canred的使用者,其根目錄為 /home/canred ,主要的群組為 user(100)    ,次要的群組為 oper(1001);可以透過下行指令完成。另外useradd或adduser其實都是指向/etc/sbin/useradd。
        • 常用的選項
          • g:指定新用戶所屬的用戶組
          • s:指定新用戶使用的shell
        • 有關使用者的家目錄可能還會存在一些別的初始化文件,例如編輯器vim的初始化文件.viminfo等。在建立新用戶時的家目錄模板被放置於/etc/skel
      • 在新增使用者前,你可以使用指令  figger 帳號 來查看這個帳號是不已存在。
      • useradd -u 501 -g 100 -G 1001 -d /home/canred -m canred
        • 在指令會做的事
          • step 1.在/etc/passwd中新增一行關於canred帳號、uid、gid、根目錄等資訊
          • step 2.新增一目錄,並將權限賦予給canred
          • step 3.由於加上了 -m ,所以系統會將 /etc 下的 profile 複制到 /home/caned 之下的 .bash*.
          • 此外,還有 mail spool 的相關檔案,另外其中 -u 後面的501是指到uid用的,接在我們使用 passwd canred 設定密碼後…canred 使用者即可登入系統了。
      • useradd -s /bin/ksh user2
        • 在新增使用者的時侯直接指定shell
      • useradd -s  /sbin/nologin mysql
        • 新增一個軟件專用的帳號,並設定為不可以用來登錄系統
        • 由於軟件專有用戶不能登錄系統,因此通常不需要為其設置密碼,雖然系統會禁止空密碼用戶登錄,但仍然建議修改軟體專有用戶的shell,以逸存在可能的安全隱患。
      • useradd -g groupname user_name1
      • 批次大量的建立帳號(pdadduser)
        • 快速方便建立大量帳號 -- PDAddUser -- 使用說明
        • 首先你要先安裝這一個指令功能,如上連結
        • 編輯帳號清冊,暫命為 name_list 檔案,內容如下
          • canred1 min chen
          • canred2 max chen
          • ...
        • pdadduser -n /root/name_list -o pdout -p %8r -g users -f '%0.0%0.1$2' -F '$1$2$3' -h '/home/$u' -r 600 700 -c 'useradd -u $i -d $d -c "$f" -g $g $u' '(printf "$p"; pause 1 ;printf "$p") | passwd $u'
    • 刪除使用者
      •     使用 userdel -r 的指令即可
        •      ex : userdel -r canred
            • -r順更刪除home中對映的目錄/郵件檔案
    • 修改使用者(canred)的shell,以及修改群組
      • 用戶管理的基本內容是禁用、啟用用戶帳號(即鎖定(L)、解除鎖定(U)),以及修改用戶的屬性。
      • 常用的選項
        • L:鎖定用戶(Lock)
          • 在使用L選項後,你可以在shadow文件中看見密碼的密文前面多了一個『!』
        • U:解除鎖定(UnLock)
        • e:指家用戶過期的日期
          • usermod -e 2013-03-03 testAccount
        • f:指定用戶過期之後的緩沖時間,即過期之後還能夠登錄的天數。
          • usermod -f 5 testAccount
        • d:為用戶指定新的家目錄(directory)
        • m:為用戶指定新的家目錄時,移動原來家目錄中的所有文件(move)
          • usermod -d /file/user/home/canred/ -m canred
            • 使用選項d修改家目錄的同時,用選項m移動家目錄中的文件
        • s:修改用戶的shell(shell)
          •     usermod -s /bin/true -G group1,group2 canred
      • 提示:也可以修改文件/etc/login.defs的方式,修改用戶的密碼策略。
    • 將canred使用者從group2這個群組中刪除
      •     gpasswd -d user1 group2
    • 將canred使用者加入group3的群組中
      •     gpasswd -a canred group3
    • 範例:
      • 一般新增使用者時,你可能下達的指令
        • useradd newAccount
        • passwd newAccount
        • useradd -s /bin/csh -d /home/newAccount canred
          • 修改使用者的shell


    實作一備software RAID 0 的file system

    Step 1.新做出二個partition  先…
               fdisk /dev/hdb
               ...
               mke2fs -j /dev/hdb1
               mke2fs -j /dev/hdb2

    Step 2.修改 /etc/raidtab 參考如下
               raddev                      /dev/md2
               raid-level                               0
               nr-raid-disk                           2
               chunk-size                         64K
               persistent-superblock             1
               nr-spare-disks                       0
               device                     /dev/hdb1
               raid-disk                                0
               device                     /dev/hdb2
               raid-disk                                1

    Step 3. 使用 mkraid 指令,將2個partition串起來(raid 0)
                mkraid /dev/md2
                mke2fs -j /dev/md2
    Step 4. 將 /dev/md2 掛接在 /new 之上即可
                mount -t ext3 /dev/md2 /new

    在linux系統中新增一個硬碟的步驟、ext2轉ext3、減低系統對於file system的保留比率

    step 1.用dmesg看看系統對新增硬碟的認定為何
               可能用到的指定 dmesg | grep hd | more
    step 2.使用fdisk建立新的分割並儲存
                可能用到的指令 fdisk
    step 3.將新的分割上建立file system
               可能用到的指令 mke2fs  、 mount -t ext2 ...
    step 4.將新建立的file system掛接上(mount it)
    step 5.修改etc/fstab使得開機時能自動掛上

    情況1:如果要把ext2的file system改為ext3時,你可以使用tune2fs的指令來完成。
               ex : tune2fs -j /dev/hdb1
               還有修改一下fstab的檔案…然後重新開機就可以了。
               在轉的過程前還是建議備份一下你的資料。

    情況2:減低系統對於file system的保留比率
               通用系統會保留5%的file system空間,以防止硬碟遭到使用者完全寫滿時,造成系統管
               理人員無法修復。但是現在的硬碟都越來越大…5%的空間可能太大了!所以本例會將
               例降為2%,但是在執行這一個動作的時侯,最好是single user mode之下操作。
               tune2fs -m 2 /dev/hdb1

    2013年2月24日 星期日

    Ram file System特殊的檔案系統

    Ram file System就是把記憶體當成硬碟用,這是的用法恰恰與swap相反,swap是擔心記憶體不夠,而劃出一部份的硬碟空間做為虛擬記憶體,而所由的ram file system 則是將一部份的記憶體當作file system給mount起來。注意在機器關機或是將這個ram file system卸載,則裡頭的資料將會完全消失。
    step 1.先建立一個資料夾起來
              mkdir /RamFileSystem
    step 2.把它mount起來
              mount -t ramfs TEST /RamFileSystem

    你在用df -a 就可以看見一個名為TEST的分區,而這個分區會因為你在/RamFileSystem中放入檔
    案後,記憶體就是隨之減少。

    rpm,yum,chkconfig ,ntsysv ,apt-get,aptitude ,apt-key,apt-sortpkgs,dpkg ,dpkg-deb,dpkg-divert,dbkg-preconfigure,dbkg-query,dbkg-reconfig指令


    • rpm 指令,在red hat 的default 的軟件管理程式。
      • step 1. 我要將安裝一個名稱 zsh 的軟件
        •  rpm -ivh zsh.XXXXX.rpm
      • step 2. 找詢剛才安裝的軟件
        • rpm -q zsh
      • step 3. 找詢 zsh 軟件的所有安裝文件
        •  rpm -ql zsh
      • step 4. 另外我們也可以以文件檔案到推算出,它是那一個軟件包
        •  rpm -qf /sbin/fdisk
      • step 5. 如何卸載一個軟件包
        •  rpm -e zsh
      • step 6. 在安裝之前查看要安裝軟件的詳細資訊
        •  rpm -qpi  zsh.XXXXX.rpm
      • step 7. 在安裝之也可以查看這一件軟件包會復制出那一些新的文件
        •  rpm -qpl  zsh.XXXXX.rpm
    • rpm顯示所安裝的套件【使用q選項】
      • rpm -qa sendmail
    • rpm查詢包括<檔案>的套件【使用f選項】
      • rpm -Vf /bin/vi
        • 上是的-V選項是驗證模式
    • rpm查詢的p選項為以套件的檔案全名來查詢套件
      • rpm -qp rhviewer.xxx.xxxxxxx.rpm
    • rpm顯示安裝的詳細資訊【使用i選項】
      • rpm -qi sendmail
    • rpm顯示所安裝的位置以及檔案【使用選項l】
      • rpm -ql sendmail
    • rpm使用s選項顯示即綿中所有的檔案狀態
    • rpm使用d選項顯示在套件中被標示為文件的檔案列表,包括了man pages,info pages,readme   etc.
    • rpm使用c選項顯示在套件中標示為設定檔的檔案列表。
    • rpm安裝程式
      • rpm -ivh vnc*
    • rpm更新軟件
      • rpm -Uvh vnc*
        • U:表Upgrade
      • rpm -Fvh vnc
        • F:表freshen
      • 更新軟件還可以更新成較舊的版本,你可以使用--oldpackage的選項來完成。
        • rpm -Uvh --oldpackage rhviewer-2.51=02.i386.rpm
    • rpm移除軟件
      • rpm -e ftd.x.x
    • rpm單純解開
      • rpm2cpio [rpm的檔案名稱] | cpio -idv
    • rpm還能透過ftp來進行遠程的套件安裝或查詢
      • rpm -ivh ftp://ftp.cycu.edu.tw/xxx.rpm
        • 使用遠程安裝時,務必使用-h選項,否則你可能不知道安裝程序是否還在進行中,此外還可以使用--percent選項來得知安裝進度的百分比
    • rpm指令是不可以重覆安裝相一個程式的,若你需要重新install則需要使用到--replacepkgs參數
      • rpm -ivh --replacepkgs xxxx.rpm
    • 套件中某個檔案已被其他套件安裝你可以看見以下訊息
      • xxx conflicts with file from xxx-xxx-xxx
        • 若你確定要取代舊有的檔案可以使用--replacefiles選項來安裝
          • rpm -ivh --replacefiles xxx.rpm
    • 套件移除
      • 指令格式:rpm -e 套件名稱
      • 你還可以使用--nodeps選項來進行強行移除套件
    • 套件驗證
      • 要驗證套件中的元件是否與原始套件相符,可使用驗證模式。-V參數可以來驗證套件的正確性。驗證模式會比較原始套件資訊及安裝於系統中的套件檔案資訊,包括每個檔案的大小、MD5(一種加密方式)checksum、權限、型別、擁有者及所屬的檔案群組。一般常用的驗證方式如下:
        • rpm -V reviewer
          • 驗證rhviewer套件的正確性
        • rpm -Vf /bin/vi
          • 驗證包含/bin/vi檔案的套件
        • rpm -Va
          • 驗證所有的套件
        • rpm -Vprhviewer-xxx-xxx-xxx.rpm
          • 使用.rpm檔案來驗證套件正確性
      • 在驗證後,正常狀態是不會有任何的輸出的,如有不一致的地方會可參考以下的列表。
        • 5:MD5 checksum不合
        • S:檔案大小不合
        • L:符號連結錯誤
        • T:檔案修改時間不合
        • D:設備屬性不合
        • U:做用者不合
        • G:檔案群組不合
        • M:模式不合,包含權限和檔案型態
    • rpm的應用
      • 查詢套件所安裝的檔案:rpm -ql package-name
      • 查詢是否刪除套件檔案:當您誤刪了某些檔案,可是並不知道到底刪掉些什麼,此時只要執行rpm -Va 指令即可對小統估完整的套件驗證,而得襠是否刪除了某些套件檔案
      • 查詢檔案屬於那個套件:遇到一些不認得的檔案,想要找出這個檔案是否屬於那一個套件,可執行rpm -qf file-name指令
      • 驗證套件的正確性:上2個例子可以結合使用。rpm -Vf /bin/vi
    • 其他rpm選項
      • --noorder:允許相依套件不按次序安裝
      • --noscripts:不執行安裝套件前後用來輔助安裝程序的script指令
      • --replacekgs:以相同的套件置換已安裝於系統中的套件,可用來修複已損毀的套件
      • --replacefiles:可置換存在於別的套件之的相同檔案
      • --excludedocs:不安裝套件中的w的文件檔案
      • --justdb:只將套件原始檔中的資訊更新至組態資料庫中,而不實際安裝
      • --test:測式套件
      • --ignorearch:不檢查套件所用的平台(i386)
      • --ignoreos:不檢查套件所用的作業系統
    ---------------------------------------------------------------------------------------------------------
    yum 指令,可以把它看成 rpm 的智能化工具,他的底層就是調用rpm,yum的指令可以將依賴
                       的軟件包一並安裝;yum可以透過網站安裝。
    step 1. yum install zsh
    step 2. yum update php
    step 3. yum update
               檢查系統輸出系統內的可更新軟件包
    step 4. yum remove zsh
               用來卸載軟件包

    • 指令範例:
      • yum search mysql


    ---------------------------------------------------------------------------------------------------------
    chkconfig 指令 ,它是一個系統服務管理工具,它可以檢查、設置以及更新服務。
    step 1. chkconfig --list
               查看系統服務的狀態

    step 2. chkconfig --list xinetd
               查看單一個服務

    step 3. chkconfig --level 3,4 xinetd off
               在系統運行等級是3,4時;關閉xinetd服務

    • 指令範例:
      • chkconfig iptables off
        • 設置防火牆服務的自動啟動狀態為關閉



    • chkconfig:列出或是修改在開機時自動啟動的服務
      • 假設我們要在單人模式、圖形介面的時侯停止ssh的服務
        • chkconfig --level 35 sshd off
      • 列出所有全部資訊
        • chkconfig --list
    • 補充:chkconfig輸出的最後幾個服務是一些老式的服務集,今天已經很少有人使用這些服務。這些老式服務集的運行狀態,依賴于一個名為xinetd的服務。通常將這些依賴于xinetd的服務稱為非獨立服務。非獨立服務受xinet服務管理,因此如果要啟動這些服務,應該道先啟動xinetd。
    • Red Hat還有一個指令ntsysv也可以設置服務的啟動狀態
    • chkconfig指令還可以添加/刪除系統服務
      • chkconfig -add
        • 手動添加mysql的服務
          • cp mysql.server /etc/init.d/mysqld
          • chmod +x /etc/init.d/mysqld
          • chkconfig --add mysqld
          • chkconfig --list
      • chkconfig -del
        • 手動刪除mysql的服務
          • chkconfig --del mysql
      • 補充:並不是所有發行版都支持chkconfig命令。

    ---------------------------------------------------------------------------------------------------------
    ntsysv 指令,由 chkconfig 的功能是相同
    step 1. ntsysv
    or
    step 2. ntsysv --level 1
    ---------------------------------------------------------------------------------------------------------
    apt-get 指令,也是軟件包管理用的工具
    step 1. apt-get install rcconf
                安裝一軟件包
    step 2. apt-get remove rcconf
                刪除一個軟件包
    step 3. apt-get update rcconf
                更新一個軟件包
    ---------------------------------------------------------------------------------------------------------
    aptitude 指令,也是軟件包管理工具
    以是是 aptitude 常用的指偷
    step 1. aptitude show rcconf

    step 2. aptitude install rcconf

    step 3. aptitude search rcconf
    ---------------------------------------------------------------------------------------------------------
    apt-key 指令,列出軟體包密鑰訊息
    ---------------------------------------------------------------------------------------------------------
    apt-sortpkgs 指令,用於排序軟件包的索引文件
    ---------------------------------------------------------------------------------------------------------
    dpkg 指令,用於也是軟件包管理工具
    step 1. dpkg -c rcconf_1.21_all.deb
    step 2. dpkg -i rcconf_1.21_all.deb
               -i : install
    step 3. dpkg -r rcconf
               -r : remove
    ---------------------------------------------------------------------------------------------------------
    dpkg-deb 指令,他可以把軟件包作打包、解包
    step 1. dbkg-deb -I rcconf_1.21_all.deb
    ---------------------------------------------------------------------------------------------------------
    dpkg-divert 指令,用來允許將引起沖突的文件安裝到轉移目錄,而非default軟件目錄,通常只
                                   有在文件有沖突的時侯才會用到這一個指定

    step 1. dpkg-divert --add /root/Packages
    ---------------------------------------------------------------------------------------------------------
    dbkg-preconfigure 指令,用於在安裝前之詢問的方式來完成軟件的安裝、以及配置文件的設定
    step 1. dpkg-preconfigure  rcconf_1.21_all.deb
    ---------------------------------------------------------------------------------------------------------
    dbkg-query 指令,用於查詢軟體包的資訊
    step 1. dpkg-query -l rcconf

    step 2. dpkg-query -L rcconf
               查詢軟件包的相關文件列表

    ---------------------------------------------------------------------------------------------------------
    dbkg-reconfig 指令,用於已安裝的軟件包作重新配置
    ---------------------------------------------------------------------------------------------------------

    ----編輯紀錄

    • 2013/04/21
      • 補允:chkconfig指令相關資訊






    2013年2月23日 星期六

    startx,xauth ,xhost ,xinit ,xlsatoms ,xlsclients ,xlsfonts指令


    • startx 指令,用於在純文件編輯當中,啟動 xwindow 窗口介面
      • 如果原本已經執行X Window,卻想啟動第2個X Window,則可在文字模式下執行start 時加上 -- :1 參數。依此類推,若想啟動第3個 x window,則加上 -- :2
      • 若系統預設是文字模式,若要改成x window時,你可以修改/etc/inittab的檔案,在檔案中尋找 id:3:initdefault: 的字串,並將之更改 id:5:initdefault: 即可

    ---------------------------------------------------------------------------------------------------------
    xauth 指令,用於顯示和編輯連結的x服務器的認證訊息

    step 1. xauth info

    step 2. xauth list

    ---------------------------------------------------------------------------------------------------------
    xhost 指令,用於顯示/控制 那一些x服務端,使用xwind的服務介面

    step 1. xhost 

    step 2. xhost + 192.168.11.101
    ---------------------------------------------------------------------------------------------------------
    xinit 指令,這是x系統的初始化程序
    ---------------------------------------------------------------------------------------------------------
    xlsatoms 指令,用於顯示x server定義的原子成份

    step 1 . xls 
                顯示全部的
    step 2 . xlsatoms - name CURSOR
    ---------------------------------------------------------------------------------------------------------
    xlsclients 指令,用於x server上有多到x client的用應程序在運行。
    ---------------------------------------------------------------------------------------------------------
    xlsfonts 指令,用於顯示 s server 上可以在於xwindox的字體列表
    ---------------------------------------------------------------------------------------------------------
    xset 指令,用於設置xwindow的用啟偏好,也就是說可以用來按使用者的偏好設定xwindow

    step 1. xset q

    step 2. xset b on c on 

    step 3. xset b off c off
    ---------------------------------------------------------------------------------------------------------


    sysctl,lsmod,insmode,modprobe ,rmmod ,modinfo ,depmod ,uname ,dmesg ,get_module ,kexec ,kernelversion ,slabtop 指令

    sysctl 設置和顯示 /proc/sys 目錄中的內核參數,能用 sysctl 來設置或重新設置網路功能,如 ip 轉發、ip 碎片去除及 rotue 檢查;始用 sysctl 指令來設定內核參數的效果,會在重新開機後遺失,若要永久生效的話,請編輯 /etc/sysctl.conf 文件。


    step 1. sysctl -a

    vm.min_free_kbytes = 44900
    vm.mmap_min_addr = 65536
    vm.nr_hugepages = 0
    vm.nr_overcommit_hugepages = 0
    ...

    step 2. 使用 sysctl 來設置內核參數
               sysctl net.ipv4.ip_forward=0
    ----------------------------------------------------------------------------------------------------------
    lsmod指令,用來顯示當前內核,已加載的模塊列表
    ----------------------------------------------------------------------------------------------------------
    insmode指令,用來動態向內核當中加載新的模塊

    step 1. insmod /lib/modules/`uname -r` /kernel/drivers/ata/ata_piix.ko
               由於在加載模塊的時侯,我們一定要在相同版本的內核上操作所以使用`uname -r`來
               取得。

    step 2.查詢 lsmod | grep ata_piix
    -----------------------------------------------------------------------------------------------------------
    modprobe 指令,用來智能加載模塊,這是一個比較好的加載方式,因為使用比較方便外,另
                     外它會自動加載其他依賴的模塊。

    step 1.modprobe -v ata_piix
    -----------------------------------------------------------------------------------------------------------
    rmmod 指令,用於從內核當中移除一個內核模塊。如果那一個內核模塊正在使用的話,我們
                是無法移除的。

    step 1. rmmod ata_piix
    -----------------------------------------------------------------------------------------------------------
    modinfo 指令,用於顯示內核模塊的詳細資訊
    step 1. modinfo ext3
    -----------------------------------------------------------------------------------------------------------
    depmod 指令,用於產生內核模塊依賴關系的映射文件
    step 1. depmod 
    step 2. ls -l /lib/modules/`uname -r` 
               列表內核模塊依賴關系的映射文件
    -----------------------------------------------------------------------------------------------------------
    uname 指令,用於打印內核版本號、硬件架構、主機名稱和操作系統的訊息
    step 1.canred@canred:/etc$ uname -a
    Linux canred 3.5.0-21-generic #32-Ubuntu SMP Tue Dec 11 18:52:46 UTC 2012 i686 i686 i686 GNU/Linux
    -----------------------------------------------------------------------------------------------------------
    dmesg 指令,經常用來顯示內核啟動時的輸出訊息
    -----------------------------------------------------------------------------------------------------------
    get_module  指令,功能和 modinfo 指差不多,用於顯示內核模塊的詳細資訊
    -----------------------------------------------------------------------------------------------------------
    kexec 指令,用於直接啟動另一個Linux的內核,由當前的內核切換到另一個內核
    step 1. ls /boot 
               列出所有的內核

    step 2. uname -r
               查表當前版本

    step 3. kexec -l /boot/vmlinuz-2.6.18-1.e15 --append=root=LABEL=/

    step 4. kexec -e
    -----------------------------------------------------------------------------------------------------------
    kernelversion 指令,功能於 uname 指令差不多,使用 uname 的詳細比較完整,就不要用這一個
                         指定啦
    -----------------------------------------------------------------------------------------------------------
    slabtop 指令,用於顯示內核的slab緩衝區的訊息
    step 1. slabtop -d 10
    -----------------------------------------------------------------------------------------------------------

    uptime,free,iostat ,mpstat,sar,vmstata,time ,tload,lsof ,fuser,cupspeed指令

    uptime 指令,用於查看系統的時間以及平均負載率。

    canred@canred:~$ uptime
     23:53:24 up 2 days, 15:57,  3 users,  load average: 0.05, 0.03, 0.05

    在load average的三個數值是表示 前1分鐘,前5分鐘,前15分鐘的系統平均負載情況
    --------------------------------------------------------------------------------------------------
    free 指令,用於顯示記憶體使用狀況
    step 1. free -m
    --------------------------------------------------------------------------------------------------

    iostat 指令,用於報表當前系統cup、設備、以及分區的io狀況
    step 1. iostat -t 2


    root@canred:~# iostat -t 2
    Linux 3.5.0-21-generic (canred)         2013年02月24日  _i686_  (4 CPU)

    2013年02月24日 01時13分05秒
    avg-cpu:  %user   %nice %system %iowait  %steal   %idle
               0.09    0.00    0.05    0.10    0.00   99.77

    Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
    sda               0.74         4.42        12.87    1040027    3025164


    ---------------------------------------------------------------------------------------------------
    mpstat指令,用於顯示每一個cup的使用狀態,通常用於多cup的環境下
    step 1. mpstat -P ALL
    root@canred:~# mpstat -P ALL
    Linux 3.5.0-21-generic (canred)         2013年02月24日  _i686_  (4 CPU)

    01時15分43秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
    01時15分43秒  all    0.09    0.00    0.05    0.10    0.00    0.00    0.00    0.00   99.77
    01時15分43秒    0    0.08    0.00    0.05    0.38    0.00    0.00    0.00    0.00   99.48
    01時15分43秒    1    0.09    0.00    0.05    0.01    0.00    0.00    0.00    0.00   99.86
    01時15分43秒    2    0.09    0.00    0.04    0.00    0.00    0.00    0.00    0.00   99.86
    01時15分43秒    3    0.08    0.00    0.04    0.00    0.00    0.00    0.00    0.00   99.87
    or

    指定一個cup
    root@canred:~# mpstat -P 1

    Linux 3.5.0-21-generic (canred)         2013年02月24日  _i686_  (4 CPU)

    01時16分39秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
    01時16分39秒    1    0.09    0.00    0.05    0.01    0.00    0.00    0.00    0.00   99.86

    ---------------------------------------------------------------------------------------------------
    sar指令,用於將指定的操作系統狀況、計數器顯示到標準輸出
    參數的2、3分別是做2次測試;每隔3秒…也就是6秒後報表
    root@canred:~# sar -u 2 3
    Linux 3.5.0-21-generic (canred)         2013年02月24日  _i686_  (4 CPU)

    01時19分02秒     CPU     %user     %nice   %system   %iowait    %steal     %idle
    01時19分04秒     all      0.00      0.00      0.12      0.00      0.00     99.88
    01時19分06秒     all      0.00      0.00      0.00      0.00      0.00    100.00
    01時19分08秒     all      0.00      0.00      0.00      0.25      0.00     99.75
    平均時間:     all      0.00      0.00      0.04      0.08      0.00     99.87


    ---------------------------------------------------------------------------------------------------
    vmstata指令,用於報告系統的運行狀態;其中包括實體記憶體以及CPU的使用狀況
    root@canred:~# vmstat
    procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
     r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
     0  0      0 1890752 248740 1110392    0    0     1     3   17   25  0  0 100  0


    or 
    -s 參數,用於顯示系統的各種事件統計以及內存的狀態
    root@canred:~# vmstat -s
          3803272 K total memory
          1912768 K used memory
           966400 K active memory
           788772 K inactive memory
          1890504 K free memory
           248748 K buffer memory
          1110420 K swap cache

    ---------------------------------------------------------------------------------------------------
    time 指令 ,用於顯示某一個執行的執行時間(s)

    root@canred:~# time find / -name shadow
    /etc/shadow

    real    0m1.740s
    user    0m0.300s
    sys     0m0.364s

    ---------------------------------------------------------------------------------------------------
    tload 指令,以圖形化的方式顯示系統的平均負載情況並傳送到指定的終端上
    tload /dev/pts1 -d 3

    ---------------------------------------------------------------------------------------------------
    lsof 指令,用於顯示當系統,所打開的文件列表資訊

    lsof | less
    ---------------------------------------------------------------------------------------------------
    fuser指令,用於顯示指定進程所使用的文件或網路
    以下指令用來查找所有使用80 port 的進程資訊
    fuser -n tcp -u 80
    ---------------------------------------------------------------------------------------------------
    cupspeed指令,用於調整cup的速率、電壓

    通常linux會自動執行這一個指令,因為有一個服務在(/etc/init.d/cupspeed)

    service cupspeed restart
    service cupspeed stop

    ---------------------------------------------------------------------------------------------------


    2013年2月22日 星期五

    top,free,ipcs,ipcrm指令

    top指令,以時時動態的方式查詢系統的整體運行的情況,像是window的工作管理員。
    default 3 秒刷新訊息

    以下補充資訊來於http://os.51cto.com/art/201108/285581.htm
    快捷鍵小弟在紅字標記哦。

    Linux top命令简介
    top 命令是最流行的性能监视工具之一,我们必需了解。它是一个优秀的交互式工具,用于监视性能。它提供系统整体性能,但报告进程信息才是 top 命令的长处。top 命令交互界面如下图所视:
    linux top示例
    top 界面分为两个部份,光标上面部份显示关于系统整体性能,光标下面部份显示各进程信息。光标所在处是用来输入操作命令的。
    Linux top命令界面
    第一行显示的内容和uptime命令一样,【l】可以显示和隐藏这个区域:
    top界面第一行|uptime
    top:   这个没有什么意思,只是个名称而以
    01:47:56 :     系统当前时间
    up 1:26   :   系统开机到现在经过了多少时间
    2 users  :            当前2用户在线
    load average:0.00,0.00,0.00:        系统1分钟、5分钟、15分钟的CPU负载信息
    第二行:
    top界面第二行
    Tasks:英文意思是工作;任务;差事。
    38 total:很好理解,就是当前有38个任务,也就是38个进程。
    1 running:1个进程正在运行
    37 sleeping:37个进程睡眠
    0 stopped:停止的进程数
    0 zombie:僵死的进程数
    Cpu(s):表示这一行显示CPU总体信息
    0.0%us:用户态进程占用CPU时间百分比,不包含renice值为负的任务占用的CPU的时间。
    0.7%sy:内核占用CPU时间百分比
    0.0%ni:renice值为负的任务的用户态进程的CPU时间百分比。nice是优先级的意思
    99.3%id:空闲CPU时间百分比
    0.0%wa:等待I/O的CPU时间百分比
    0.0%hi:CPU硬中断时间百分比
    0.0%si:CPU软中断时间百分比
    0.0%st:我不知道
    第三行:
    TOP界面第三行
    Men:内存的意思
    256412k total:物理内存总量
    30156k used:使用的物理内存量
    226256 free:空闲的物理内存量
    8176k buffers:用作内核缓存的物理内存量
    Swap:交换空间
    337356k total:交换区总量
    0k used:使用的交换区量
    337356k free:空闲的交换区量
    12160k cached:缓冲交换区总量
    第四行:
    top界面第四行
    PID:进程的ID
    USER:进程所有者
    PR:进程的优先级别,越小越优先被执行
    NInice:值
    VIRT:进程占用的虚拟内存
    RES:进程占用的物理内存
    SHR:进程使用的共享内存
    S:进程的状态。S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值为负数
    %CPU:进程占用CPU的使用率
    %MEM:进程使用的物理内存和总内存的百分比
    TIME+:该进程启动后占用的总的CPU时间,即占用CPU使用时间的累加值。
    COMMAND:进程启动命令名称
    Linux top命令操作指令會紅的 Linux 筆記
    下面我列出一些常用的linux top命令操作指令:
    q:退出top命令
    <Space>:立即刷新
    s:设置刷新时间间隔
    c:显示命令完全模式
    t::显示或隐藏进程和CPU状态信息
    m:显示或隐藏内存状态信息
    l:显示或隐藏uptime信息
    f:增加或减少进程显示标志
    S:累计模式,会把已完成或退出的子进程占用的CPU时间累计到父进程的MITE+
    P:按%CPU使用率排行
    T:按MITE+排行
    M:按%MEM排行
    u:指定显示用户进程
    r:修改进程renice值
    k:kill进程
    i:只显示正在运行的进程
    W:保存对top的设置到文件~/.toprc,下次启动将自动调用toprc文件的设置。
    h:帮助命令。
    原文:http://www.itwhy.org/2011/07-05/437.html

    Linux中的系統負載平均值,是一個很獨特的概念,LINUX使用數字標識系統的負載,數字越大表明系統負載越高。在單處理器上,如果負載均衡值等於1,表示系統處於滿負荷狀態;大於1表示系統處於超負荷狀態。在多處理器或者多核處理器中,滿負荷運行狀態的負載均衡值應該與CPU數量或處理器核數相等。

    • free指令
      • 用來查看系統記憶體以及swap所使用的狀況
    • ipcs指令
      • ipcs是InterProcess Communication Status的縮寫,它可以看到更進一部記體使用的狀,它包含主要的三項記錄share memory,semaphore,message queues;另外也有files,pipe等
    • ipcrm指令
      • 這個指令是用來刪除ipcs的程序的;通常是系械或是程式不正常終止時,留了一堆InterProcess Communication,則會使用此指令去將記憶體的資源釋放出來。
        • ipcrm -m 65536
    ----編輯紀錄
    • 2013/4/22:
      • 新增:
        • Linux中的系統負載平均值 說明






    service指令

    service 指令,用來啟動或停止系統服務,當然也可以查詢,系統有什麼服務,可以在etc/init.d中查找

    step 1.service --status-all


    canred@canred:/etc$ service --status-all
     [ ? ]  acpi-support
     [ ? ]  acpid
     [ ? ]  alsa-restore
     [ ? ]  alsa-store
     [ ? ]  anacron
     [ + ]  apache2
     [ - ]  apparmor
     [ ? ]  apport
     [ ? ]  atd
     [ ? ]  avahi-daemon
     [ ? ]  binfmt-support
     [ ? ]  bluetooth
     [ - ]  bootlogd
     [ - ]  brltty
     [ + ]  clamav-freshclam
     [ ? ]  console-font
     [ ? ]  console-setup

    step 2. service atd staus

    step 3. service atd start

    ps,pstree,ipcs,pgrep,pidof,pman,w,vmstat指令


    • ps指令用來顯示系統的進程
      • ps -aux
      • ps -aux | head
      • ps -aux | sort +3 
        • 加上sort可以估排序的動作,因為sort是由0開始計數,所以+3表示由第4列做排序。
      • ps -aux | sort user
      • ps uU canred
        • 直接指定使用者帳號名稱或uid皆可
      • ps -aux | grep apache2
        • 顯示apache2的字眼的所有進程
      • ps指令的欄位說明
        • USER:運行此進程的用戶名稱
        • %CPU:進程的CPU佔用率
        • %MEN:實際內存占用率
        • VSZ:進程占用虛擬內存大小,單位是KB
        • RSS:占用物理內存大小,單位是KB
        • STAT:目前進程所處的狀態屬性
          • 一般由1~3個字符號組成
            • D:不可中斷的等待狀態,通常是等待I/O設備的數據等
            • R:正處於運行列隊中的進程
            • S:正處於中斷休眠狀態的進程,該進程可能是在等待某個中斷消息
            • T:已停止工作的進程,因其被跟所以存在
            • X:已經死亡的進程,通常不會看到這類的進程
            • Z:已經僵死的進程
            • <:高優先級進程
            • N:低優先級進程
            • s:會話的管理者
            • +:進程會使用前台的終端
            • l:這是一個多線的進程
        • TIME:進程占用CPU的時間
        • COMMAND:啟動進程使用的命令
      • 選項補充:
        • 在 不附加任何選項的情況下,ps只列出屬於使用者個人、有連結終端機的行程
        • 合併a,-u,-x三個選項,ps將以「使用者格式」顯示任何符合下列2個條件之一的任何行程:屬於其他使用者,或沒連結終端機。此時,選項是否要前置破折號將不影響執行結果
          •  ps -aux == pa aux
        • 並不是所有ps的選項都可以省略的如-C選項就不可以省略
          • ps u -C apache2
    • vmstat指令
      • 顯示虛擬記憶體的統計,中還包括實體記憶體以及cpu的使用狀況。

    -----------------------------------------------------------------------------------------------------

    pstree指令用來以樹狀的方式,來顯示系統的進程

    step 1 . pstree
             

    canred@canred:/etc$ pstree
    init─┬─NetworkManager─┬─dhclient
           │                ├─dnsmasq
           │                └─2*[{NetworkManager}]
           ├─accounts-daemon───{accounts-daemon}
           ├─acpid
           ├─apache2───9*[apache2]
           ├─apache2─┬─apache2
    ...
    上列的 2* 表示當前進程有2個線程
    -----------------------------------------------------------------------------------------------------
    w指令,用來顯示系統目前登入者的表列,但顯示正在執行什麼樣的程序
    -----------------------------------------------------------------------------------------------------
    ipcs 指令,用來顯示linux系統當中進程間通訊的狀態(消息隊列、共用記憶體資料段、訊
    號量的訊息)

    -----------------------------------------------------------------------------------------------------
    pgrep 指令用於以名稱的方式查找進程的id號

    canred@canred:/etc$ pgrep bash
    18417
    18884
    -----------------------------------------------------------------------------------------------------
    pidof 指令和 pgrep 的功能是相同的,以是顯示的方式不同,pgrep是行顯示的;pidof是列
    顯示的
    -----------------------------------------------------------------------------------------------------
    pmap 指令,用來顯示進程的內存映射關系
        step 1. pmap 進程號
    canred@canred:/etc$ pmap 1
    1:   /sbin/init
     total        0K

        step 2.也可以用 pmap -d 1 看更詳細的資訊
                                   pmap -x 1
    ----編輯紀錄

    • 2013/5/8:
      • 新增:ps指令的選項補充資訊。

    • 2013/4/22:
      • 新增:
        • ps指令的欄位說明
      • 補充:
        • pstree進程數量







    nice,nohup,renice指令


    • nice 指令用於調整進程的優先級
      • nice -n 6 find / -name passwd > out.txt
        • 上以指令用於調整 find 指令的優先級為正6的值所以會比較慢執行它。優先級由-20~+20,越小優先級越高,-1~-20的等級只有管理者得以設定
      • 在LIUNX中預設的進程優先級為0
      • nice 不加選項時,則顯示系統的預設優先級
    • nohup指令,用於指定的程序以忽略掛取訊息的方式運行,典型的應用,我們用一個shell在執行批次指令的時侯,可能因為我們的shell退出造成程序終止。
      • nohup find / -name shadow > out.txt &
    • renice指令用於調整已經存在的進程優先級
      • sample 1
        • ps aux | grep vim
        • 我們先查看一下有關vim的進程
        • canred@canred:~$ ps aux | grep vim
        • canred   18745  0.0  0.0  10924  3224 pts/0    S+   14:05   0:00 vim
        • canred   18971  0.0  0.0   4412   844 pts/1    S+   14:05   0:00 grep --color=auto vim
        • 再執行 renice 指令來調整優先級
        • renice +7 18745
      • sample 2
        • 想一口氣更改某位使用者的所有程序優先權
        • renice -10 -u canred
    ----編輯紀錄
    • 2013/4/23:
      • 補充:nice指令內容



    kill,killall,pkill,skill,watch 指令


    • kill指令
      • 對process傳遞訊號(signal),通常我們使用此指令來停止或是中斷程序,而該process接收到我們所給的signal,則會因為我所給的signal有不同的反應。例如我們給 -9 這樣的signal,所有類型的程序接收到這樣的訊號都會被獨迫中斷,若是我們給 -1 的signal,則會重新啟動。
        • 指令語法:kill [signal] process_id
      • 查看所有訊號
        • kill -l

    [1]+  Stopped                 vim
    canred@canred:~/test$
    canred@canred:~/test$
    canred@canred:~/test$
    canred@canred:~/test$ jobs
    [1]+  Stopped                 vim
    canred@canred:~/test$ ps aux | grep vim
    canred    7681  0.0  0.0  10924  3480 pts/0    T    23:42   0:00 vim
    canred    7683  0.0  0.0   4412   840 pts/0    S+   23:43   0:00 grep --color=auto vim
    canred@canred:~/test$ kill 7681
    canred@canred:~/test$ ps aux | grep vim
    canred    7681  0.0  0.0  10924  3480 pts/0    T    23:42   0:00 vim
    canred    7686  0.0  0.0   4412   844 pts/0    S+   23:45   0:00 grep --color=auto vim
    canred@canred:~/test$ kill 7681
    canred@canred:~/test$ jobs
    [1]+  Stopped                 vim
    canred@canred:~/test$ kill -9 7681
    canred@canred:~/test$ jobs

    有時需要讓一個進程停止執行,這時可以使用信號19掛起進程

    • 常用的信號表:
      • 9)SIGKILL:強制移除
      • 15)SIGTERM:使用軟件終止方法
      • 19)SIGSTOP:暫停
      • 18)SIGCONT:繼續
    • 其實我們常常對程式送出信號,如程序執行中,我們要中斷程式就會按下CTRL+C,此時就會送出一個中斷信號。另外在程序執行中,我們按下CTRL+Z則是送出一個暫停信號(信號19)


    -------------------------------------------------------------------------------------------------------
    killall 指令,用來刪除一個進程,刪除一依據是根據進程的名稱哦
    Step 1 . killall vim

    Or 
    killall -l 可以查詢訊號的種類
    -------------------------------------------------------------------------------------------------------

    pkill指令,用來刪除一個進程,刪除一依據是根據進程的名稱
    Step 1 . pkill vim
    -------------------------------------------------------------------------------------------------------
    skill 指令,將指定的進程發送發號

    step 1. ps aux | grep vim

    setp 2. skill 進程號

    -------------------------------------------------------------------------------------------------------
    watch 指令以週期性的方式來查看執行的輸出結果
        step 1. watch -d ls /root
                   以上指令於監看 root 資料夾的清單列表功能
             
    ----編輯紀錄

    • 2013/4/22
      • 新增:
        • kill的信號資訊






    stat,findfs指令

    我們在查文件的訊息通常是使用 ls -l sample.txt
    如果你還要更詳細的訊息,你可以使用 stat test2.txt 指令


    canred@canred:~$ stat test2.txt
      File: ‘test2.txt’
      Size: 2335            Blocks: 8          IO Block: 4096   普通檔案
    Device: 801h/2049d      Inode: 44044335    Links: 1
    Access: (0644/-rw-r--r--)  Uid: ( 1000/  canred)   Gid: ( 1000/  canred)
    Access: 2013-02-12 16:25:00.679354216 +0800
    Modify: 2013-02-06 01:06:45.792911863 +0800
    Change: 2013-02-06 01:06:45.792911863 +0800
     Birth: -
    -----------------------------------------------------------------------------------------------------------
    findfs 指令,用來查找文件系統

    Step 1 . findfs LABEL=data

    e2image,e2label,tune2fs,resize2fs指令

    e2image指令;用來將指定的文件系統(ext2,ext3)保存到一個文件檔案中

        Step 1 . e2image /dev/sdb1 sdb1.bak 即可
    -------------------------------------------------------------------------------------------------------
    e2label 指令 ; 用來設定文件系統的卷標名稱 

        Step 1 . e2label /dev/sdb1 卷標名稱
        Step 2 . 然後可以使用 e2label /dev/sdb1 來查看

    -------------------------------------------------------------------------------------------------------
    tune2fs 指令 ; 用來調整文件系統的底層參數,在使用這一個文件系統的時侯要非常的小
                心,有可能會造成資料的遺失

        Step 1 . tune2fs -l /dev/sdb1 | grep "Mount count"
                     顯示如下
                     Mount count : 3
        Step 2 . 然後可以使用 tune2fs -C 5 /dev/sdb1 來查看

    -------------------------------------------------------------------------------------------------------

    resize2fs 指令 ; 用來調整ext2擴展文件的大小,在使用這一個指定的時侯,你必須確定內
                  核是支持在線調整大小。

        Step 1 . resize2fs -f /dev/sdb1 1024M

                     你可能會看到不支持的訊息 "On-line shrinking from ... to ... not supported"
        Step 2 . 可不支持時可以重新編譯內核,並把這一個功能打開

    -------------------------------------------------------------------------------------------------------



    sync指令

    sync 指令;將硬碟緩衝區的資料強制的寫入硬碟
                        通常不用手動執行,再執行後是不會有任何輸出的。

    quota,edguota,quotacheck,quotaoff,quotastatus,repquota指令;配額限制操作



    • guota指令,用於查看指定用戶的磁碟空間的配額情況
      • guota canred
    -------------------------------------------------------------------------------------------
    • edguota指令,用於指定用戶的磁碟空間的配額情況
      • 指令:edguota canred 
      • 這時會把到vi來顯示編輯,有2個重要的欄位
        • sort :空間配額的軟限制;為0時是不受限制的。
        • hard   :空間配額的硬限制,也就是說用戶的使用空間不可以超過這個值              為0時是不受限制的
    -------------------------------------------------------------------------------------------
    • quotacheck用來磁盤配額的檢查,並創建磁盤配額數據文件
      • 在進行檢查之前我們要確定是否已經打開磁盤配額的功能
    • 執行

            cat /etc/fstab
            你可能可以看見
            ............
            /dev/sdb1                /mnt/sdb1             ext3         defaults,usrguota    1    2

           看見grpquotausrguota表示有開啟磁盤配額的功能

    • 然後我們執行 quotacheck -cuv /mnt/sdb1
      • quotacheck指令相關的選項
        • 選項a
          • 掃描fstab檔案中,有加入quota設定的分割區。
        • 選項d
          • 詳細顯示指令執行過程,便於除錯或了解程式執行的情形。
        • 選項g
          • 掃描磁碟空間時,計算每個群組識別碼(GID)啟佔用的目錄和檔案數目
        • 選項u
          • 掃描磁碟空間時,計算每個使用者識別碼(UID)啟佔用的目錄和檔案數目
        • 選項v
          • 標示指令執行過程
        • 選項m
          • 強制執行指令

            你可以在 ls /mnt/sdb1 中看見1或2個aquota.user,aquota.group這2個檔案就是磁盤配額數據文件
    -------------------------------------------------------------------------------------------

    • repquota用來打印出磁盤配額報表的訊息
      • 執行
        • repquota /dev/sdb1

    -------------------------------------------------------------------------------------------
    • 配額限制的設定
      • 系統上新增了使用者之後,可能會針對使用者設定可使用的硬碟空間,以便於管理以及避免資源的浪費時,所可能採在配額限制的功能。
      • 在安裝完成後default是支援這個功能的,若自行編譯核心則要注意是否勾選File System->Quota Support
      • 我們假設有幾個新的使用者要加入,並開啟配額限制
        • 新增使用者
          • useradd -u 2001 -g 100 -d /home/test1 -m test1
          • useradd -u 2002 -g 100 -d /home/test2 -m test2
        • 修改 /etc/fstab 
          • 看到 LABEL=/home    /home     ext3     defaults 1 2 並改成 LABEL=/home /home ext3 defaults,usrquota,grpquota 1 2
        • 在/home目錄下新增2個檔案aquota.user , aquota.group 並更改權限(或是使用quotacheck指令來產生2個檔案)
          • 新增2個檔案
            • touch aquota.user aquota.group 
            • chmod 600 aquota.*
          • 或是使用quotacheck -cug /home 的指令來產生這二個檔案
            • 在使用quotacheck的指令時可能發生權限被拒的情況(小弟是在centos上遇到的)…你需要關才selinux的設定先…
              • 關閉selinux
                • 去編輯 /etc/sysconfig/selinux 這個檔案
                • 將 SELINUX=enforcing 改成 SELINUX=disabled ,重開機就可以了
        • 使用quotacheck -uvg /home是檢查是否設定正確
        • Reboot你的電腦
        • 對帳號test1設定quota設定
          • edquota -u test1
        • 對群組 member 設定quota設定
          • edquota -g member
        • 檢查一下test1帳號是否有設定quota
          • repquota -a 
        • 設定所有使用者的寬限期
          • edquota -ut
          • edquota -t
            • 寬限期的格式為
              • /dev/sdd1    7days         7days
                • 單位分成days,hours,minutes,seconds
        • 設定所有群組的寬限期
          • edquota -gt
        • 將設定套用到其他的user
          • 指令格式edquota -p newrpm -u mail
            • edquota -p newrpm `awk -F:'$3 > 2000 {print $1}' /etc/passwd`
          • 指令2:
            • edquota -p canred *
              • 以canred的磁碟配置規則套用到所有人員
            • edquota -p canred eva
              • 以canred的磁碟配置規則套用到eva帳號上
            • edquota -gp member member2
              • 以群組member的磁碟配置規則套用到member上
      • quota設定檔內容(aquota.user aquota.group)
        • 格式如下
          • Filesystem block soft hard inodes soft hard
          • /dev/hda1   196         0      0      49      0        0
          • 預設下soft = 0 , hard =0 ,表示沒有上限 。
          • inodes把他想成是檔案數量即可,inodes = 0 表無限制
        • soft limit 或 hard limit
          • 如果我們打算分配給每位使用者10mb容量以偶500個檔案數的儲存空間,那麼這些使用者只能用到10mb的空間或500個檔案使用量。一旦起出就會被系統阻止。
          • 若我們將soft limit 設定成10mb , 而hard limit 設定成15mb,則表示使用者存放超過10mb的空間仍然可以儲存,但最多可儲到15mb的空間,檔案數目的設定也是如此概念的。
      • 檢查是否超過磁碟限制
        • quota -v
        • repquota -a
        • repquota -au
        • repquota -ag
        • repquota /mnt/sdd1

      • 取消磁碟空間的限制及再啟用
        • quotaoff -avug 指令即可
        • 若要將啟動磁碟空間限制,必須執行quotaon -avgu指令
        • quotaon的相關選項
          • a:開啟所有文件系統的磁盤配客功能
          • u:開啟用戶磁盤配額
          • g:開啟用戶磁盤配額
          • v:如果開啟成功,就顯示提示信息
            • 範例
              • guotaon -vug /mnt/sdd1
              • guotaon -va
        • quotaoff的相關選項基本上尋quotaon是一樣的
      • 檢准磁盤使用情況
        • 執行quotacheck -cug /dev/sdd1 即可
    ------編輯紀錄----
    • 2013/4/20
      • 新增
        • quotacheck遇見權限被拒的問題解決
        • quotaon選項補充
    • 2013/4/19
      • 新增
        • 【quotacheck指令相關的選項】
          【quota soft limit , hard limit 的說明】
          【檢查是否超過磁碟限制】
          【取消磁碟空間的限制及再啟用】
          補允quota -g 針對群組的指令




                                         







    2013年2月21日 星期四

    /proc目錄下的介紹

    /proc 是一個"假的"檔案系統,它豆核心資訊的介面,若你查看檔案內容很多都是size 0 的,但可以用vi去看其中的資訊。大部份/proc之中的大部份檔案是唯檔,但在/proc/sys/之下的檔案內容,是可以修改的( if you are root),一更動並可以立即產生效果的,因此我將分成二個部份來
    討論/proc/sys/ 以及 /proc的其他部份。

    /proc/sys/
              它記錄了kernel的核心資訊,也允許讀者改變核心的參數,你可以調整你的系統,但必須
              小心,有可能會造成當機的情況。

              若是希望改變檔案的數值,直接用echo或vi改變即可。如下
              echo "123456" > /proc/sys/fs/file-max
              or
              sysctl -w net.ipv4.ip_forwarding="1"
              這樣的修改會在開機後消失哦,如果要長久生效的話你要你的指令新增到
              /etc/rc.d/rc.local 這個檔案中,或是直接在 /etc/sysctl.conf 修改。

      • sysctl.conf為系統資源設定檔
        • 系統在開機時會讀這一個檔案,在檔案中以 ; , # 打頭行是註解,會被忽略。用來表示子目錄的符號 / 在這邊會以 . 取代,所以你可能看到內容如下
          • net.ipv4.ip_forward = 1 
            • 這一行的意思是 /proc/sys/net/ipv4/ip_forwarding的內容是1


    /proc/sys/fs/
              file-max
              此檔案的數值表示系統核心所支援最大的file handles,若是你發現出現錯誤訊息說file handle
              不足。那麼你就必須調大這個數值,若你要調為123456,就可以可以使用指令來修改
              echo "123456" > /proc/sys/fs/file-max
              顯示你的/proc/sys/fs/file-max當然就是cat即可啦~~~

              file-nr 
              此檔案之中有3個數值,分別表示的意思
              第1個是已分配的file handles
              第2個是已使用的file handles
              第3個是可以使用的file handles最大數值

              inode-state , inode-nr
              如同file hanlder,核心會自動的分配inode的架構,但是不用時並不能夠釋放這些資源

      /proc/sys/kernel/
              acct
              這個檔案包含3個數值分別是  高水位、低水位、頻率。這個檔案的作用是判斷何時啟用/
              停止file system的紀錄。
              如果file system的使用率低水位,則會停止記錄,若是使用率高於高水位,則開始紀錄;
              那麼頻率是已秒為單位

              ctrl-alt-del
              若這個檔案的內容是0,表示你按ctrl+alt+del時,它會將資料回存,再進行重新開機。
              若不是為0時表示您按ctrl+alt+del,它就會直接重新開機

              domainname , hostname
              這2個檔案分別是NIS的 domain name 以及主機的 host name。不建議修改它,要修改的
              話就是勤勞點,去改 /etc/hosts 再重新開機吧

              osrelease
              儲存核心的版本

              ostype
              是儲存作業系統的種類

               version
               儲存核心產生的時間以及版本

               modprobe
               這個檔案內容顯示 modprobe 的所在位置
               modprode 的補充資料
               insmod 與 modprobe 都是載入 kernel module,不過一般差別於 modprobe 能夠處理 module 
               載入的相依問題。比方你要載入 a module,但是 a module 要求系統先載入 b module 時,
               直接用 insmod 掛入通常都會出現錯誤訊息,不過 modprobe 倒是能夠知道先載入 b module
               後才載入 a module,如此相依性就會滿足。


      /proc/sys/net/
              網路相關設定
              

      /proc/sys/net/ipv4/
              網路相關設定 for IPV4
               icmp_echo_ignore_all
              是否回應 ICMP 的封包;如果是 0 表示關閉,也就是不回應所有 ICMP 的封包。
              在你使用ping的指令就是送出ICMP的封包 ^ ^

              icmp_echo_ignore_broadcasts
              是否回應broadcasting的封包;如果是 0 表示關閉

              ip_autoconfig
              網路設定是否自動載入,載入的來源是透過 RAPR , BOOTP , DHCP 等取得自已的
              IP設定。如果是 0 表示關閉,則這些網路設定在本機上啦。

             ip_conntrack_max
             檔案中的數字表示建立連線追縱 ( ip connect track ) 的最大數量,若是你的主機是
             NAT server 的話建議調大這個數值。

             ip_default_ttl
             TTL ( Time To Live )的預設值,TTL是封包能夠存活所經過位置的個數,default:64,
             也就是幫包若是轉送位置的次數超過64次,則這個封包就會被刪除。

             ip_dynaddr
             允許 socket 重新訂定 IP Address ,這項功能對於動態 IP Address ,如撥接,是必要的
             如果是 0 表示關閉

            ip_forward
            0表示這台機器是 host ; 1 表示這台機器是 router ,當封包的目的地非本機時的處理方
            式。若是 host 則會不理會它 ,若是 router 會將它轉到正確的位址。

            ip_local_port_range
           這個檔案包含2個數值 A 與 B 。 表示本機連到外面所用的 port 的範圍為 A ~ B 之間。
           要注意這個區間要避開本機提供服務的port

           tcp_keepalive_time
           連線的狀況下,多久送出一次仍保持連線的訊息,單位是秒。default:2小時
       
           tcp_fin_timeout
           這檔案的內容是秒數,代表在 socket 結束前用來接收一個結束 FIN 的封包的時間

           tcp_retries1
           定義在放棄前,回應 TCP 連線重新傳遞的請求次數

           tcp_retries2 
           定義在放棄前, TCP 連線重新傳遞的請求次數
           他於tcp_retries1不同哦…一個是回應的一個是連線的。

           tcp_syncookies
           1表示不會回應 "不為syn的tcp新建立的連線封包"

    /proc/sys/vm/
           這個目錄是 linux 核心當中虛擬記憶體的設定,核心對於虛擬記憶體的使用,有更更
           聰明以及更有廷展性的用法,一般而言我們統稱為 swap 。以下對於部份的檔案做介
           紹。

           kswapd
           這個檔案是核心對 kswapd 這個常駐程式的控管。裡頭包含三個數值。
           第1個是 kswapd 企圖去釋放一個單獨的目的,所使用 pages 的最大數量,這個值越
           大,表核心可以使用更多的 free pages 。
           第2個是 kswapd 企圖釋放 pages 的最少次數。
           第3個是 kswapd 是圖寫入一個目的程序所需要的 pages 。

           max_map_count
           設定一個程序所擁有的記憶體對應區域,default:65536。

           overcommit_memory
           如果不是0,核心在記值程序所用的記憶體時將不會檢查是否有足夠的記憶體。

           pagetable_cache
           控制 page cache 所使用記憶體的比例。
         
    /proc/ 的其他部份
           以下介紹部份 /proc 的架構
           數字部份
           進入 /proc 之後,你會看到許多名稱為數字的目錄,這些數字代表的是 process id
           其中的內容如下所示:
           cmdline 這裡記載執行這個 process id 的完整指令。
           cwd 這個是 process 的工作目錄
           exe  這是這個執行檔實際位置的連結
           fd    這是一個被這個 process 所開啟的檔案,其中 0 是input,1是output,2是錯誤,其
                  他為程式另外定義

           map 這個檔案包含這個程式所對應的記憶體使用區以及權限
           stat   這個 process 的狀態資訊,提供給 ps 查詢用。

    /proc/ 下非數字的部份
            cmdline  提供給 linux 核心的開機參數
            cpuinfo  cpu的相關資訊
            devices  列出所有的 device 的列表
            filesystems 列出核心所支援的 file system。
            ide         為一個目錄,列出 IDE 的裝置資訊。
            interrupts  列出 IRQ 的資訊
            iomen       列出 I/O 記憶體的對應 ,  Linux 2.4 的功能
            ioports     列出正確註冊,且在使用的 I/O 。
            loadave    這個檔案會記錄工作平均數。
            meminfo   紀錄記憶體資訊,當我們使用 free 指令時就會用到這一個檔案
            modules   紀錄系統會載入的模組 : lsmod
            partitions  包含了硬碟分割的相關資訊
            pci            這是所有PCI的列表以及核心上的設定。
            scsi           這是一個目錄包含了scsi的設定以及驅動程式的相關資訊。當然若是你沒有
                             scsi設備,就不會有這個目錄
            stat           核心與系統方面的統計資訊
            swaps       swap所用的file system以及大小
            sysvipc      這個目錄下包含了3個檔案,msg是message queues的資訊,
                             sem是semaphore Arrays的資訊,shm是SharedMemory Segments的資訊,
                             這3者都是interprocess communication常用的方式,也就是內部process之間溝通
                             的方式,也就是相同 ipcs指令。
             uptime      這個檔案包含了2個數值,一個是系統更新的時間,另一個是idle的程序所花
                             費的時間,這邊圾是秒計算。
             version     包含了核心的資訊以及gcc的版本。

    /proc/net 
             arp           包含核心的 arp table ,也就是網路卡卡號與IP address的對應關係。
             atm           這是一個目錄,裡面包含了 ATM(asynchronous transfer mode)的設定以及統計
                              ,通常被ATM networking 與ADSLcard使用。
             dev           內容包含了網呫裝置的資訊,傳送與接收的統計
             ip_conntrack    列出ip連線的追蹤,在NAT server,這個檔案將列出所有client的連線的
                                     狀況。
             ip_mr_cache     列出多重路由的cache
             ip_mr_vif          列出多重虛擬的介面
             ip_tables_names    若是使用iptables,這邊會列出所使用的tables。
             netstat               顯示網路的統計數字
             psched              列出所有排程的參數
             raw                   列出raw device的統計數字
             route                 列出核心的路由列表
             rt_cache            列出目前的路由cache
             snmp                 列出使用中的snmp(simple network management protocol)資訊
             sockstat             列出socket的統計資料。
             tcp                     列出 TCP socket 的資訊。
             tr_rif                  包含token ring RIF的路由列表
             udp                    包含完整的UPD socket 的資訊
             wireless              列出wireless介面的資訊