crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。
cron 服务的启动与关闭
# 查看cond 状态 service cron status # 启动cron service cron start # 关闭cron service cron stop # 重启cron service cron restart
crontab 文件格式
基本格式 : * * * * * command 分 时 日 月 周 待执行命令
分钟(0-59) 小时(0-23) 日期(1-31) 月份(1-12) 星期(0-6,0代表星期天)
第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令
生成工具
使用示例
linux命令行,输入命令
crontab -e;
回车后会打开vim编辑器(这个编辑器是命令行中编辑),输入以下命令
# 每晚21:30重启apache 30 21 * * * service httpd restart # 每月的1, 10, 22日的4:55分重启apache, 用,号分割 55 4 1,10,22 * * service httpd restart # 每月的1到10日重启apache, 用-号表示区间 * * 1-10 * * service httpd restart # 每隔2分钟重启apache , 这里的 */2 号 表示从0.0秒开始每隔2分钟执行 */2 * * * * service httpd restart # 每晚11点到早上7点每隔1小时重启服务器, 注意分钟是用0而不是* 假如是*则代表每分钟都在执行 0 23-7/1 * * * service httpd restart # 每天18点到23点每隔30分钟重启服务器, 两种写法都可以 */30 18-23 * * * service httpd restart 0,30 18-23 * * * service httpd restart
精确到秒
crontab的粒度最小是到分钟,但是我们还是可以通过变通的方法做到隔多少秒运行一次。
以下方法将每20秒执行一次
crontab -e * * * * * /bin/date * * * * * sleep 20; /bin/date * * * * * sleep 40; /bin/date
说明:需要将/bin/date更换成你的命令即可
这种做法去处理隔几十秒的定时任务还好,要是每1秒运行一次就得添加60条记录
Yii下使用定时器功能
按照以下步骤进行
在Yii项目根目录找到并打开“console/controllers/”文件夹。
新建“TimingController”并继承“yii\console\Controller”。
创建一个actionTest。 <?php namespace console\controllers; use yii\console\Controller; class TimingController extends Controller { public function actionTest() { file_put_contents('/var/www/mySite/uploads/'.date('His',time()).'.txt',time()); // 要保证uploads文件的可写权限 } }
打开linux命令行,输入命令“crontab -e;”,回车后会打开vim编辑器(这个编辑器是命令行中编辑)。
输入 “* * * * * php /var/www/BeckSports/yii timing/test”(不用分号结尾)。
保存退出vim编辑器(具体看编辑器操作)。
输入命令“service cron restart”重启cron服务。