目錄表

關掉 console 下的蜂鳴器

sudo modprobe -r pcspkr

或者用 sudo modconf,找到 drivers/input/misc/pcspkr.ko 並移除。

家目錄的原始檔

/etc/skel

手動建帳號

  1. 編輯 /etc/passwd
  2. 將 /etc/passwd 與 /etc/shadow 同步化 ( pwconv )
  3. 編輯 /etc/group
  4. 將 /etc/group 與 /etc/gshadow 同步化 ( grpconv )
  5. 開設使用者的自家目錄(通常在 /home 中, 建一個和使用者帳號同名的目錄)
  6. 將 /etc/skel 中的檔案全拷貝至使用者的自家目錄(cp /etc/skel/.* /home/使用者)
  7. 調整使用者自家目錄檔案權限
  8. 設定密碼

大量建帳號

for line in `cat account.txt`
do
account=`echo $line | cut -d : -f 1`
passwd=`echo $line | cut -d : -f 2`
useradd -m $account
echo $account:$passwd | chpasswd
done

account.txt 格式:

account:password 

手動移除帳號

  1. 先以 find / -user account 找出所有的帳號檔案,並將他刪除
  2. 將 /etc/passwd 與 /etc/shadow 的相關資料刪除
  3. 將 /etc/group 及 /etc/gshadow 相關資料刪除
  4. 將 /home 底下關於該帳號的目錄刪除
  5. 到 /var/spool/mail 以及 /var/spool/cron 裡面將相關的使用者檔案刪除

使用者郵件轉寄

.forward (644)

\test@ab.com
\edward

網路校時

安裝 ntpdate 套件

# ntpdate -s stdtime.gov.tw

Learn 10 good UNIX usage habits

http://www-128.ibm.com/developerworks/aix/library/au-badunixhabits.html

crontab

系統全域

/etc/crontab

# m h dom mon dow user    command
   0 5    *     *      *    root   /usr/sbin/ntpdate -s stdtime.gov.tw > /dev/null 2>&1

各使用者

$ crontab [參數]
參數 功能
e 修改
l 列出
r 清除

修改設定

# min hour day mon week command
     0      7      *     *      *    /usr/bin/aptitude update > /dev/null 2>&1
> /dev/null 2>&1

交換 stdout 與 stderr

只在 bash 可用。「n>&m」代表改變檔案與 FD 的關聯性,「將 stderr( FD 2)的關聯對象,改成 stdout(FD 1)的關聯對象」。

交換 stdout 與 stderr:使用保留的 FD 3 ~ FD 9。

3>&2 2>&1 1>&3
<&-   關掉 stdin
>&-   關掉 stdout

一次修改許多檔案名稱

把 *.cbe 改成 *.brl

$ rename 's/\.cbe$/\.brl/g' *

設定網路

ifconfig eth0 inet 192.168.50.207 netmask 255.255.255.0

route add default gw 192.168.50.254

NAT 導 Port

內部電腦為 192.168.1.10,對外網卡為 eth0,想導的 port 為 6881。

iptables -t nat -A PREROUTING -P tcp -i eth0 --dport 6881 -j DNAT -- to 192.168.1.10:6881

找檔案

$ locate [string]
$ locate -r "[正規表示法]"

find [location] [qualification]

$ find / -name abc.pdf

遠端傳送單一檔案(scp)

將 file 傳送至遠端,以 username 權限登入,並放置 path 中

scp [file] [username]@[host]:[path]

example:

scp make.conf user@192.168.1.2:~

主機後面要加一個「:」代表遠端的主機,「~」代表遠端的家目錄。

透過 ssh 掛載遠端 filesystem

安裝套件:

sshfs

使用:

# sshfs [username]@[host]: [mount point]

如果出現「fusermount: failed to open /dev/fuse: No such device or address」

# mknod -m 666 /dev/fuse c 10 229

寫進 /etc/fstab 中:

sshfs#user@host:/    /mnt/host    fuse    defaults    0 0

參考:http://fuse.sourceforge.net/wiki/index.php/SshfsFaq

複製時比對資料新舊

find <mount point> -name "*.txt" | cpio -pdm /mnt/a/txt

把指定目錄內的檔案複製一份到 /mnt/a/txt 目錄內,後續若是多次

執行時會比對來源目錄的檔案時間是否比較新,有的話就進行複製更新。

監控網路介面

bwm

bmon

iftop

iptraf

監控溫度及風扇轉速

mbmon

# sudo mbmon

硬體 I/O 狀態

安裝 sysstat 套件

$ iostat /dev/sda1 -k 1    # 硬碟

.exrc

vi 程式的預設設定,可在 vi 裡用「:set all」查詢

set number
syntax on
set paste
set softtabstop=4

cp

tar

tar -cvf filename.tar file1 [file2 ...]    # 建立
tar -tf filename.tar    # 印出包含的檔案
tar -rvf filename.tar file1 [file2 ...]    # 將檔案放入已存在的 .tar 檔中
tar --delete -vf filename.tar file1 [file2 ...]    # 將存在 .tar 裡面的 file1 刪除
tar -xvf filename.tar[.Z | .gz | .bz2]    # 解開(可以不用指定解壓縮方式)

以 bzip2 壓縮

tar -cjvf filename.tar.bz2 file1 [file2 ...]

以 gzip 壓縮

tar -czvf filename.tar.gz file1 [file2 ...]

差異備份

使用選項「-g 紀錄檔」可以依照紀錄檔的時間進行差異備份。下次備份時只會針對有修改的檔案進行備份。

tar -czf backup_1.tar.gz -g times file1 [file2 ...]

下一次:

tar -czf backup_2.tar.gz -g times file1 [file2 ...]

回復備份:只要由舊到新依序將備份解開即可。

ipcs

curl

列出網頁的詳細 header

$ curl -I [url]

ssh 登入訊息

  1. 修改 /etc/motd 成想要顯示的內容
  2. 修改 /etc/init.d/bootmisc.sh
# Update motd
# uname -snrvm > /var/run/motd
# [ -f /etc/motd.tail ] && cat /etc/motd.tail >> /var/run/motd

SSH 不檢查 key

~/.ssh/config

StrictHostKeyChecking no

備份指令

bash

http://blog.wu-boy.com/2006/12/10/52

#!/bin/bash
date=`date +%Y-%m-%d`
RETENTION_PERIOD="7"
HEADER="Backup data"
remove_oldfiles(){
        echo "Removing directory $1 files older than $RETENTION_PERIOD days"
| wall
        find $1 -type f -mtime +$2 -exec rm '{}' \;
}

BACKUPDIR="/home/appleboy /var/www/html"
back_www_dir="/backup01/www_data"

#
# 開始備份
#

cd $back_www_dir

for TARGET in $BACKUPDIR
do
        echo "System backup on $TARGET" | wall
        BASENAME=`basename $TARGET`

        tar -zcvf ${BASENAME}-${date}.tar.gz $TARGET 1>/dev/null
        sleep 2
done

#
# 刪除7天前的資料
#
remove_oldfiles $back_www_dir $RETENTION_PERIOD

Run commands on multiple machines

Fanout and Fanterm: http://blog.wu-boy.com/2010/01/08/1950/