在linux中有时候想执行定时任务、进行服务器的维护或者清理日志,然后很多时候程序员并不懂得shell脚本,然而我们可以用自己用的语言进行代替,我是PHP程序员、所以就用php

像shell脚本 打开后语法是 #!/bin/bash 或者#!/bin/sh 这样子,这语法的大概意思就是引入bin目录下的命令来执行 ,同理我们用php来执行这个文件 ,创建个mkdirphp文件

#! /bin/php
<?php

mkdir(123);

注意:要把这个mkdirphp文件修改具有执行权限chmod -x。然后我用在当前目录直接执行 ./execphp 直接新建个目录123。然而我们在实际运用中会存在一些误区。就是路径问题、假如我在计划任务上这么写

*/1 * * * * /root/bak_db/mkdirphp

然后执行过后,在/root/bak_db/目录下并没有 123这个目录,其实是在上一层root目录下,有时候在我们粗心的时候,会认为失败。我们查看日志tail -f /var/log/cron 在第一分钟执行的日志、并没有什么问题,第二次执行 日志里会有 (root) MAIL (mailed 216 bytes of output but got status 0x004b#012) 这一条、执行失败了(原因是因为我已经在/root创建成功了123、再次创建失败)。

其实PHP脚本里的正确写法应该是在php脚本里面、引入路径文件或创建文件的时候要给绝对路径。

要不就是命令执行期、是在你要执行的文件内。那么crotab的命令引改这么写

*/1 * * * * cd /root/bak_db && /root/bak_db/mkdirphp

下面是我的计划任务脚本的内容

30 1 * * * sh -x /opt/sh/bak_db.sh 

40 1 * * * cd /root/bak_db && /usr/local/php/bin/php /root/bak_db/bakphp
 
//上面的是每天1点40左右 进入目录、用bin/php命令 执行删除多余备份的sql文件的bakphp脚本
Last modification:January 4, 2020
如果觉得我的文章对你有用,请随意赞赏