ubuntu系统中crontab定时器学习

时间:2021-05-30 10:37:50

网上找了一些资料,都很乱不是很适用

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