網絡技術日誌

關於 PHP, Linux, Open Source 及個人生活記載的網誌。

Entries for March, 2006

監察 MySQL 工具: mytop

對於管理 Unix Like 的系統,很多時也要用 top 來進行監察,而 mytop 就是類似 top 的 MySQL 監察工具。執行 mytop 後,它會每隔幾秒更新一次,而且也可以針對性地監察某一個資料庫。 mytop 支援 MySQL 3.22.x, 3.23.x 及 4.x server,而安裝的系統需要有 Perl, DBI 及 Term::ReadKey,如安裝有 Term::ANSIColor,報告更可以有不同顏色。而在 Debian 下安裝就非常簡單,只需輸入以下指令即可: # apt-get install mytop 安裝好 mytop 後,在執行 mytop 時需要給它 MySQL 的用戶名稱及密碼,例如用戶名稱是 root,密碼是 123456,可以輸入: # mytop -u root -p 123456 mytop 還可以指定要監察的資料庫,就是用 -d 選項,操作如下: # mytop -u [...]

Comments (1)

PHP 用 PEAR 元件編輯 Excel

一般上要操作 Excel 或 Word 檔案也要用 COM 來做,最近發現可以用一個 PEAR 元件 — Spreadsheet_Excel_writer 來完成,而完全不需要借助 COM 元件。它會產生 Excel 5 (BIFF5) 的格式,所有這個版本的功能也可實現。 詳細的使用方法可以 PEAR :: Manual :: Spreadsheet_Excel_Writer 找到。

Leave a Comment

字串處理工具: Awk

Awk 是一種字串處理工具,不論在指令模式或者撰寫 Shell Script 時也十分有用,以下是 Awk 的使用例子: # awk '{ print }' /etc/passwd 以上指令將 /etc/passwd 作為 awk 的輸入檔案,並會將 /etc/passwd 檔案的內容逐行輸出。但這樣使用 awk 看不出它的作用,以下是另一個例子: # awk -F":" '{ print $1 }' /etc/passwd 以上例子使用 awk 時加入了 -F 選項,並指定每一行用 ":" 作為分隔字串。而 print $1 的意思是印出分隔後的第一組字串。輸出結果是系統所有帳號的使用者名稱。 如果將 awk 用管線 (pipe) 和其他指令配合的話,作用會更加大,例如用 "ls -l /etc" 的話,會將/etc 的內容及其他檔案/目錄資料印出,但我不想看建立日期及檔案體積等資訊,只要看檔案/目錄及其權限,可以這樣做: # ls -l /etc | [...]

Comments (2)

開啟 MySQL query cache

如果 MySQL server 是非常繁忙,可以開啟 query cache 以加速回應時間,開啟方法可以在 my.cnf 裡面加入以下項目: (Redhat 下面是 /etc/my.cnf;Debian 是在 etc/mysql/my.cnf) query_cache_size = 268435456 query_cache_type = 1 query_cache_limit = 1048576 以上語法的設定裡面,query_cache_size 是分配 256MB 記憶體空間給 query cache;query_cache_type 設定成 1,是給所有的查詢做 cache;query_cache_limit 是指定個別的查詢語句 1KB 的記憶體空間。 這些數值可根據自己的需要作出更改,設定及存檔後,重新啟動 MySQL 即可。

Comments (1)

流動版 PuTTY: PortaPuTTY

需要用 SSH 管理遠端伺服器的朋友相信也使用過 PuTTY,它是相當出名的 open source SSH client 軟件,而 PortaPuTTY 則是流動版的 PuTTY,可以放在 USB Flash Disk 這類流動裝置內使用。 PortaPuTTY 會將所有的資料儲存在 USB Disk,而不會像 PuTTY 一樣將資料儲存在 Windows registry 裡面。 PortaPuTTY: http://socialistsushi.com/portaputty

Leave a Comment

Unix Crontab 簡介

Crontab 是在 Unix Like 系統下設定排程自動執行的工具,最常用到的地方是備份。而 crontab 有 4 個不同的參數,作用分別是: crontab -e 編輯 crontab 檔案,如果檔案不存在則會自動建立。 crontab -l 顯示 crontab 檔案內容。 crontab -r 刪除 crontab 檔案。 crontab -v 顯示上一次編輯 crontab 的時間,但不是所有系統適用。 編輯 crontab 在指令模式輸入 "crontab -e" 便會用預設編輯器打開 crontab 檔案,排程的格式為每一行一個排程,而每一個排程的內容會是: 分鐘   小時   日   月   星期   執行指令 以下例子會在每晚零時零分自動執行 /root/sync_time.sh,而因為不想儲存輸出結果,所以將輸出放到 /dev/null。 00 00 * * [...]

Leave a Comment

手機監察伺服器運作

現在我的伺服器數量慢慢增加,管理上也跟以往有了改變,很多時就是為了監察伺服器的運作,家中的電腦幾乎是長開。昨天寫了一個小程式,可以產生簡單的伺服器資訊,用手機便可隨時隨地監察所有伺服器的運作。 以前有想過用 PPC 做流通上網,但 PPC 的體積比電話大得多,當沒有拿公事包外出的話,攜帶上很麻煩,因為我習慣將手機放在褲袋 (真擔心手機會爆炸)。所以到目前為止,對我來說流動上網還是用手機較方便。

Comments (2)

MySQL 備份 shell script

