如果PHP脚本作为cron脚本运行,则使用相对path时,包含通常会失败。 例如,如果你有 require_once('foo.php'); 在命令行上运行时会findfoo.php文件,但是在从cron脚本运行时不会运行。 一个典型的解决方法是首先chdir到工作目录,或使用绝对path。 不过,我想知道,导致这种行为的cron和shell之间有什么不同。 为什么在cron脚本中使用相对path时会失败?
我使用@Scheduled注释在Spring中定义了使用cron样式模板的计划作业。 cron模式存储在configuration属性文件中。 实际上,有两个属性文件:一个默认configuration和一个与环境相关的configuration文件configuration(例如dev,test,prod customer 1,prod customer 2等),并覆盖一些默认值。 我在我的spring上下文中configuration了一个属性占位符bean,它允许我使用${}样式的占位符从我的属性文件中导入值。 作业bean看起来像这样: @Component public class ImagesPurgeJob implements Job { private Logger logger = Logger.getLogger(this.getClass()); @Override @Transactional(readOnly=true) @Scheduled(cron = "${jobs.mediafiles.imagesPurgeJob.schedule}") public void execute() { //Do something //can use DAO or other autowired beans here } } 我的上下文XML的相关部分: <!– Enable configuration of scheduled tasks via annotations –> <task:annotation-driven/> <!– Load […]
我想在分离模式下在docker容器中运行python cron作业。 我的设置如下: 我的python脚本是test.py #!/usr/bin/env python import datetime print "Cron job has run at %s" %datetime.datetime.now() 我的cron文件是my-crontab * * * * * /test.py > /dev/console 和我的Dockerfile是 FROM ubuntu:latest RUN apt-get update && apt-get install -y software-properties-common python-software-properties && apt-get update RUN apt-get install -y python cron ADD my-crontab / ADD test.py / RUN chmod a+x […]
我知道我可以在cron中每五分钟运行一行,如下所示: */5 * * * * /my/script 如果我不想让它在12:00,12:05,12:10运行,而是在12:01,12:06,12:11等运行? 我想我可以这样做: 1,6,11,16,21,26,31,36,41,46,51,56 * * * * /my/script …但这是丑陋的 有没有更好的方法来做到这一点?
我是新的计划与cron和crontab的任务。 我试图安排一个任务的执行,就像我已经login,打开一个terminal,并自己执行它。 但是,我安排了一个任务来帮助我观察计划任务正在执行的$ USER和$ PATH,这就是我发现的: $ crontab -l 41 11 * * * echo "USER: $USER" > ~/Desktop/cron_env.log; echo "PATH: $PATH" >> ~/Desktop/cron_env.log $ cat ~/Desktop/cron_env.log USER: PATH: /usr/bin:/bin 看起来好像$ USER没有被设置,并且$ PATH是非常基本的和/或默认的。 相反,这是我打开一个terminal(login)时看到的,并回显相同的信息: USER: aschirma PATH: /usr/lib/jvm/java-6-sun/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/pkg/icetools/bin:/pkg/hwtools/bin:/pkg/netscape/bin:/pkg/gnu/bin 我需要做什么来使我的crontab任务按我想要的方式运行?
我希望每五分钟运行一次脚本,比如说从13:02开始,这样我就可以每5分钟运行一次脚本,但是从13:04开始运行,所以第二个脚本在第一个任务开始后两分钟运行。 怎么能做到这一点?
在一个crontab文件中,应该使用尾部“&”来指定命令,还是命令将在后台运行? 我有: */20 * * * * /home/me/monitor/check.sh /home/me/monitor/check.properties >> /home/me/monitor/check.log 2>&1 & 我在各个地方看到了这个问题的矛盾答案。 有人说不需要放“&”,其他人则认为,即使所有输出都被redirect,没有和符号的cron等待命令的输出。 谢谢,保罗
我正在致力于一个CRON作业,调用一个PHP脚本,它可以处理很多循环的数据库。 当我限制数据集的时候,它会正确执行,但是当我对整个数据集运行它的时候,脚本会输出一条消息: Killed set_time_limit是(0),memory_limit是(-1) 这是代码部分,它一直死亡: echo "I'm in _getMemberDemographicAttrs\n"; if (! empty ( $member_id )) { $query .= ' AND member_id = ' . $member_id; } $result = mysql_query ( $query, $this->_db ); if ($result) { while ( $rule = mysql_fetch_assoc ( $result ) ) { $rules [] = $rule; } if (! empty ( […]
我试图创build一个任务的cronjob每分钟做一个git pull让我的生产站点与我的主分支同步。 由于权限问题,git pull需要由系统用户nobody完成。 不过似乎这个nobody账号是不允许运行的命令。 所以我必须以root用户身份创build任务。 我尝试的crontab项: */1 * * * * su -s /bin/sh nobody -c 'cd ~heilee/www && git pull -q origin master' >> ~/git.log 它不工作,我不知道如何debugging它。 谁能帮忙? UPDATE1: git pull命令本身是正确的。 我可以运行它没有错误。
我有一个cron“时间定义” 1 * * * * (every hour at xx:01) 2 5 * * * (every day at 05:02) 0 4 3 * * (every third day of the month at 04:00) * 2 * * 5 (every minute between 02:00 and 02:59 on fridays) 我有一个unix时间戳。 有没有一种明显的方法来find(计算)下一次(在给定的时间戳之后)作业是否将被执行? 我正在使用PHP,但问题应该是相当语言不可知的。 [更新] “ PHP Cron Parser ”类(由Raybuild议)计算CRON作业应该执行的最后时间,而不是下一次。 为了更容易:在我的情况下,cron时间参数只是绝对的,单个数字或“*”。 […]