网络管理员在日常的工作中难免会使用到 Shell Script,这可以使工作更加方便以及减少出错的机会。一般上编写 shell script 会使用 sh, bash, csh, tcsh, perl 等等来做。
使用 PHP 编写 Shell Script
那么概然有这么多的选择,为什么是使用 PHP 来写?我想最大的好处是连接不同数据库储存数据时会较容易,而且其实 PHP 也可用作 shell script,而且一点也不复杂。请先看以下一个简单的 shell script:
backup.sh
|
1 2 3 4 |
#!/bin/sh cd / tar zcvf etc_config.tgz etc/ mv etc_config.tgz $HOME/backup |
以上这个 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
|
1 2 3 4 |
#!/usr/local/php/bin/php -q <?php echo date("Y/m/d"); ?> |
注意,请根据你的服务器配置设定以上的 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 便会自动执行。