Linux服务器上crontab定时执行脚本文件
1、安装crontabs
linux应该都有crontab,没有的话可以安装一下:
yum install crontabs
安装完以后开启crontab服务
service crond start
用以下的方法启动、关闭这个cron服务:
service crond start //启动服务 service crond stop //关闭服务 service crond restart //重启服务 service crond reload //重新载入配置 service crond status //查看crontab服务状态 service crond start //手动启动crontab服务
查看crontab服务是否已设置为开机启动,执行命令:ntsysv (若不存在则执行yum install ntsysv)
2、编写shell和要执行的脚本文件
task.sh:
# @file == 服务器要执行的任务文件路径 # /usr/bin/php == 服务器中php目录 # 在Linux环境下 对该sh脚本 进入vi后执行 :set ff = unix 再 :wq退出 # 修改脚本的文件格式,兼容问题 # 给该脚本777权限 # 执行命令crontab -e 添加任务 */1 * * * * root(用户名) 命令(脚本)路径 #!/bin/bash file='/var/www/html/script/task/cronJob-auto-confirm-recharge.php' /usr/bin/php $file
日后可将所有定时任务都放到task文件夹中:
#!/bin/bash path='/var/www/html/script/task/' filelist=`ls $path/*.php` for file in $filelist do /usr/bin/php $file done
cronJob-auto-confirm-recharge.php:
// 加载基础文件 include dirname(dirname(__FILE__)).'/loadThink.php'; try { /* @var $walletReChargeModel \app\common\model\WalletReCharge */ $walletReChargeModel = model('common/walletReCharge'); $walletReChargeModel->startTrans(); // 更新充值列表 $walletReChargeModel->refreshList(); // 确认充值 $walletReChargeModel->where(['is_settled' => 0, 'status' => 1])->column('id'); $walletReChargeModel->confirmReCharge($ids); htcLog('CronJob Executed At:'.now(), 'cronJob.log'); $walletReChargeModel->commit(); }catch (Exception $e) { htcLog($e->getMessage(), 'cronJob.log'); $walletReChargeModel->rollback(); }
3、添加相应的任务
在命令行输入: crontab -e 然后添加相应的任务,wq存盘退出。
分钟 小时 日 月 星期 用户 命令 * * * * * 用户 命令(脚本)路径 每一分钟执行一次则: */1 * * * * 用户 命令(脚本)路径
直接执行php脚本文件的话 * * * * * php fileName.php
慢慢来才是最快的