目錄表
關掉 console 下的蜂鳴器
sudo modprobe -r pcspkr
或者用 sudo modconf,找到 drivers/input/misc/pcspkr.ko 並移除。
家目錄的原始檔
/etc/skel
手動建帳號
- 編輯 /etc/passwd
- 將 /etc/passwd 與 /etc/shadow 同步化 ( pwconv )
- 編輯 /etc/group
- 將 /etc/group 與 /etc/gshadow 同步化 ( grpconv )
- 開設使用者的自家目錄(通常在 /home 中, 建一個和使用者帳號同名的目錄)
- 將 /etc/skel 中的檔案全拷貝至使用者的自家目錄(cp /etc/skel/.* /home/使用者)
- 調整使用者自家目錄檔案權限
- 設定密碼
大量建帳號
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
手動移除帳號
- 先以 find / -user account 找出所有的帳號檔案,並將他刪除
- 將 /etc/passwd 與 /etc/shadow 的相關資料刪除
- 將 /etc/group 及 /etc/gshadow 相關資料刪除
- 將 /home 底下關於該帳號的目錄刪除
- 到 /var/spool/mail 以及 /var/spool/cron 裡面將相關的使用者檔案刪除
使用者郵件轉寄
.forward (644)
\[email protected] \edward
網路校時
安裝 ntpdate 套件
# ntpdate -s stdtime.gov.tw
Learn 10 good UNIX usage habits
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
- 將 stdout 導到 null,不要將結果寄信
> /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 [email protected]:~
主機後面要加一個「:」代表遠端的主機,「~」代表遠端的家目錄。
透過 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
複製時比對資料新舊
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
- -p 表示保留 permission,ownership,timestamp
- -d 表示完整複製 symlink and hard link
- -R 表示複製子目錄與特殊屬性的檔案 (socket, pipe line file)
tar
- -c : create
- -x : extract
- -t : list
- -f : file
- -j : bzip2
- -z : gzip
- -p: 維持原本的檔案權限
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
- -a All
- -q 顯示訊息佇列
- -m 顯示共享記憶體
- -p 顯示 Process 訊息
curl
列出網頁的詳細 header
$ curl -I [url]
ssh 登入訊息
- 修改 /etc/motd 成想要顯示的內容
- 修改 /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/
