网上找了一些资料,都很乱不是很适用
1.有时候在你执行crontab-e的时候如果你是第一次执行这个命令,那么它会让你选择编辑器,如果你选择了之后
想更改编辑器的时候可以用 select-editor 这样再重新选择编辑器,重新再选择就好了
2.有的时候设置了crontab的时候,程序好像是不能执行,最好是重新启动一下cron进行
方法 sudo /etc/init.d/cron stop;/etc/init.d/cronstart 这样就应该没有问题了 sudo service cron restart
3.注意网上都说是crond,但是实际上我们的服务器好像都是cron
service cron start //启动服务
service cron stop //关闭服务
service cron restart //重启服务
service cron reload //重新载入配置
service cron status //查看状态,crontab是不是在运行
查看crontab服务是否已设置为开机启动,执行命令:ntsysv//不起作用
加入开机自动启动://没有试过
chkconfig --level 35 crond on
4.crontab -e //创建
* * * * * # 每隔一分钟执行一次任务
0 * * * * # 每小时的0点执行一次任务,比如6:00,10:00
6,10 * 2 * * # 每个月2号,每小时的6分和10分执行一次任务
*/3,*/5 * * * * # 每隔3分钟或5分钟执行一次任务,比如10:03,10:05,10:06
#分 时 日 月 周
* * * * *
注意周与日月不能同时并存
*代表任意1
,代表多选择,如1,2代表1或者2
-代表范围,23-7放在小时上的话代表晚上11点到早上7点
/代表间隔,如*/3放在分钟上就代表没3分钟
5.cat /etc/crontab作用和crontab -l很像
6.crontab -r删除crontab文件 该命令会删除用户所有的定时任务
7.注意清理系统用户的邮件日志
每条任务调度执行完毕,系统都会将任务输出信息通过电子邮件的形式发送给当前系统用户,这样日积月累,日志信息会非常大,可能会影响系统的正常运行,因此,将每条任务进行重定向处理非常重要。
例如,可以在crontab文件中设置如下形式,忽略日志输出:
0 */3 * * * /usr/local/apache2/apachectl restart >/dev/null 2>&1
“/dev/null 2>&1”表示先将标准输出重定向到/dev/null,然后将标准错误重定向到标准输出,由于标准输出已经重定向到了/dev/null,因此标准错误也会重定向到/dev/null,这样日志输出问题就解决了。
8.新创建的cron job,不会马上执行,至少要过2分钟才执行。如果重启cron则马上执行。
当crontab突然失效时,可以尝试/etc/init.d/crond restart解决问题。或者查看日志看某个job有没有执行/报错
tail -f /var/log/cron。
千万别乱运行crontab -r。它从Crontab目录(/var/spool/cron)中删除用户的Crontab文件。删除了该用户的所有crontab都没了。
在crontab中%是有特殊含义的,表示换行的意思。如果要用的话必须进行转义\%,如经常用的date ‘+%Y%m%d’在crontab里是不会执行的,应该换成date ‘+\%Y\%m\%d’。
9.使用curl定时访问网页
每个1分钟那个访问百度
*/1 * * * * /usr/bin/curl -o /tmp/temp.txt http://www.baidu.com
如果想利用这个来定时执行php函数,写的php网页注意如果执行的时间比较长加上ignore_user_abort();和set_time_limit(0);两句话
下面也可以实现定时,但是都说效率不高
ignore_user_abort();//关掉浏览器,PHP脚本也可以继续执行. set_time_limit(0);// 通过set_time_limit(0)可以让程序无限制的执行下去 $interval=60*30;// 每隔半小时运行 do{ //这里是你要执行的代码 ,需要处理的事物处理完毕了然后就关闭掉进程break sleep($interval);// 等待5分钟 }while(true);
关于PHP定时任务的几种实现:https://segmentfault.com/a/1190000005879428?utm_source=weekly&utm_medium=email&utm_campaign=email_weekly