高見龍

iOS app/Ruby/Rails Developer & Instructor, 喜愛非主流的新玩具 :)

Redirect and Pipe

什麼是redirect? 簡單的說,就是把目前所得的資料轉到其它地方。例如:

> ls -al > test

就會把ls -al所得到的資料,全部轉到test這個檔案。要注意的是,如果test檔案原本不存在,執行上面這個指令後,會建立一個新的檔案;如果test檔案已經存在,那上面這個指令就會把test檔案覆蓋掉!!

如果是這樣的話:

> ls -al >> test

兩個大於符號代表會把輸出的結果append到test檔案的最後面。

另外,輸出分成stdoutstderr兩種,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安裝

Webmin是一套Web-based的系統管理軟體,原本複雜難記的指令,只透過瀏覽器就可以簡單的完成。不過,方便歸方便,該記的指令式還是要知道怎麼使用。

Step 1:下載Webmin

到Webmin網站http://www.webmin.com/,可以下載tar.gz或rpm格式的,如果是在linux環境下,下載rpm格式安裝會簡單很多。

Step 2:安裝Webmin

> rpm -ivh webmin-x.xxx-x.noarch.rpm

Step 3:使用Webmin

執行Step2安裝結束後,安裝訊息會告訴你使用網頁瀏覽器連到指定的位置,通常是http://localhost:10000/

第一次使用是以root的帳號密碼來登入,為了安全性的考量,建議第一次登入後新增一位跟root同等權限的使用者,然後把root帳號從Webmin系統 移除(對原系統沒影響,只是root不能使用webmin系統而已),另外,預設的port 10000也建議改到其它的port。

其實Webmin使用並不困難,例如上面提到使用者的新增、修改、更換port這些動作,相信都不難找到在哪裡做設定。

Enjoy it!!

加裝新硬碟on Red Hat 9

今天試著裝上一顆6G的IDE硬碟,打算來當備份資料用的,感覺不是挺困難。

Step 1.分割partition:

> fdisk /dev/hdb原來的硬碟是hda,新的這個是hdb。

Step 2.格式化:

> mke2fs /dev/hdb

Step 3.建立mount的目錄:

> mkdir /backup

因為在Linux環境裡,device是以目錄形態表示,所以先新增一個目錄,待會再把硬碟mount到這個目錄。

Step 4.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

其它相關指令:

  • mount
  • umount
  • fdisk
  • mke2fs
  • e2label
  • fsck
  • mkbootdisk

Runlevel

在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則是有跟指令shutdownpoweroff一樣的效果。

在開機的時候,也可以指定系統啟動的runlevel:

LILO: linux 3

另外,有時忘了root密碼,也可進入single-user mode(runlevel 1)後,直接修改root密碼。

參考網址: http://www.iodynamics.com/education/runlevel.html

Postfix安裝

Sendmail在Un*x系統已行之久遠,是一套功能強大的MTA郵件系統(Mail Transfer Agent),但設定的複雜程度,使人望之怯步,也因為常容易被找到漏洞,所以市面上也推出一些新的MTA軟體,如QMail跟Postfix。我個人覺 得Postfix是目前在效能上也是相當出色的,設定也較容易,如果您也覺得sendmail太複雜,倒是可考慮用postfix來當作MTA。

Step 1 停止 Sendmail 運作:

> /etc/rc.d/init.d/sendmail stop
> kill -9 `cat /var/run/sendmail.pid`
> killall sendmail

Step 2 備份Sendmail 設定:

> mkdir /root/sendmail-old
> cp /etc/aliases /root/sendmail-old/
> cp /etc/sendmail.cf /root/sendmail-old/
> cp /etc/sendmail.cw /root/sendmail-old/
> cp /etc/mail/* /root/sendmail-old/

Step 3 取得postfix的rpm:

可至rpmfind網站搜尋適合的版本

Step 4 安裝 rpm:

> rpm -ivh postfix-xxx-x.i386.rpm

Preparing… ######################################## [100%]
1:postfix ######################################### [100%]
postalias: fatal: My hostname proxy is not a fully qualified name – set myhostname or mydomain in /etc/postfix/main.cf

Step 5 修改 /etc/postfix/main.cf 主要設定檔:

> vi /etc/postfix/main.cf

把myhostname、mydomain改成自己機器的hostname跟domain name。另外,postfix預設值只會接受localhost的smtp,如果要對外服務,記得修改inet_interfaces=all

Step 6 啟動 Postfix:

> /usr/sbin/postfix start

or

> service postfix start

以上是大致的安裝流程,細節部份可再參考下列網站:

初始化相關資料庫:

postmap hash:/etc/postfix/access
postalias hash:/etc/postfix/aliases