用 PHP 編寫 Shell Script

網絡管理員在日常的工作中難免會使用到 Shell Script,這可以使工作更加方便以及減少出錯的機會。一般上編寫 shell script 會使用 sh, bash, csh, tcsh, perl 等等來做。

使用 PHP 編寫 Shell Script
那麼概然有這麼多的選擇,為什麼是使用 PHP 來寫?我想最大的好處是連接不同資料庫儲存數據時會較容易,而且其實 PHP 也可用作 shell script,而且一點也不複雜。請先看以下一個簡單的 shell script:

backup.sh

以上這個 shell script 是將 etc 目錄備份成壓縮檔 etc_config.tgz,然後將該壓縮檔搬到使用者 Home directory 下的 backup 目錄。
要執行以 shell script,先要使用 chmod u+x backup.sh 將它改為可執行,然後用以下指令執行它:

sh backup.sh

如果要改用 PHP 代替以上所用的 sh,只要修改第一行,將 /bin/sh 換成 /usr/local/php/bin/php -q 即可,例如:

php_time.php


注意,請根據你的伺服器配置設定以上的 php 路徑。最後儲存檔案後將它 chmod u+x,然後打入以下指令執行:

./php_time.php

這時便會在 Shell 下看到輸出現時的日期。

那麼如果是已經寫好的 PHP 程式,是否可以不加上 #!/usr/local/php/bin/php 這一行來執行?答案是可以的,只要改用以下指令:

/usr/local/php/bin/php -q /path/to/script.php

以上的 /usr/local/php/bin/php 同樣是 php 的安裝路徑,而 /path/to/script.php 是程式的儲存位置。

將 PHP Script 自動化
現在可以用 PHP 寫 shell script,那麼也就是說可以將 PHP 放入排程自動執行。只要輸入以下指令便可:

crontab -e

然後系統便會呼叫 vi 編輯器,使用以下格式加入排程工作

00 05 * * * /usr/local/php/bin/php -q /home/yourname/backup.php > /dev/null 2>&1

以上 /home/yourname/backup.php 是 php script 的絕對路徑,而以上例子是設定成每天早上的 5:00 便會自動執行。


Leave a Reply