Postfix + Vm-pop3d
一般架設 mail server,通常是在 server 上開立一個帳號(ex: useradd eddie),就差不多可以讓使用者來收發信件了。但一部電腦只設定一組 domain name 的 mail,是有些浪費。但如果在同一台機器上要設定兩個以上不同 domain name 的 email,上面這個方式就行不通了,但透過 postfix 的 virtual alias table,還是可以做到這個功能的。
一般架設 mail server,通常是在 server 上開立一個帳號(ex: useradd eddie),就差不多可以讓使用者來收發信件了。但一部電腦只設定一組 domain name 的 mail,是有些浪費。但如果在同一台機器上要設定兩個以上不同 domain name 的 email,上面這個方式就行不通了,但透過 postfix 的 virtual alias table,還是可以做到這個功能的。
最近在用 sed 處理中文資料的時候,發現經過處理後,有少數字會變成亂碼,後來才知道原來是 locale 沒設定好。
$ echo '65,3,"1111","謝婷雯","xxx@yahoo.com.tw'| sed 's/@/","/g'
結果得到:
65,3,"1111","謝?,"雯","xxx","yahoo.com.tw
我在自己帳號下的 .bash_profile
裡面加上 LC_ALL=zh_TW.Big5
之後:
$ echo '65,3,"1111","謝婷雯","xxx@yahoo.com.tw'| sed 's/@/","/g'
結果就是
65,3,"1111","謝婷雯","xxx","yahoo.com.tw
locale 的環境變數設定有下列幾個:
使用 locale 這個程式可以看到目前 locale 的設定情形:
> locale
LANG=en_US.UTF-8
LC_CTYPE=”zh_TW.Big5″
LC_NUMERIC=”zh_TW.Big5″
LC_TIME=”zh_TW.Big5″
LC_COLLATE=”zh_TW.Big5″
LC_MONETARY=”zh_TW.Big5″
LC_MESSAGES=”zh_TW.Big5″
LC_PAPER=”zh_TW.Big5″
LC_NAME=”zh_TW.Big5″
LC_ADDRESS=”zh_TW.Big5″
LC_TELEPHONE=”zh_TW.Big5″
LC_MEASUREMENT=”zh_TW.Big5″
LC_IDENTIFICATION=”zh_TW.Big5″
LC_ALL=zh_TW.Big5
APT(Advenced Package Tool),是 Linux 用來管理套件的工具,透過 APT 可以更有效率的管理 RPM,不管是安裝、移除、或是升級都很方便。然而 APT 最大的優點,是可以自動處理 RPM 相依性的問題,例如當安裝 A rpm,而 A rpm 和 B rpm 又有相依性的時候,原本作法是先下載 B rpm 安裝後,再下載 A rpm 安裝;利用 APT 則只需要「apt-get install A」就完成了,這樣 APT 就會幫我們下載 A rpm,而且會自動下載相依性檔案(B rpm)幫我們安裝,這樣對 RPM 的安裝、移除、或是升級都可以不用去管煩人的相依性問題了。
什麼是 redirect?簡單的說,就是把目前所得的資料轉到其它地方。例如:
$ ls -al > test
就會把 ls -al 所得到的資料,全部轉到 test 這個檔案。要注意的是,如果 test 檔案原本不存在,執行上面這個指令後,會建立一個新的檔案;如果 test 檔案已經存在,那上面這個指令就會把 test 檔案覆蓋掉!!
如果是這樣的話:
$ ls -al >> test
兩個大於符號代表會把輸出的結果 append 到 test 檔案的最後面。
另外,輸出分成 stdout
跟 stderr
兩種,stdout 就是一般的輸出結果,當在輸入過程有遇到錯誤時,就會送到 stderr,而 1>
跟 2>
分別就代表著 stdout 跟 stderr,要注意數字跟大於符號之間沒有空格。
$ ls -al 1> test 2> test.err
上面這行就是會把 ls -al 的結果輸出到 test 檔案,如果遇到錯誤的,就會導向 test.err 檔案。
redirect 是雙向的,除了「>」,也有「<」,例如:
$ mail -s “hello, eddie” eddie < /home/eddie/test
就是把這個 test 檔寄給指定的使用者。
$ mysql -u root -p mydb < sql.txt
就是把檔案 sql.txt 裡面的 sql 語法,輸入到 mysql 裡的 mydb 資料庫。
而 pipe(管線)跟 redirect 不太一樣,pipe 能處理前一個指令傳來的輸出資訊,處理完後再丟給下一個指令(如果有的話)。例如下面這個指令:
$ ps aux | grep java | more
意思就是說執行 ps 所輸出的結果,丟到 grep 裡面,然後 grep 會把含有java
字串的那一行抓出來,grep 再把結果輸出給 more 指令,如果 grep 輸出的結果超過一頁,more 指令就會負責做分頁的動作。
$ cat test | mail -s “hi” eddie
這個是會把 test 檔案的內容,輸出給 mail 程式,再寄出去。
$ mail -s “hi” eddie < test
這個則是把 test 檔當作附加檔案寄出信件。
以上大致上是 redirect 跟 pipe 的介紹,這在很多地方都用得上,相信熟悉這些技巧將會對系統管理更得心應手。
Webmin 是一套 Web-based 的系統管理軟體,原本複雜難記的指令,只透過瀏覽器就可以簡單的完成。不過,方便歸方便,該記的指令式還是要知道怎麼使用。
到 Webmin 網站,可以下載 tar.gz 或 rpm 格式的,如果是在 linux 環境下,下載 rpm 格式安裝會簡單很多。
> rpm -ivh webmin-x.xxx-x.noarch.rpm
執行 Step2 安裝結束後,安裝訊息會告訴你使用網頁瀏覽器連到指定的位置,通常是 http://localhost:10000/
第一次使用是以 root 的帳號密碼來登入,為了安全性的考量,建議第一次登入後新增一位跟 root 同等權限的使用者,然後把 root 帳號從 Webmin 系統移除(對原系統沒影響,只是 root 不能使用 webmin 系統而已),另外,預設的 port 10000 也建議改到其它的 port。
其實 Webmin 使用並不困難,例如上面提到使用者的新增、修改、更換 port 這些動作,相信都不難找到在哪裡做設定。
Enjoy it!!
今天試著裝上一顆 6G 的 IDE 硬碟,打算來當備份資料用的,感覺不是挺困難。
> fdisk /dev/hdb原來的硬碟是hda,新的這個是hdb。
> mke2fs /dev/hdb
> mkdir /backup
因為在 Linux 環境裡,device 是以目錄形態表示,所以先新增一個目錄,待會再把硬碟 mount 到這個目錄。
> mount -t ext2 /dev/hdb /disk2
這樣大致上就 OK 了。如果想在開機後自動把這個新硬碟掛進來的話,動手修改「/etc/fstab」這個檔案即可。
> vi /etc/fstab
#Device MountPoint filesystem Options dump fsck
/dev/hdb /backup ext3 defaults 1 1
在 Microsoft Windows 開機的時候,除了一般正常開機外,有時候系統出了問題可以進入「安全模式」來解決,在 Linux 的環境也有類似的模式,就是 「runlevel」。通常 Linux 開時的時候,它預設的登入 runlevel 通常是 level 3 或 level 5,而各種 runlevel 也代表不同的意思:
0 – Halt the system
1 – Single-user mode
2 – Multi-user mode (without NFS)
3 – Multi-user mode
5 – Multi-user mode, graphical login
6 – Reboot the system
如果是 runlevel 5,在系統開機後就會進入圖形介面的登入畫面;如果是 runlevel 3,就是文字介面的登入畫面。
當 你按下 Ctrl+Alt+Del
鍵想讓系統重新啟動,其實就是告訴系統進入 runlevel 6 (Reboot the system),系統就會重新開機,你可以利用 telinit 6
達到一樣的效果;而 telinit 0
則是有跟指令 shutdown
、poweroff
一樣的效果。
在開機的時候,也可以指定系統啟動的 runlevel:
LILO: linux 3
另外,有時忘了root密碼,也可進入single-user mode(runlevel 1)後,直接修改root密碼。
參考網址:
在Linux系統,crontab
跟 at
都是可以用來做排程,但這兩者的差異是:
/var/spool/at
目錄下。/var/spool/cron
。at
的使用方法:
> at TIME
如果使用 -m
參數,at
會把排程輸出的結果 mail 給下達指令的使用者。
> at 5am
warning: commands will be executed using (in order) a) $SHELL b) login shell c) /bin/sh
at> mail eddie -s “hi, eddie”
按下 Ctrl+D
就可離開 at
環境
job 1 at 2005-01-19 05:00
使用 atq
可看目前的at排程
> atq
1 2005-01-19 05:00 a root
其中第一個 1 代表這個排程的編號
使用 atm
指令可移除已排好的工作
> atm 1
接下來介紹crontab的用法:
> crontab [-u user] [-l | -e | -r]
-u user :只有 root可使用,可以編譯其他使用者的crontab內容。
-l:列出 crontab 內容。
-e:編輯 crontab 內容。
-r:刪除 crontab 內容。
執行 crontab -e
之後,則會進入一般的文字編輯器畫面編輯。
時間部份有5個欄位,分別是「分」、「時」、「日」、「月」、「星期幾」,最後就是要執行的工作,例如:
0 12 * * * mail eddie -s test
就是在每個月的每天的12點0分時,寄一封主旨為 test 的信件給eddie。其中,「*
」代表所有數字。星期幾這欄數值由0~6,0代表星期日。再看一個例子:
*/5 * * * * mail eddie -s test
其中「*/5
」表示每5分鐘寄一次信。
另外要注意的是,如果只是要刪除某個 crontab 的工作項目,建議使 crontab -e
來編輯,因為使用 -r
參數,會將所有的工作都移除。
如果是系統的例行性工作,不需要以某人的權限執行,則可編輯 /etc/crontab
檔案,詳細的內容在 /etc/crontab
檔案裡面有說明。