Linux & UNIX 工作筆記

    內容表格
    1. 1. 筆記整理
      1. 1.1. 變更系統預設語系
      2. 1.2. Swap 相關指令
      3. 1.3. CentOS 6 問題
      4. 1.4. sendmail 轉信設定
      5. 1.5. [PHP] 檢查 extension 是否載入
      6. 1.6. 完整複製 Home 目錄
      7. 1.7. 關閉 EXT3 的 AUTO FSCK
      8. 1.8. 檢查檔案的日期
      9. 1.9. 查詢 DHCP Server IP
      10. 1.10. 檢查 Linux 開機時所使用的 kernel 參數
      11. 1.11. 數字換算工具 - bc
      12. 1.12. [CentOS] 移除預設的 Apache Test Page
      13. 1.13. 帳號管理
      14. 1.14. SSHFS 透過 SSH 掛載遠端主機目錄
      15. 1.15. tar 使用技巧
      16. 1.16. sudo 使用技巧
      17. 1.17. Linux 的模組指令
      18. 1.18. Perl 使用技巧
      19. 1.19. 複製目錄下大量檔案,但不要覆蓋原有檔案也不要出現提示(Rsync)
      20. 1.20. 製作目前系統的臨時開機光碟
      21. 1.21. 安裝 JRE/JDK 6
      22. 1.22. 改善硬碟 I/O 存取效能
      23. 1.23. 強制更新 partition table - partprobe
      24. 1.24. Putty 登入 Linux 執行有關 ncurses 的文字介面時會出現亂碼
      25. 1.25. 解決 btmp 紀錄檔案肥大問題
      26. 1.26. 刪除包含 dash 符號的檔名
      27. 1.27. 掛載 Windows 分享目錄
      28. 1.28. 關閉 SELinux
      29. 1.29. 校時(NTPD)及變更系統的時區-timezone
      30. 1.30. WGET 技巧
      31. 1.31. YUM 套件管理技巧
      32. 1.32. DNS 除錯指令 dig 用法
      33. 1.33. 變更 hostname 方法
      34. 1.34. CPU/Memory Benchmark
      35. 1.35. Linux 系統作燒機/壓力測試(stress test)的工具
      36. 1.36. RedHat/CentOS 安裝時如何載入 Raid Card 驅動程式
      37. 1.37. CentOS 5 無法使用 4GB 以上 RAM
      38. 1.38. 遠端桌面管理-VNC
      39. 1.39. RPM 套件管理
      40. 1.40. 如何找出device名稱(/dev/sda)與LUN channel的對應列表?
      41. 1.41. Apache 網頁認證與  Windows Active Directory 整合
      42. 1.42. 編譯安裝 MRTG 流量監控套件
      43. 1.43. 指令 grep 的強化版
      44. 1.44. 關於 Joomla 1.5.x 網站被駭後所做的因應措施
      45. 1.45. 解開 RPM內的檔案,但不作安裝
      46. 1.46. 關閉  USB 儲存裝置的連接但不能影響 USB 鍵盤/滑鼠  
      47. 1.47. 執行 umount 遇到 device is busy,但又不能重開機,該怎辦?
      48. 1.48. 如何使用 patch/diff 指令
      49. 1.49. 編輯器 VI 必學招
      50. 1.50. 比 top 還好用的工具 - htop
      51. 1.51. 指令 dd 的用法
      52. 1.52. Can't mount remotely Linux host on AIX
      53. 1.53. 分析CPU/Memory使用狀況 - ps command
      54. 1.54. 指令 ls 技巧
    2. 2. 延伸閱讀

    版本為 01:26, 21 Nov 2024

    到這個版本。

    返回到 版本存檔.

    查閱目前版本

    1. 1. 筆記整理
      1. 1.1. 變更系統預設語系
      2. 1.2. Swap 相關指令
      3. 1.3. CentOS 6 問題
      4. 1.4. sendmail 轉信設定
      5. 1.5. [PHP] 檢查 extension 是否載入
      6. 1.6. 完整複製 Home 目錄
      7. 1.7. 關閉 EXT3 的 AUTO FSCK
      8. 1.8. 檢查檔案的日期
      9. 1.9. 查詢 DHCP Server IP
      10. 1.10. 檢查 Linux 開機時所使用的 kernel 參數
      11. 1.11. 數字換算工具 - bc
      12. 1.12. [CentOS] 移除預設的 Apache Test Page
      13. 1.13. 帳號管理
      14. 1.14. SSHFS 透過 SSH 掛載遠端主機目錄
      15. 1.15. tar 使用技巧
      16. 1.16. sudo 使用技巧
      17. 1.17. Linux 的模組指令
      18. 1.18. Perl 使用技巧
      19. 1.19. 複製目錄下大量檔案,但不要覆蓋原有檔案也不要出現提示(Rsync)
      20. 1.20. 製作目前系統的臨時開機光碟
      21. 1.21. 安裝 JRE/JDK 6
      22. 1.22. 改善硬碟 I/O 存取效能
      23. 1.23. 強制更新 partition table - partprobe
      24. 1.24. Putty 登入 Linux 執行有關 ncurses 的文字介面時會出現亂碼
      25. 1.25. 解決 btmp 紀錄檔案肥大問題
      26. 1.26. 刪除包含 dash 符號的檔名
      27. 1.27. 掛載 Windows 分享目錄
      28. 1.28. 關閉 SELinux
      29. 1.29. 校時(NTPD)及變更系統的時區-timezone
      30. 1.30. WGET 技巧
      31. 1.31. YUM 套件管理技巧
      32. 1.32. DNS 除錯指令 dig 用法
      33. 1.33. 變更 hostname 方法
      34. 1.34. CPU/Memory Benchmark
      35. 1.35. Linux 系統作燒機/壓力測試(stress test)的工具
      36. 1.36. RedHat/CentOS 安裝時如何載入 Raid Card 驅動程式
      37. 1.37. CentOS 5 無法使用 4GB 以上 RAM
      38. 1.38. 遠端桌面管理-VNC
      39. 1.39. RPM 套件管理
      40. 1.40. 如何找出device名稱(/dev/sda)與LUN channel的對應列表?
      41. 1.41. Apache 網頁認證與  Windows Active Directory 整合
      42. 1.42. 編譯安裝 MRTG 流量監控套件
      43. 1.43. 指令 grep 的強化版
      44. 1.44. 關於 Joomla 1.5.x 網站被駭後所做的因應措施
      45. 1.45. 解開 RPM內的檔案,但不作安裝
      46. 1.46. 關閉  USB 儲存裝置的連接但不能影響 USB 鍵盤/滑鼠  
      47. 1.47. 執行 umount 遇到 device is busy,但又不能重開機,該怎辦?
      48. 1.48. 如何使用 patch/diff 指令
      49. 1.49. 編輯器 VI 必學招
      50. 1.50. 比 top 還好用的工具 - htop
      51. 1.51. 指令 dd 的用法
      52. 1.52. Can't mount remotely Linux host on AIX
      53. 1.53. 分析CPU/Memory使用狀況 - ps command
      54. 1.54. 指令 ls 技巧
    2. 2. 延伸閱讀

    筆記整理

    **如何快速搜尋筆記內容**
    建議使用 Firefox 為主要瀏覽器,只要輸入 / 然後在頁面最下方輸入要搜尋的關鍵字即可,往下搜尋按 F3。

    變更系統預設語系

    CentOS 6
    編輯 /etc/sysconfig/i18n

    英文
    LANG="en_US.UTF-8"
    
    繁體中文
    LANG="zh_TW.UTF-8"
    
    簡體中文
    LANG="zh_CN.UTF-8"
    
    Swap 相關指令
    // 檢查目前的 swap 配置
    > free
    > swapon -s
    
    // 關閉 swap
    > swapon /dev/sda3
    
    // 開啟 swap
    > swapoff /dev/sda3
    
    // 製作一個 swap 系統
    > mkswap /dev/sda3 
    
    CentOS 6 問題

    (http://wiki.centos.org/zh-tw/FAQ/CentOS6)

    沒有 setup 指令

    yum install setuptool
    yum install system-config-network*
    yum install system-config-securitylevel-tui
    yum install system-config-keyboard
    

    預設會啟用 NetworkManager 管理網路,建議關閉

    service NetworkManager stop
    chkconfig NetworkManager off 
    
    sendmail 轉信設定

    架設寄信主機為 192.168.21.75 (smtp.my.domain)
    編輯 /etc/mail/sendmail.cf

    # "Smart" relay host (may be null)
    DS[192.168.21.75]
    
    或者是
    # "Smart" relay host (may be null)
    DSsmtp.my.domain 
    

    需重啟 sendmail 服務

    [PHP] 檢查 extension 是否載入
    php -m | grep imagick
    
    完整複製 Home 目錄

    由於 User 的 Home 目錄內有許多隱藏檔,若要完整複製它們,有兩個方法:

    方法一:可以複製成一個新目錄

    cd /home
    cp -a user1/ user1_new/ 
    

    方法二:複製到一個現有目錄內

    cd /home
    cp -a user1/.[^.]* user1_new/ 
    關閉 EXT3 的 AUTO FSCK

    原因:對於比較大的 filesystem,預設在 mount 次數 > 30 或 180 天後,系統若有重新開機,會自動作 FSCK,這會使 downtime 非常長。

    檢查檔案系統資訊

    # tune2fs -l /dev/VolGroup/LogVol

    Mount count: 1 Maximum mount count: 30 Last checked: Tue Apr 29 13:09:15 2014 Check interval: 15552000 (6 months)

    方法一:永久關閉 - tune2fs(適用於 RedHat 4.x/5.x)

    // 只關閉天數限制
    tune2fs -i 0 /dev/VolGroup/LogVol
    
    // 關閉 mount 次數與天數限制
    tune2fs -c 0 -i 0 /dev/VolGroup/LogVol

    方法二:永久關閉 - fstab(適用於 RedHat 4.x/5.x)
    編輯 /etc/fstab,在第 6 欄位修改成 0

    /dev/VolGroup00/arclogLV        /opt/oracle/arclog      ext3    defaults        1 0
    

    方法三:暫時關閉 - 重啟系統前(適用於 RedHat 4.x/5.x)
    重啟指令

    shutdown -rf
    

    -r  Reboot after shutdown

    -f  Skip fsck on reboot

    方法四:暫時關閉 - 重啟系統後(適用於 RedHat 4.x/5.x)

    在開機選單畫面,按 e > 在 kernel 行最後加上 fastboot

    檢查檔案的日期

    在 AIX 5.3 使用 ls -l 時,有時會無法顯示檔案的日期,替代方式有:

    # istat istflr.MMDB.CAPMM02.CAP.log0924.gz
    Inode 11 on device 50/6 File
    Protection: rw-r--r--
    Owner: 801(istflr)              Group: 801(db2adm)
    Link count:   1         Length 5572891 bytes
    
    Last updated:   Tue Sep 24 09:22:23 TAIST 2013
    Last modified:  Tue Sep 24 09:20:59 TAIST 2013
    Last accessed:  Thu Jan  9 14:28:05 TAIST 2014
    
    查詢 DHCP Server IP
    # dhclient eth0
    
    # grep dhcp-server-identifier /var/lib/dhclient/dhclient.leases 
    
    檢查 Linux 開機時所使用的 kernel 參數
    #> cat /proc/cmdline
    console=ttyAS0,115200 root=/dev/sdb1  rootfstype=ext3 rw  nwhwconf=device:eth0,hwaddr:24:cf:21:ba:22:46 phyaddr:0,watchdog:5000 mem=120M bigphysarea=2048
    
    數字換算工具 - bc

    // 基本運算

    #> bc
    scale=3     ;設定小數點 3 位
    239/60
    3.983
    quit 
    

    // 16 進制換算成 10 進制

    #> echo "ibase=16;A7" | bc
    167
    

    // 2 進制換算成 10 進制

    #> echo "ibase=2;11111111" | bc
    255
    
    [CentOS] 移除預設的 Apache Test Page
    cd /etc/httpd/conf.d
    mv welcome.conf welcome.conf.disabled
    service httpd restart
    帳號管理

    // 建立系統用帳號

    CentOS/RedHat)

    groupadd -r asterisk
    useradd -r -g asterisk -d /var/lib/asterisk -M asterisk
    

    Ubuntu/Debian)

    addgroup --system asterisk
    adduser --system --ingroup asterisk --home /var/lib/asterisk --no-create-home --shell /bin/bash asterisk
    

    // 強迫使用者在第一次登入後,修改他們的登入密碼

    先將帳號鎖定
    # usermod -L <username>
    
    變更帳號期限
    # chage -d 0 <username>
    
    解除帳號鎖定
    # usermod -U <username>

    // 修改帳號的註解 Comment

    # usermod -c "John" john
    
    SSHFS 透過 SSH 掛載遠端主機目錄

    安裝 sshfs 套件

    for CentOS)
    先安裝 EPEL 套件庫
    yum install fuse sshfs
    modprobe fuse
    lsmod fuse
    
    for Ubuntu)
    apt-get install sshfs 
    

    使用 sshfs

    sshfs user@remote_host:/remote_directory /local_mount_point
    

    設定自動掛載

    1. 確認 module fuse 會自動啟動

    2. 編輯 /etc/fstab

    sshfs#root@10.233.10.212:/ /mnt/ssh fuse defaults 0 0
    
    tar 使用技巧
    不解開檔案的搜尋方式
    tar fzt myapp.tar.gz | grep keyword 
    
    壓縮檔案目錄時,想保留完整原始路徑,但都會出現訊息:tar: Removing leading `/' from member names
    試試這
    tar cf nagios.tar -C/ etc/nagios
    
    
    sudo 使用技巧

    必須先修改 sudoers

    以用戶 john 執行 SHELL
    sudo -u john bash -c "whoami"
    
    以用戶 john 開啟 vnc 服務,-H 可保持用戶的 HOME;否則會是 /root。
    sudo -H -u john bash -c "vncserver" 
    

    不需修改 sudoers,但只能適用 root 執行

    su -l john -c "whoami"
    

    帳號 user1 需要有 root 權限,但不想讓他知道 root 密碼

    #visudo
    
    user1   ALL=(ALL)       ALL
    

    NOTEs:

    user1 登入後,執行 sudo -i,輸入 user1 密碼後,就可以成為 root。

    Linux 的模組指令
    啟用模組
    modprobe <module name> option=<option name>
    
    列出已啟用的模組
    lsmod
    
    檢查特定模組的參數值
    cat /sys/module/<module name>/<option name>
    
    Perl 使用技巧

    列出已安裝的模組 - instmodsh

    #instmodsh
    
    cmd? l
    Installed modules are:
       Perl
       asterisk-perl
    cmd? quit
    
    複製目錄下大量檔案,但不要覆蓋原有檔案也不要出現提示(Rsync)
    rsync -avh --ignore-existing source-dir/ target-dir/
    

    複製前先用這指令列出檔案清單

    rsync -anvh --ignore-existing source-dir/ target-dir/ > files.list
    製作目前系統的臨時開機光碟
    mkbootdisk --iso --device ./boot.iso `uname -r`
    

    在 CetOS5.5 執行會出現錯誤:cp: cannot stat `/usr/lib/syslinux/isolinux.bin': No such file or directory
    Ans: 這是因為此版的 mkbootdisk script 內容有一行錯誤

    if [ -n "$isoimage" ]; then
        cfgfile=$MOUNTDIR/isolinux/isolinux.cfg
        bootmsg=$MOUNTDIR/isolinux/boot.msg
    
        # create an iso image; the directory is all we need
        [ -n "$verbose" ] && echo -n "Installing isolinux... "
        mkdir $MOUNTDIR/isolinux
        #cp /usr/lib/syslinux/isolinux.bin $MOUNTDIR/isolinux <----- 改這行
        cp /usr/share/syslinux/isolinux.bin $MOUNTDIR/isolinux
        [ -n "$verbose" ] && echo don

    ↑GO TO TOP↑

    安裝 JRE/JDK 6

    // 下載 jre-6u24-linux-i586-rpm.bin, jdk-6u24-linux-i586-rpm.bin

    chmod u+x jre-6u24-linux-i586-rpm.bin
    ./jre-6u24-linux-i586-rpm.bin 
    
    ## java ##
    alternatives --install /usr/bin/java java /usr/java/jre1.6.0_45/bin/java 20000
     
    ## javaws ##
    alternatives --install /usr/bin/javaws javaws /usr/java/jre1.6.0_45/bin/javaws 20000
     
    ## Java Browser (Mozilla) Plugin 32-bit ##
    alternatives --install /usr/lib/mozilla/plugins/libjavaplugin.so libjavaplugin.so /usr/java/jre1.6.0_45/lib/i386/libnpjp2.so 20000
     
    ## Java Browser (Mozilla) Plugin 64-bit ##
    alternatives --install /usr/lib64/mozilla/plugins/libjavaplugin.so libjavaplugin.so.x86_64 /usr/java/jre1.6.0_45/lib/amd64/libnpjp2.so 20000
    

    確認安裝

    # java -version
    java version "1.6.0_24"
    Java(TM) SE Runtime Environment (build 1.6.0_24-b07)
    Java HotSpot(TM) Client VM (build 19.1-b02, mixed mode, sharing)
    
    改善硬碟 I/O 存取效能

    自 2010 年起所製造的硬碟開始使用 4096-byte(4K) sector size,而 Linux 在預設安裝下仍使用 512-byte 的磁區,就網路測試的數據顯示,以 ext3 磁區,2TB 的 SATA 硬碟,樣本檔案大小 1TB,作檔案複製時,使用 4K-byte sector 竟比 512-byte sector 減少 7 小時。

    指令:
    fdisk -> x  extra functionality (experts only) -> setting the start sector("b") to 64

    測試:

    hdparm -tT /dev/sda1

    參考連結:

    Notes: 並不是所有廠牌的硬碟都有支援 4096-byte sector size。

    ↑GO TO TOP↑

    強制更新 partition table - partprobe

    使用 fdisk 變更 partition table 後,若不想作 reboot 但要立即更新,可以使用指令 partprobe。

    Putty 登入 Linux 執行有關 ncurses 的文字介面時會出現亂碼

    Putty 的設定)

    • Terminal > Use background colour to erase screen [check]
    • Window > Translation
      • Received data assumed .... character set: [UTF-8]
      • Treat CJK ambiguous characters as wide [uncheck]
    • Connection > Data > Terminal-type string [linux]
    解決 btmp 紀錄檔案肥大問題

    敘述:/var/log/btmp 檔案有 1.xGB 以上。
    原因:btmp 用來紀錄系統登入的資訊,若出現異常登入現象,會造成此檔增大。
    解決:使用 lastb 指令檢查所有登入紀錄是否正常,要避免異常的登入,可以修改 SSH Port。

    // 清空 btmp 內容

    cat /dev/null > /var/log/btmp
    

    ↑GO TO TOP↑

    刪除包含 dash 符號的檔名
    rm ./-1234567.txt
    
    掛載 Windows 分享目錄

    CentOS 5)
    ( How to mount remote Windows shares )

    mount.cifs //winbox/getme /mnt/win -o ip=123.123.123.123,username=sushi,password=yummy
    

    ※ mount.cifs 指令在 samba-client 套件內。

    關閉 SELinux

    關於 SELinux

    // Disable SELinux
    重開機後自動關閉

    #vi /etc/sysconfig/selinux
    SELINUX=disabled
    

    手動立即關閉

    #setenforce 0
    

    // 檢查 SELinux 的狀態

    #sestatus
    SELinux status:                 disabled 
    

    ↑GO TO TOP↑

    校時(NTPD)及變更系統的時區-timezone

    校時:

    yum install ntp
    ntpdate pool.ntp.org
    chkconfig ntpd on
    service ntpd start 
    

    檢查校時:

    # ntpstat
    synchronised to NTP server (204.9.54.119) at stratum 2
       time correct to within 121 ms
       polling server every 64 s
    
    # ntpq -p
         remote           refid      st t when poll reach   delay   offset  jitter
    ==============================================================================
    +w1-wdc.ipv4.got 10.0.77.54       4 u   14   64  377  214.365  -16.459   8.887
     clock02.chil01. 204.9.54.119     2 u   15   64  377  278.195   -1.254   0.427
    *ntp.your.org    .CDMA.           1 u   13   64  377  196.313  -16.884   0.456
     LOCAL(0)        .LOCL.          10 l   14   64  377    0.000    0.000   0.001 
    

    變更時區:
    for CentOS 5)

    # ln -s /usr/share/zoneinfo/Asia/Taipei /etc/localtime
    

    或者

    # system-config-date
    

    設定時間:

    # date -s "2 OCT 2006 18:00:00"
    # /sbin/hwclock --systohc 
    
    WGET 技巧

    // Proxy 設定

    $ export http_proxy=http://username:password@this.is.proxy.ip:port
    $ export http_proxy=http://windomain\\username:password@this.is.proxy.ip:port

    或 修改 /etc/wgetrc

    http_proxy=http://windomain\username:password@this.is.proxy.ip:port/
    這裡的 domain 與 username 之間不用雙反斜線。

    // 解決:有些下載時,檔名會包含有 URL 字串

    wget 'HTTP URL Link'

    // 下載整個網頁 HTML 檔(必須開啟 Index of)

    wget -r --no-parent http://xxx.xxx.xxx/aaa/
    
    YUM 套件管理技巧

    // 各種舊版本的套件庫位址

    http://vault.centos.org/

    如果想將多個 CD 的 ISO 檔合併成一個 DVD ISO,可以使用附件區的 mkdvdiso.sh,這只能使用在 RedHat/CentOS 版本,使用方法如下

    yum install anaconda-runtime mkisofs
    
    ./mkdvdiso.sh cd/ /tmp/CentOS-5.5-i386-bin-DVD.iso

    TIPs:

    所有 CD ISO 檔放在 cd/ 目錄內

    必須關閉 SELinux

    輸出檔路徑必須是絕對路徑

    // 清除最新套件庫清單及暫存的套件檔

    yum clean all
    

    // 搜尋套件的某一個檔案

    yum whatprovides <*/xxx.so>
    

    // 安裝時臨時啟用一個不常用的套件庫位址

    yum --enablerepo=elrepo-kernel install kernel-ml kernel-ml-devel
    

    // 安裝本機端的 RPM 套件

    yum --nogpgcheck install htop-1.0.2-1.el5.rf.x86_64.rpm
    

    // 列出所有套件庫位址

    yum repolist
    

    // 安裝 EPEL 套件庫
    EPEL - Extra Packages for Enterprise Linux

    rpm -ivh http://mirror01.idc.hinet.net/EPEL/5/i386/epel-release-5-4.noarch.rpm
    
    rpm -ivh http://mirror01.idc.hinet.net/EPEL/6/i386/epel-release-6-6.noarch.rpm 
    

    // 安裝 ELRepo 套件庫
    ELRepo - The Community Enterprise Linux Repository

    rpm --import http://elrepo.org/RPM-GPG-KEY-elrepo.org
    
    for RHEL-5, CENTOS-5
    rpm -Uvh http://elrepo.org/elrepo-release-5-2.el5.elrepo.noarch.rpm
    
    for RHEL-6, CENTOS-6
    rpm -Uvh http://elrepo.org/elrepo-release-6-3.el6.elrepo.noarch.rpm
    

    // 安裝 RPMforge 套件庫
    RPMforge 是由 Dag 及其他包裝者合作維護的。他們為 CentOS 提供超過 5000 個套件,包括 wine、vlc、mplayer、xmms-mp3 及其他受歡迎的媒體工具。它並不是 Red Hat 或 CentOS 的一部份,但卻是為那些發行版本而設計的。

    // CentOS 如何補安裝套件組
    系統在第一次安裝時,都可以選擇要安裝哪些套件組,假使之後系統要補裝某套件組,例如 GNOME 視窗套件,可以使用這些指令,而不用一一找出有哪些相依性的套件名稱。

    列出有哪些套件組可安裝
    #yum grouplist
    安裝 GNOME 視窗套件組
    #yum groupinstall "GNOME Desktop Environment"

    // 設定 proxy
    編輯 /etc/yum.conf

    proxy=http://<username>:<password>@<this.is.proxy.ip:<port>/
    proxy=http://windowsad\username:password@proxy.server:port/

    // 安裝本機上的 RPM

    # yum localinstall my.rpm
    

    // 建立 YUM 套件庫主機

    安裝套件 createrepo

    createrepo /source/path/reas5
    

    ↑GO TO TOP↑

    DNS 除錯指令 dig 用法

    很早以前 nslookup 就被 dig 所取代,看看這個新工具的用法:

    // 以系統所設的 DNS server(resolv.conf) 查詢網域
    # dig www.osslab.org.tw

    // 以指定的 DNS server(8.8.8.8)查詢網域,並且列出所有 type 紀錄
    # dig @8.8.8.8 osslab.org.tw ANY

    type 可以設 ANY, A, MX, SIG, etc...

    變更 hostname 方法

    標準作業程序是:(以 RedHat/CentOS 為例)
    http://kbase.redhat.com/faq/docs/DOC-8646

    1. 編輯 /etc/sysconfig/network
      HOSTNAME=A.B.C.D
    2. 編輯 /etc/hosts
      111.222.333.444     A.B.C.D    A
    3. 執行指令 hostname
      #hostname A.B.C.D
    4. Reboot

    如果按照上述的 SOP 仍是改不了目前的主機名稱,可能是其他地方有作設置,檢查下列的項目:

    • 檢查 /etc/sysconfig/networking/profiles/default
      這裡是透過 XWindows 網路設定產生的檔案
    • 檢查 /etc/sysctl.conf
      kernel.hostname=xxxx.xxxx.xxxx.xxxx

    ↑GO TO TOP↑

    CPU/Memory Benchmark

    軟體名稱:nbench
    官網連結:http://www.tux.org/~mayer/linux/bmark.html

    安裝方式
    #>tar -xzf nbench-byte-2.2.3.tar.gz
    #>cd nbench-byte-2.2.3
    #>make

    使用方法
    #>./nbench

    軟體名稱:SysBench
    官網連結:http://sysbench.sourceforge.net/
    應用範例:http://poller.se/2010/01/rackspace-c...vs-amazon-ec2/

    Linux 系統作燒機/壓力測試(stress test)的工具

    軟體名稱:stress-1.0.2
    官網位址:http://people.seas.harvard.edu/~apw/stress/

    RPM 安裝檔下載
    http://dag.wieers.com/rpm/packages/stress/

    使用方法

    stress --cpu 2 --io 4 --vm 1 --vm-bytes 128M --timeout 10s
    

    軟體名稱:SysBench
    官網:http://sysbench.sourceforge.net/index.html

     

    ↑GO TO TOP↑

    RedHat/CentOS 安裝時如何載入 Raid Card 驅動程式

    主機有 floppy 時,將下載的驅動程式磁碟片映像檔,使用 dd 指令寫入空白磁碟片,在使用安裝光碟開機後,輸入

    linux dd
    

    主機沒有 floppy 時,將下載的驅動程式磁碟片映像檔,上傳到 FTP/NFS/HTTP 主機,在使用安裝光碟開機後,輸入

    linux dd=ftp://ftp.server.domain/this/is/driver.img
    

    詳細教學:http://www.redhat.com/docs/manuals/e...DRIVERDISK-WHY

    CentOS 5 無法使用 4GB 以上 RAM

    CentOS 在 v5 以後版本,kernel 的套件作了些改變,如果要使用 4GB 以上 RAM,系統必須安裝有 kernel-PAE 套件檔,這個套件安裝後系統會新增一個可支援 4GB 以上 RAM 的 kernel,系統在重新開機後若使用這個 kernel 進行開機,系統就可以正常使用 4GB 以上 RAM 了。

    #> yum install kernel-PAE

    官網相關討論串  

    ↑GO TO TOP↑

    遠端桌面管理-VNC

    設定VNC作遠端連接時的桌面與本地端桌面為同一個,且每次重開機時自動生效。

    //檢查模組 vnc.so 是否存在
    shell>locate vnc.so

    //開機啟動圖形介面時自動載入 vnc.so
    shell>vi /etc/X11/XF86Config

    Section "Module"
            Load  "dbe"
            Load  "extmod"
            ...
            Load  "vnc"

    //設定 VNC 的連接認證
    shell>vi /etc/X11/XF86Config

    Section "Screen"
            ...
            Option "SecurityTypes" "VncAuth"
           Option "UserPasswdVerifier" "VncAuth"
           Option "PasswordFile" "/root/.vnc/passwd"
            ...

    // 修改啟動設定檔 xstartup
    $ vi ~/.vnc/xstartup

    使用 GNOME 為桌面時

    [ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
    xsetroot -solid grey
    #vncconfig -iconic &
    xterm -geometry 80×24+10+10 -ls -title "$VNCDESKTOP Desktop" &
    #twm &
    gnome-session –sm-disable
    gnome-session
    

    使用 KDE 為桌面時

    [ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
    xsetroot -solid grey
    #vncconfig -iconic &
    xterm -geometry 80×24+10+10 -ls -title "$VNCDESKTOP Desktop" &
    twm &
    startkde &
    

    //變更 VNC 密碼
    shell>vpcpasswd /root/.vnc/passwd

    PS. 如果連接時不想作認證,可以修改為

    Section "Screen"
      ...
      Option "SecurityTypes" "None"
    EndSection
    

    ↑GO TO TOP↑

    RPM 套件管理

    // 查詢未安裝的rpm套件的詳細資訊
    shell> less something.rpm

    // 查詢已安裝的套件的詳細資訊
    shell> rpm -qi <rpm_name>

    // 查詢未安裝的套件資訊
    shell> rpm -qpi your.rpm

    // 列出一個尚未安裝的 RPM 所包含的檔案列表
    shell> rpm -qlp your.rpm

    // 查詢檔案所屬的套件名稱
    shell> rpm -qf /usr/bin/ksh

    // 編譯 source rpm
    安裝 rpmbuild 套件
    CentOS5.5) yum install rpm-build

    // 不解開直接編譯
    rpmbuild --rebuild something.src.rpm

    // 建立 RPM 套件

    如何找出device名稱(/dev/sda)與LUN channel的對應列表?

    使用工具 sg_utils,下載位置  http://sg.torque.net/sg/sg3_utils.html

    執行指令 sg_map -i

    root@oradb2 ~]# sg_map -i
    /dev/sg0  /dev/sda  ServeRA   rootvg            V1.0
    /dev/sg1  /dev/sdb  ServeRA   datavg            V1.0
    /dev/sg2  IBM-ESXS  VPBA073C3ETS11 N  A2E8
    /dev/sg3  IBM-ESXS  VPBA073C3ETS11 N  A2E8
    /dev/sg4  IBM-ESXS  VSC7160           1.07
    /dev/sg5  /dev/sdd  i-Raid    gtnas02--VOL#01   R001
    /dev/sg6  /dev/sdc  i-Raid    x3650---VOL#00    R001
    /dev/sg7  /dev/nst0  HP        Ultrium 2-SCSI    F6AW
    /dev/sg8  HP        NS E1200-160      5929
     

      

    執行指令 sg_scan -i

     [root@oradb2 ~]# sg_scan -i
    /dev/sg0: scsi0 channel=0 id=0 lun=0 [em]
        ServeRA   rootvg            V1.0 [rmb=0 cmdq=1 pqual=0 pdev=0x0]
    /dev/sg1: scsi0 channel=0 id=1 lun=0 [em]
        ServeRA   datavg            V1.0 [rmb=0 cmdq=1 pqual=0 pdev=0x0]
    /dev/sg2: scsi0 channel=1 id=0 lun=0 [em]
        IBM-ESXS  VPBA073C3ETS11 N  A2E8 [rmb=0 cmdq=1 pqual=0 pdev=0x0]
    /dev/sg3: scsi0 channel=1 id=1 lun=0 [em]
        IBM-ESXS  VPBA073C3ETS11 N  A2E8 [rmb=0 cmdq=1 pqual=0 pdev=0x0]
    /dev/sg4: scsi0 channel=3 id=0 lun=0 [em]
        IBM-ESXS  VSC7160           1.07 [rmb=0 cmdq=0 pqual=0 pdev=0xd]
    /dev/sg5: scsi1 channel=0 id=0 lun=0
        i-Raid    gtnas02--VOL#01   R001 [rmb=0 cmdq=1 pqual=0 pdev=0x0]
    /dev/sg6: scsi1 channel=0 id=0 lun=1
        i-Raid    x3650---VOL#00    R001 [rmb=0 cmdq=1 pqual=0 pdev=0x0]
    /dev/sg7: scsi1 channel=0 id=1 lun=0
        HP        Ultrium 2-SCSI    F6AW [rmb=1 cmdq=0 pqual=0 pdev=0x1]
    /dev/sg8: scsi1 channel=0 id=1 lun=1
        HP        NS E1200-160      5929 [rmb=0 cmdq=0 pqual=0 pdev=0xc]

     

    ↑GO TO TOP↑

    Apache 網頁認證與  Windows Active Directory 整合

    在要作限制存取的網頁子目錄下,新增一個隱藏檔 .htaccess,內容如下:

    範例一

    AuthMySQLEnable off
    AuthType Basic
    AuthName "USE YOUR WINDOWS ACCOUNT"
    AuthLDAPURL "ldap://myad.mydomain.com.tw/ou=IT,dc=mydomain,dc=com,dc=tw?sAMAccountName?sub?(objectClass=*)"
    # Using this to bind
    AuthLDAPBindDN "CN=John,OU=IT,DC=mydomain,DC=com,DC=tw"
    AuthLDAPBindPassword "123456"
    # When checking for group membership, use the DN of the user, not the HTTP entry
    AuthLDAPGroupAttributeIsDN on
    
    #require valid-user
    #require user Bob
    require valid-user 

    註:
    myad.mydomain.com.tw ; AD 主機名稱
    mydomain.com.tw ; 網域名稱
    ou=IT ; 僅對 IT 單位以內的帳號作認證,若想對所有網域帳號作認證,可刪除這。
    AuthLDAPBindDN ; 設定一組存在的AD帳號作連結依據,尤其對那些有設定限制來賓連結的AD。
    AuthLDAPBindPassword ; 前面所提的帳號的密碼。

    範例二

    AuthMySQLEnable off
    
    AuthType Basic
    
    # What the users will see as a "title" of the login prompt:
    #AuthName "Domain Credentials Required"
    AuthName "Your Domain AD's account required"
    
    # use plain LDAP authentication:
    AuthzLDAPMethod ldap
    
    # FQDN resolvable hostname (or IP) of the Windows
    # AD domain controller:
    AuthzLDAPServer myad.mydomain.com.tw
    
    # Distinguished Name (DN) of the user that mod_authz_ldap should
    # bind to the LDAP server as when searching for the domain user
    # provided by the web client (Active Directory does not allow
    # anonymous binds).  Note, the cn attribute corresponds to the
    # "Display Name" field of a user's account in the Active Directory
    # Users and Computers tool, not their login username:
    AuthzLDAPBindDN "cn=John,ou=IT,dc=mydomain,dc=com,dc=tw"
    
    # the BindDN user's password:
    AuthzLDAPBindPassword "123456"
    
    # LDAP Attribute where the user's domain login username is stored in:
    AuthzLDAPUserKey sAMAccountName
    
    # Base DN to begin searching for users from in the LDAP:
    #AuthzLDAPUserBase "ou=TestOU,dc=mydomain,dc=com,dc=tw"
    AuthzLDAPUserBase "ou=IT,dc=mydomain,dc=com,dc=tw"
    
    # Search in sub-containers below the UserBase DN if
    # necessary (most likely):
    AuthzLDAPUserScope subtree
    
    # Require the username and password provided to be a valid
    # user in the AD:
    require valid-user
    
    # log verbosity level:
    AuthzLDAPLogLevel info 

    要取得 AD 帳號所對應的 LDAP 樹目錄帳號的連結,可以透過 LDAP Browser 這個免費工具(試用30天)。

    延伸閱讀:

    ↑GO TO TOP↑

    編譯安裝 MRTG 流量監控套件

    系統環境:CentOS 5.2

    下載套件:http://oss.oetiker.ch/mrtg/download.en.html

    編譯套件

    ./configure --prefix=/opt/mrtg-2.16.2 \
    --with-gd=/usr/include \
    --with-gd-lib=/usr/lib \
    --with-gd-inc=/usr/include \
    --with-png=/usr/include \
    --with-zlib=/usr/include 

    註:如果出現找不到 GD Library 的錯誤訊息,請安裝 gd-devel  套件

    #yum install gd-devel

    安裝套件

    make
    make install
    

    ↑GO TO TOP↑

    指令 grep 的強化版

    有擔任過 IBM AIX 系統管理員的人,在使用 Linux 的 grep 指令時,一定會不習慣,因為在 AIX 上的 grep 有個 -p 顯示段落的參數,但 Linux 的 grep 卻沒有這功能。這裡教你如何寫一個可顯示段落的 grep 替代指令。

    方法一:pgrep.sh

    reference to undefined name 'syntax' Exception of type 'MindTouch.Deki.Script.Runtime.DekiScriptUndefinedNameException' was thrown. (click for details)

    將它放在 /usr/local/bin,並且 chmod 0755 賦予可執行的權利。

    用法:
    pgrep.sh <file.name> <filter.string>
    cat <file.name> | pgrep.sh - <filter.string>

    另一個選擇,用 perl 也辦得到喔

    cat <file.name> | perl -00 -ne 'print if /<filter.string>/'

    方法二:pgrep.awk

    reference to undefined name 'syntax' Exception of type 'MindTouch.Deki.Script.Runtime.DekiScriptUndefinedNameException' was thrown. (click for details)

    使用方法

    chmod 0755 pgrep.awk
    mv pgrep.awk /usr/local/bin
    cat test.txt | pgrep.awk <keyword> 
    

     

    ↑GO TO TOP↑

    關於 Joomla 1.5.x 網站被駭後所做的因應措施
    1. 升級 Joomla 至最新版。
    2. 關閉 php 參數 allow_url_fopen。

    相關連結:

    解開 RPM內的檔案,但不作安裝

    rpm2cpio xxx.rpm | cpio -idmv

    關閉  USB 儲存裝置的連接但不能影響 USB 鍵盤/滑鼠  

    modprobe -r usb_storage

    vi /etc/modprobe.conf

    alias usb_storage off
    

    ↑GO TO TOP↑

    執行 umount 遇到 device is busy,但又不能重開機,該怎辦?

    //檢查那些程序及用戶使用該目錄

    fuser -m -v <mount_point>
    lsof | grep <mount_point>
    

    //刪除無效的程序

    fuser -i -k <mount_point>
    

    //以上都無效,可重啟 NFS Client daemon,但其他 NFS 目錄也會被迫中斷。

    service netfs stop
    service netfs start
    

    // 網友提供的另一個方法

    umount -l <mount_point>
    

    ↑GO TO TOP↑

    如何使用 patch/diff 指令

    更多教學:http://linux.chinaitlab.com/administer/811248.html
    單一個檔案時)

    //建立更新檔
    #diff -uN old.code new.code > patch.file
    //套用更新檔
    #patch < patch.file
    //回復更新前
    #patch -RE < patch.file
    

    連續多個檔案時)

    //建立更新檔
    #diff -rupN olddir newdir > patch.dir
    //套用更新檔
    #patch -p1 < patch.dir
    //回復更新前
    #patch -RE -p1 < patch.dir
    

    找出兩個目錄的所有原始檔 .c 內容不一致的檔案

    目錄一: asterisk_orig/
    目錄二: asterisk_patched/
    
    $ cd asterisk_orig; find ./ -name "*.c" -exec md5sum -b {} \; > ../asterisk_orig.md5; cd ../
    $ cd asterisk_patched; find ./ -name "*.c" -exec md5sum -b {} \; > ../asterisk_patched.md5; cd ../
    
    $ diff asterisk_orig.md5 asterisk_patched.md5 
    
    273c273
    < 894a111d1efa5901471820e203503039 *./channels/chan_sip.c
    ---
    > 00116baac23473049b5801c9287fb4be *./channels/chan_sip.c
    

    TIPs

    前提是 asterisk_orig 與 asterisk_patched 目錄架構及檔案名稱必須完全一樣,這通常用來找出 asterisk_patched 目錄內被更新過了哪些 .c 檔案。

    編輯器 VI 必學招

    Notes: 指令輸入注意大小寫的不同,輸入大寫的英文是用 shift + 英文字。

     命令執行(注意大小寫不同)  使用說明  使用技巧
     i 以插入字元方式進入編輯模式 與 a 同為進入編輯模式,兩者差別只有游標的起始位置不同
     a 以附加字元方式進入編輯模式  
     h j k l 操控游標的移動,h--向左, j--向下, k--向上, l--向右 當遇到部份作業系統不支援方向鍵使用時,可用此方式代替
     :1 游標移到第一行  
     :22 游標移到第22行 作程式除錯找特定行列時會用到
     gg 游標移至檔首   
     G 游標移至檔尾 編輯大檔案時要移到檔尾不用一頁一頁捲
     :wq 存檔後離開   
     :q! 不存檔離開  如不小心編錯內容,只要沒存檔前就可以用此法離開,保存原始內容
     :set nu 顯示行號  作程式除錯時必用 
     :set nonu 取消行號顯示  
     dd 刪除目前這一行  
     10dd 刪除目前以下10行(含本列)  
     yy 複製目前這一行  
     3yy 複製目前以下3行(含本列)  
     p 貼上  
     :%s/old/new/g 內容包含有old字元的都會取代成new字元   
     /keyword 搜尋文字  
     /\KeyWord 搜尋文字(不分大小寫)  
     ~ 大小寫互換  
     :%s/[ctrl+V and ctrl+M]//g 消除斷行符號 ^M  
     :! ls -l 執行外部 SHELL 指令  :!! 上一個指令
     :vsplit my.file 左右分割視窗且左邊載入 my.file  ctrl + w + w 切換視窗
     :split my.file 上下分割視窗 ctrl + w + w 切換視窗

     

    比對兩個檔案內容

    vi -d file1 file2
    

     

    FAQ:

    Q: 錯誤訊息:A line cannot be longer than 2048 characters.
    A: 這是因為 VI 的每一行字數不可超過 2048 字元,遇到時可以將超過字數的行刪除,另存一個檔。

    cut -c1-2047 before.log > after.log
    


    ↑GO TO TOP↑ 

    比 top 還好用的工具 - htop

    下載位置 http://dag.wieers.com/rpm/packages/htop/
    官方網站 http://htop.sourceforge.net/

    畫面預覽

    htop.png 

    指令 dd 的用法

    備份MBR
    dd if=/dev/hdx of=/path/to/image count=1 bs=512

    光碟轉成 iso 檔
    dd if=dev/cdrom of=/root/cd.iso

    銷毀硬碟資料
    dd if=/dev/urandom of=/dev/hda1

    備份整個 USB-Flash
    dd if=/dev/sdb | gzip > ./my-usb_flash.img.gz

    還原 USB-Flash
    gzip -dc ./my-usb_flash.img.gz | dd of=/dev/sdb

    ↑GO TO TOP↑

    Can't mount remotely Linux host on AIX

    Q: Can't mount remotely Linux host on AIX ????

    A: To run the following commands on your AIX.
    #nfso -o nfs_use_reserved_ports=1
    #nfso -o portcheck=1

    If the configuration would be enabled automatically on system RESTART, edit the file /etc/rc.nfs , and to add above commands in the bottom.

    分析CPU/Memory使用狀況 - ps command

    // CPU 使用率最高前10排名
    ps aux | head -1; ps aux | sort -rn +2 | head -10
    or
    ps aux | head -1; ps aux | sort -rn -k 3 | head -10

    // Memory 使用率最高前10排名
    ps aux | head -1; ps aux | sort -rn +3 | head
    or
    ps aux | head -1; ps aux | sort -rn -k 4 | head

    // 優先權最高的程序
    ps -eakl | sort -n +6 | head
    or
    ps -eal | sort -n -k 7 | head

    // 程序以 nice 值排序
    ps -eakl | sort -n +7
    or
    ps -eal | sort -n -k 8

    // 程序以執行時間排序
    ps vx | head -1;ps vx | grep -v PID | sort -rn +3 | head -10
    or
    ps vx | head -1;ps vx | grep -v PID | sort -rn -k 4 | head -10

    // 程序以 I/O 排序
    ps vx | head -1; ps vx | grep -v PID | sort -rn +4 | head -10
    or
    ps vx | head -1; ps vx | grep -v PID | sort -rn -k 5 | head -10

    // 等待中的程序
    ps vg | head -1; ps vg | grep -w wait

    指令 ls 技巧

    列出目錄名稱

    ls -l | grep ^d
    
    ls -d */
    
    ls myfile[1,3,5,7,9]
    
    ls myfile[1-9]
    

    ↑GO TO TOP↑

    Powered by MindTouch Core