這個是我日常用作備份 MySQL database 的 shell script,因為以前是直接將所有資料庫匯出成一個 sql 檔,當其中一個資料庫有問題時,因為沒問題的資料庫不想有改動,要復原資料很麻煩。今天改了一下,它會用 mysqldump 將所有資料庫匯出成獨立 sql 備份檔,然後用 gzip 壓縮成 .gz 檔案。程式會儲存 5 天的備份,當有新備份時,最舊的備份會自動刪除。 使用方法: 修改 db_user, db_passwd 及 db_host 修改成你的 mysql 登入資料,所使用的用戶權限需要與 mysql root 相同。backup_dir 修改成你希望儲存備份的目錄。 最後只要把程式加入 crontab 排程自動執行即可。 檔案下載: mysql_backup.sh

Comments (34)

Ubuntu Dapper 延遲 6 週推出

預期在本年 4 月 20 日推出的 Ubuntu Dapper Drake,經過 Ubuntu 開發社群的討論後,決定會延遲至 6 月 1 日推出,詳細內容可參閱 release schedule。

Leave a Comment

編譯及安裝 MySQL

雖然在 Unix Like 環境已經有很多預先編譯好的軟件,例如 rpm 及 deb,但我較喜歡使用編譯的方法安裝軟件,尤其是 server,以下是編譯及安裝 MySQL 4.1.18 的方法: 1. 到 MySQL Mirror 下載 source code 並儲存到主機上。 2. 執行以下指令: # tar zxvf mysql-4.1.18.tar.gz # cd mysql-4.1.18 # ./configure –prefix=/usr/local/mysql # make # make install # scripts/mysql_install_db 3. MySQL 已經安裝完成,現在需要改變 mysql 目錄的 owner: # chown -R mysql.mysql /usr/local/mysql 4. 執行以上指令後,便可以啟動 MySQL 並更改密碼: # /usr/local/mysql/share/mysql/mysql.server [...]

Leave a Comment

"Argument list too long" 問題

昨天升級 Email Server 的 SquirrelMail,當我將舊版本 SquirrelMail 下面的 data 目錄資料複製到新版本時,出現了 "Argument list too long",然後找了找,發現原來在 Linux 下用 cp, mv, rm 這些指令時,如果輸入的檔案數目太多會出現 "Argument list too long" 錯誤。 因為在 Linux Kernel 內對 command-line arguments 限製了記億體的使用,就例如在一個目錄下有很多檔案,如果用 "cp * /home/user/",那便會出現這個問題,以下列出兩個解決辦法: 1. 分開多個指令執行: 可以將檔案分成幾個指令執行,例如: cp [0-9]* /path/to/ cp [a-l]* /path/to/ cp [m-z]* /path/to/ 2. 使用 find 指令: 另一個方法是用 find 指令,可以一句便完成: find /file_from/* [...]

Comments (2)

Apache 設定網站不同 php 選項

Apache 支援的 Virtual Host 功能十分實用,可以在一台 web server 架設多個網站。在一般的情況下,php.ini 的設定會在所有的 virtual host 上面生效,但有些情況我們需要給予特定網站不同的設定,例如在 php.ini 開啟了 safe_mode,但其中一個網站的 php 程式不支援 safe_mode。 以下例子裡面,主機的 php.ini 已經開啟了 safe_mode,而現在會將 mydomain.com 設定成關閉 safe_mode: 1. 開啟 httpd.conf。 2. 找出 mydomain.com 所使用的 virtual host 段落。 3. 在段落裡面加上: php_admin_flag safe_mode off 4. 儲存後重新啟動 apache 即可。 修改其他 php.ini 選項也可以,只要使用以下格式即可: php_admin_flag 選項名稱 value

Comments (1)

文字模式下執行 PHP

在一般情況下 PHP 是用在網站上,而有些情況需要在文字模式下執行,例如用 PHP 寫 shell script 或需要用 crontab 排程執行等。而在文字模式下執行 PHP 也很方便,假設 PHP 的安裝目錄是 /usr/local/php ,那麼就可以用以下指令執行: /usr/local/php/bin/php -q shell_script.php 如果你跟我一樣懶打字,覺得 /usr/local/php/bin/php 很長的話,可以將 /usr/local/php/bin/php 覆製到 /usr/bin/ 目錄下: cp /usr/local/php/bin/php /usr/bin/php php -q shell_script.php # 現在可以這樣執行 而另一個方法是用其他 shell script 的方法,就是在 PHP 程式的第一行加上 "#!/usr/local/php/bin/php -q",以及將程式加上可執行的權限: chmod +x shell_script.php ./shell_script.php # 可以像其他 shell script 般執行 還有一個方法是用 Lynx 這類文字模式下的瀏覽器,用瀏覽網頁的方式執行。

Comments (1)

Resize 硬碟分割區工具

如果要在儲存了資料的硬碟上新增分割區或 resize 分割區,馬上會想起的工具軟件相信會是 Partition Magic。但 Partition Magic 是收費軟件,如果想要免費軟件作為代替品,可以考慮 Partition Logic。 Partition Logic 是免費的硬碟分割及資料管理軟件,可以建立、刪除、格式化、重組、resize、移動分割區及修改分割區的屬性。Partition Logic 不需要倚賴其他作業系統,因為它已內建 Visopsys 作業系統,只要燒錄在 CD 上開機即可使用。

Comments (2)

透過 SSH 傳送檔案

在兩台主機間傳送檔案時,用 ftp 指令很方便,但另一個較為安全的做法是透過 SSH 來傳送,而且使用上十分簡單 ,只要使用 scp 指令則可。 假如你要把 /home/samtang/ 目錄下所有 .php 副檔名的檔案,傳送到主機 192.168.1.100 的 /var/www/ 下面,登入名稱是 user1,可以輸入: scp /home/samtang/*.php user1@192.168.1.100:/var/www/ 然後系統會詢問你連接密碼,輸入正確密碼後就可以傳送了,但當然用來傳送的帳號需要有合法權限在遠端目錄寫入資料。

Comments (5)