**如何快速搜尋筆記內容**
建議使用 Firefox 為主要瀏覽器,只要輸入 / 然後在頁面最下方輸入要搜尋的關鍵字即可,往下搜尋按 F3。
#> dmsetup ls #> ls -l /dev/disk/by-path #> ls -l /dev/disk/by-id # > ls -l /dev/disk/by-uuid
先註解舊 MAC #> sed -i 's/HWADDR/#HWADDR/g' /etc/sysconfig/network-scripts/ifcfg-eth0 在變更新的 MAC #> service network stop #> ip link set eth0 address xx:xx:xx:xx:xx:xx #> service network start
永久變更
#> vi /etc/sysconfig/network-scripts/ifcfg-eth0 MACADDR=12:34:56:78:90:ab
注意:不用使用 HWADDR。
監看即時 log 當中還能搜尋關鍵字
#> less +F my.log Ctrl + c 進入 nomal mode 後,可以使用搜尋功能 回復原有模式 shift +f (F)
啟用 screen #> screen 離開 screen 但不中止 session (deattach) Ctrl + a + d 列出所有 session #> screen -ls 取回 (resume) 某個 session #> screen -r <session-id> 無法取回 session 時,先 deattach 在 resume #> screen -D <session-id> #> screen -r <session-id> 結束 screen 的 session #> exit
備份已安裝的套件清單
$ dpkg --get-selections $ dpkg --get-selections > /backup/installed-software.log
$ rpm -qa $ rpm -qa > /backup/installed-software.log OR remove software version number (recommended): $ rpm -qa --qf "%{NAME}\n" | sort > /backup/installed-software.log
回復清單上的所有套件
# dpkg --set-selections < /backup/installed-software.log Once list is imported, use the dselect command or other tools to install the packages, enter: # dselect Select 'i' for install the software. OR use the following command: # apt-get dselect-upgrade
# LIST="$( cat /backup/installed-software.log )" If you are using the yum command, type the following bash for loop to install all software: # for s in $LIST; do yum -y install $s; done Or try out the following command (HT to gt): # yum -y install $(cat /backup/installed-software.log)
A Note About RHEL version 4
If you are using RHEL/CentOS v4.x or older, enter: # for s in $LIST; do up2date -i $s; done Alternatively, you can use the following up2date command: # up2date -i $(cat /backup/installed-software.log)
方法一 telnet <IP> <port> 方法二 nc -zv <IP> <port>
使特定檔案無法被任何帳號刪除及變更(包含 root)
chattr +i /etc/passwd lsattr /etc/passwd
TIPs:
+i , add immutable attribute
對整個目錄
chattr -R +i my-dir/-i, remove immutable attribute
使特定檔案的內容,只能插入新行(append mode),不可作內容刪除
chattr +a /var/log/syslog
本機:8888 對應至 遠端 irc.freenode.net:6667
ssh -L 8888:irc.freenode.net:6667 myuser@randomhost.net
假使 SSH port 非標準,而是 2745 時
ssh -p2745 -L8888:irc.freenode.net:6667 myuser@randomhost.net
替代 ifconfig 指令
顯示所有網卡資訊 ip a 顯示 eth0 網卡資訊 ip a show eth0 開啟/關閉網卡 ip link set dev eth0 { up | down } 顯示已開啟的網路裝置 ip link ls up 設定 IP (非永久) ip a add 192.168.1.200/255.255.255.0 dev eth0 移除 IP (非永久) ip a del 192.168.1.200/255.255.255.0 dev eth0 顯示 default gateway 及路由表 ip route show 網路即時狀態 ip -s link
如果磁碟曾經作過 GPT 磁區,之後再用舊版 Linux 安裝系統時,可能會遇到錯誤 Your boot partition is on a disk using the GPT partitioning Scheme but this machines cannot boot using GPT. ,解決方法是必須將磁碟定義為 MBR,步驟:
在安裝 CentOS 過程,選擇語言時,按下 CTRL+ALT+F2,輸入指令
/usr/sbin/parted -s /dev/sda mklabel msdos
如果想定義磁碟為 GPT 磁區
/usr/sbin/parted -s /dev/sda mklabel gpt
補充:
MBR 主要用來做系統開機的磁區
MBR 的磁碟限制是 2TB,GPT 是 1024TB
yum install make libtool autoconf subversion git cvs wget libogg-devel gcc gcc-c++ pkgconfig
CentOS 6
編輯 /etc/sysconfig/i18n
英文 LANG="en_US.UTF-8" 繁體中文 LANG="zh_TW.UTF-8" 簡體中文 LANG="zh_CN.UTF-8"
// 檢查目前的 swap 配置 > free > swapon -s // 關閉 swap > swapon /dev/sda3 // 開啟 swap > swapoff /dev/sda3 // 製作一個 swap 系統 > mkswap /dev/sda3
(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
移除 SELinux
在 6.4 之前版本,套件有 bug,當使用 yum 安裝套件時,會卡在 SELinux 套件升級,並且重開機後會造成 kernel panic 無法開機。
yum remove selinux*
關閉防火牆
// CentOS 7 #> systemctl stop firewalld.service #> systemctl disable firewalld.service #> firewall-cmd --state
架設寄信主機為 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 -i
php -m | grep imagick
編輯 /etc/php.ini
date.timezone = 'Asia/Taipei'
由於 User 的 Home 目錄內有許多隱藏檔,若要完整複製它們,有兩個方法:
方法一:可以複製成一個新目錄
cd /home cp -a user1/ user1_new/
方法二:複製到一個現有目錄內
cd /home cp -a user1/.[^.]* user1_new/
原因:對於比較大的 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
# dhclient eth0 # grep dhcp-server-identifier /var/lib/dhclient/dhclient.leases
#> 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 scale=3 ;設定小數點 3 位 239/60 3.983 quit
// 16 進制換算成 10 進制
#> echo "ibase=16;A7" | bc 167
// 2 進制換算成 10 進制
#> echo "ibase=2;11111111" | bc 255
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
// 限制某帳號不可遠端登入,但可以由其他允許帳號從遠端登入後,執行 su 切換到該帳號
以 CentOS 為例:
1. 編輯 /etc/security/access.conf,加上這幾行
# The line 'cron crond' is required +:devrpt:cron crond tty1 tty2 tty3 tty4 tty5 tty6 -:devrpt:ALL
TIPs:
內容格式為 permission : username: origins
permission + 允許 或 - 拒絕
username 帳號
origins 來源,這可以是 tty 名稱'、主機/網域名稱、IP 。注意:在此例,必須加上 cron crond 這一行,否則該帳號的 crontab 會無法工作。
2. 對於不同的登入服務,需要修改相應的安全設定檔
視需要將以下內容加入其中一項或多項檔案內
# Limited users for remote login via telnet # Check the file /etc/security/access.conf account required pam_access.so
// 鎖定帳號但不移除
Lock #> passwd -l john #> chage -E 0 john Unlock #> passwd -u john #> chage -E john
TIPs:
注意:passwd 雖然可以鎖定帳號,但仍可以用 SSH-Key 登入。
安裝 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 fzt myapp.tar.gz | grep keyword 壓縮檔案目錄時,想保留完整原始路徑,但都會出現訊息:tar: Removing leading `/' from member names 試試這 tar cf nagios.tar -C/ etc/nagios
必須先修改 sudoers
以用戶 john 執行 SHELL sudo -u john bash -c "whoami" 以用戶 john 開啟 vnc 服務,-H 可保持用戶的 HOME;否則會是 /root。 sudo -H -u john bash -c "vncserver" 以用戶 devrpt 執行 db2_get_tbs_usage.sh -d devrptdb sudo -u devrpt -H -s /usr/local/bin/db2_get_tbs_usage.sh -d devrptdb 或 sudo -u devrpt -H bash -c "/usr/local/bin/db2_get_tbs_usage.sh -d devrptdb"
編輯 sudoers
#> visudo alang ALL=(devrpt) /bin/bash,/usr/local/bin/db2_get_tbs_usage.sh
TIPs:
內容格式為
使用者帳號 登入者的來源主機名稱=(可切換的身份) 可下達的指令如果要執行 SHELL Scripts,除了 scripts 路徑以外,還要加上 /bin/bash。
不需修改 sudoers,但只能適用 root 執行
su -l john -c "whoami"
帳號 user1 需要有 root 權限,但不想讓他知道 root 密碼
#visudo user1 ALL=(ALL) ALL
NOTEs:
user1 登入後,執行 sudo -i 或 sudo -s ,輸入 user1 密碼後,就可以成為 root。
啟用模組 modprobe <module name> option=<option name> 列出已啟用的模組 lsmod 檢查特定模組的參數值 cat /sys/module/<module name>/<option name>
列出已安裝的模組 - instmodsh
#instmodsh cmd? l Installed modules are: Perl asterisk-perl cmd? quit
備份或複製目錄,確保檔案及其屬性完全相同
rsync -au --delete <source-dir> <target-dir>
--delete 當 <source-dir> 裡的檔案被刪除時,<target-dir> 裡的同個檔案也會被刪除。
複製目錄下大量檔案,但不要覆蓋原有檔案也不要出現提示(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
// 下載 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)
自 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。
使用 fdisk 變更 partition table 後,若不想作 reboot 但要立即更新,可以使用指令 partprobe。
Putty 的設定)
敘述:/var/log/btmp 檔案有 1.xGB 以上。
原因:btmp 用來紀錄系統登入的資訊,若出現異常登入現象,會造成此檔增大。
解決:使用 lastb 指令檢查所有登入紀錄是否正常,要避免異常的登入,可以修改 SSH Port。
// 清空 btmp 內容
cat /dev/null > /var/log/btmp
rm ./-1234567.txt
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
// 永久 Disable SELinux
重開機後自動關閉
# sed -i 's/SELINUX=.*$/SELINUX=disabled/' /etc/selinux/config
手動立即關閉
#setenforce 0
// 檢查 SELinux 的狀態
#sestatus SELinux status: disabled
// 開機時關閉
編輯開機選單
grub append> ro root=/dev/VolGroup00/LogVo100 selinux=0 enforcing=0
校時:
yum install ntp ntpdate pool.ntp.org chkconfig ntpd on service ntpd start
Crontab:
/etc/crontab
10 * * * * root (/usr/sbin/ntpdate tw.pool.ntp.org && /sbin/hwclock -w) &> /dev/null
檢查校時:
# 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
TIPs:
如果 ntpd server 目前時間的偏移量 offset 太大,會造成 ntpd 無法服務,必須先停止 ntpd 服務,然後用 ntpdate 手動校正時間一次,再啟動 ntpd 服務。
變更時區:
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
// 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/
// 各種舊版本的套件庫位址
// 如果想將多個 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>
// 下載 RPM 套件
yum -y install yum-utils.noarch yumdownloader <package-name> ; Extract downloaded RPM rpm2cpio dekiwiki-10.0.1-3.1.noarch.rpm | cpio -idmv
// 安裝時臨時啟用一個不常用的套件庫位址
yum --enablerepo=elrepo-kernel install kernel-ml kernel-ml-devel
// 使用光碟 ISO方式來升級系統
# vi /etc/yum.repo.d/CentOS-Media.repo [c6-local] name=CentOS-$releasever - Media baseurl=file:///mnt/iso/ gpgcheck=0 enabled=0 NOTE: enabled=0,不是 1。將 DVD 掛載為 /mnt/iso。 # yum --disablerepo=\* --enablerepo=c6-local upgrade
// 安裝本機端的 RPM 套件
yum --nogpgcheck install htop-1.0.2-1.el5.rf.x86_64.rpm
// 列出所有套件庫位址
yum repolist yum repolist enabled
// 列出已安裝套件
yum list installed yum list installed |tail -n +3|cut -d' ' -f1 > installed_packages.lst 或 rpm -qa > installed_packages.lst yum -y install $(cat installed_packages.lst)
// 安裝 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-8.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/RepoForge 套件庫
RPMforge 是由 Dag 及其他包裝者合作維護的。他們為 CentOS 提供超過 5000 個套件,包括 wine、vlc、mplayer、xmms-mp3 及其他受歡迎的媒體工具。它並不是 Red Hat 或 CentOS 的一部份,但卻是為那些發行版本而設計的。
// CentOS 如何補安裝套件組
系統在第一次安裝時,都可以選擇要安裝哪些套件組,假使之後系統要補裝某套件組,例如 GNOME 視窗套件,可以使用這些指令,而不用一一找出有哪些相依性的套件名稱。
列出有哪些套件組可安裝 # yum grouplist 安裝 GNOME 視窗套件組 # yum groupinstall "GNOME Desktop Environment" 移除套件組 # yum groupremove "Office Suite and Productivity" "Dial-up Networking Support"
// 設定 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
很早以前 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...
以 RedHat/CentOS 為例)
http://kbase.redhat.com/faq/docs/DOC-8646
如果按照上述的 SOP 仍是改不了目前的主機名稱,可能是其他地方有作設置,檢查下列的項目:
Ubuntu/Debian)
# vi /etc/hostname [my_host_name] # sudo /etc/init.d/hostname.sh start
其他 Linux)
# sudo echo [my_host_name] > /proc/sys/kernel/hostname
軟體名稱: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/
軟體名稱:stress-1.0.2
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
主機有 floppy 時,將下載的驅動程式磁碟片映像檔,使用 dd 指令寫入空白磁碟片,在使用安裝光碟開機後,輸入
linux dd
主機沒有 floppy 時,將下載的驅動程式磁碟片映像檔,上傳到 FTP/NFS/HTTP 主機,在使用安裝光碟開機後,輸入
linux dd=ftp://ftp.server.domain/this/is/driver.img
CentOS 在 v5 以後版本,kernel 的套件作了些改變,如果要使用 4GB 以上 RAM,系統必須安裝有 kernel-PAE 套件檔,這個套件安裝後系統會新增一個可支援 4GB 以上 RAM 的 kernel,系統在重新開機後若使用這個 kernel 進行開機,系統就可以正常使用 4GB 以上 RAM 了。
#> yum install kernel-PAE
設定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
// 查詢未安裝的rpm套件的詳細資訊
shell> less something.rpm
// 查詢已安裝的套件的詳細資訊
shell> rpm -qi <rpm_name>
// 查詢已安裝套件是 32 或 64 bit
shell> rpm -qa --qf "%{n}-%{v}-%{r}.%{arch}\n" | grep -i <package-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 套件
使用工具 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] |
在要作限制存取的網頁子目錄下,新增一個隱藏檔 .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天)。
延伸閱讀:
系統環境: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
有擔任過 IBM AIX 系統管理員的人,在使用 Linux 的 grep 指令時,一定會不習慣,因為在 AIX 上的 grep 有個 -p 顯示段落的參數,但 Linux 的 grep 卻沒有這功能。這裡教你如何寫一個可顯示段落的 grep 替代指令。
方法一:pgrep.sh
將它放在 /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
使用方法
chmod 0755 pgrep.awk mv pgrep.awk /usr/local/bin cat test.txt | pgrep.awk <keyword>
相關連結:
rpm2cpio xxx.rpm | cpio -idmv
modprobe -r usb_storage
vi /etc/modprobe.conf
alias usb_storage off
//檢查那些程序及用戶使用該目錄
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>
更多教學: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 檔案。
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 切換視窗 |
比對兩個檔案內容
vim -d file1 file2
啟用 VI Highlight Color
#> yum install vim-enhanced NOTE:必須使用 vim 才會有顏色顯示;vi 不支援顏色
Putty 顏色設定優化
ANSI Blue: Red:74 Green:74 Blue:255 ANSI Blue Bold: Red:140: Green:140 Blue:255
FAQ:
Q: 錯誤訊息:A line cannot be longer than 2048 characters.
A: 這是因為 VI 的每一行字數不可超過 2048 字元,遇到時可以將超過字數的行刪除,另存一個檔。
cut -c1-2047 before.log > after.log
下載位置 http://dag.wieers.com/rpm/packages/htop/
官方網站 http://htop.sourceforge.net/
畫面預覽
// 備份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 // 建立一個測試用的大檔案10GB dd if=/dev/zero of=/path/to/image bs=1G count=10 NOTE: 新版 Linux 可以改用指令 fallocate -l 1G test.img
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 使用率最高前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
有用的連結