linux定时执行任务
1 执行命令:打开任务列表,每一行就是一个定时任务,我们新建一行,就是新建一条定时
crontab -e
2 键盘按 i 进入编辑模式
写入命令
0 */4 * * * curl http://xxx.com/xxx.php
3 按键盘上的Esc键,输入“:wq”回车 保存并退出
上面例子意思是每4个小时的00分通过请求地址的方式执行PHP脚本。
4 写入保存后需要重新加载contabs文件
service crond reload # 我这边提示Redirecting to /bin/systemctl reload crond.service 那就直接输入命令: /bin/systemctl reload crond.service
linux命令行参数祥解:
crontab参数前面5个*依次代表:分钟、小时、日期1~31、月份1~12、星期0~6(0表示周日)
第1列表示分钟1~59 每分钟用或者 */1表示,/n表示每n分钟,例如*/8就是每8分钟的意思,下面也是类推(注意,如果直接把*替换成数字,则表示,当时间到这个时间点才会执行,列如: 00 * * * *,代每当时间为00分钟时执行)
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
* * * * * 后这里部分是你要操作的内容
如果要提高效率,直接用php去执行本地php文件是最佳选择,例如:
00 */2 * * * /usr/local/bin/php /home/www/script.php
这条语句就可以在每2小时的0分钟,通过linux内部php环境执行script.php,注意,这里可不是通过url访问,通过服务器环境来执行哦,而是直接执行,因为绕过了服务器环境,所以效率当然要高很多
tp5测试,每2分钟向runtime文件夹下的test.txt 文件里写入 时间
<?php namespace app\index\controller; class Crontab extends Common { //文章列表 public function test(){ $file = '../runtime/test.txt'; $content = date('Y-m-d H:i:s')."\r\n"; //打开文件$file时,使用追加模式,此时文件指针会在文件开始出 if(!$fp = fopen($file,'a+')){ echo "打开文件$file失败!"; exit; } if(fwrite($fp,$content) === FALSE){ echo "写入文件失败!"; exit; } echo "写入文件成功!"; } }
*/2 * * * * curl http://www.51zuso.com/crontab/test
执行写入成功