linux crontab命令(与date连用有坑,导出数据库) 定时运行thinkphp链接 404 Not Found

13 篇文章 1 订阅

一、crontab

crontab命令被用来提交和管理用户的需要周期性执行的任务,crond进程每分钟会定期检查是否有要执行的任务。
添加、显示文件:

crontab(选项)(参数)
-e:编辑该用户的计时器设置(如果不存在将会自动新建); 
-l:列出该用户的计时器设置; 
-r:删除该用户的计时器设置; 
-u<用户名称>:指定要设定计时器的用户名称。

文件内参数说明:

minute hour day month week command 顺序:分 时 日 月 周

minute: 表示分钟,可以是从059之间的任何整数。 
hour:表示小时,可以是从023之间的任何整数。 
day:表示日期,可以是从131之间的任何整数。 
month:表示月份,可以是从112之间的任何整数。 
week:表示星期几,可以是从07之间的任何整数,这里的07代表星期日。
command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。

在以上各个字段中,还可以使用以下特殊字符: 
星号(*):
   代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。 
逗号(,):
   可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9” 
中杠(-):
   可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6” 
正斜线(/):
   可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。

如:

每隔两天的上午8点到11点的第3和第15分钟执行 
3,15 8-11 */2 * * command
自动以时间命名导出数据库命令:
05 12 1 1,4,7,10 * mysqldump -uname -p1234234 a>asql`date +"\%Y\%m\%d_\%H:\%M"`.sql

查询服务是否开启:

查看服务状态: service crond status 
启动服务: service crond start 
查看服务是否已设置为开机启动: ntsysv 
加入开机自动启动: chkconfig –level 35 crond on

二、定时调用Thinkphp链接

1、首先在Controller中写入控制器,写法与平常相同。

public function reset(){
    //为了安全,一般判定来源IP,使用秘钥进行权限验证
}

需要注意的是链接问题:
我在浏览器中使用下面链接可以正常访问:

http://www.ccc.com/aaa/index.php/home/bbb/reset

但是在linux使用wget访问时出现404 Not Found。发现其实应该使用下列链接:

http://www.ccc.com/index.php/home/bbb/reset

2、新建crontab文件,并写入命令:

crontab -e //新建文件

写入如下:

//每分钟调用一次
* * * * * wget -q "http://www.ccc.com/index.php/home/bbb/reset"

注意点

1、以下形式的date在crontab中不起作用

`date +"%Y%m%d_%H:%M"`
$(date +"%Y%m%d_%H:%M")

需改成:

`date +"\%Y\%m\%d_\%H:\%M"`
$(date +"\%Y\%m\%d_\%H:\%M")

你可以使用如下命令,查看crontab日志,会发现如果采用普通形式,命令执行不完整,直到date中+号这个地方:

tail /var/log/cron

2、在crontab里以sudo执行命令无效,提示 sudo: sorry, you must have a tty to run sudo 。
需要修改/etc/sudoers,执行visudo或者vim /etc/sudoers 将”Defaults requiretty”这一行注释掉。因为sudo默认需要tty终端,而crontab里的命令实际是以无tty形式执行的。注释掉”Defaults requiretty”即允许以无终端方式执行sudo

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值