crontab 如何立即执行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了crontab 如何立即执行相关的知识,希望对你有一定的参考价值。

写好的定时器如何让它马上执行一次看看效果?
cfanwhl 你的回答太2了!!
我设置成 */60 * * * * 不是更好!

* * * * * /bin/date >>/tmp/date.txt
* * * * * sleep 10; /bin/date >>/tmp/date.txt
* * * * * sleep 20; /bin/date >>/tmp/date.txt
* * * * * sleep 30; /bin/date >>/tmp/date.txt
* * * * * sleep 40; /bin/date >>/tmp/date.txt
* * * * * sleep 50; /bin/date >>/tmp/date.txt

每十秒执行,过十秒没看到结果就说明出错了。

另外,可以在脚本里面写一个保存时间到文件,这样就可以测试准确性了。

crontab里面并没有直接执行的命令。

参考技术A 直接拷贝后面的命令执行一下,效果应该是一样的
我一般命令里配置了输出到日志什么的,要验证一下,就是直接拷贝出来执行一下,看看日志文件生成没有
crontab 的命令好像没有查到相关的方法
参考技术B 直接执行文件啊,干嘛还用crontab?

如何使用 crontab 执行 Symfony 命令

【中文标题】如何使用 crontab 执行 Symfony 命令【英文标题】:How to use crontab to execute a Symfony command 【发布时间】:2017-09-05 13:41:54 【问题描述】:

我发现了两个类似的问题,但没有得到帮助。

我有一个 Symfony 命令在我输入时正在工作:

/usr/bin/php /home/bob/example_project/bin/console app:slack

我尝试使用sudo crontab -e 制作一个 crontab(每分钟运行一次):

MAILTO=""

* * * * * /usr/bin/php /home/bob/example_project/bin/console app:slack

但它不起作用。我也找不到任何错误消息。 sudo grep CRON /var/log/syslog 给:

4 月 10 日 13:21:01 example_project CRON[23432]: (root) CMD (/usr/bin/php /home/bob/example_project/bin/console app:slack)

使用sudo crontab -e -u bobsudo crontab -e -u www-data 不会改变任何东西。

我做错了什么?

编辑 logfile.log 有这个:

PHP 致命错误:未捕获 Symfony\Component\Debug\Exception\ClassNotFoundException:试图 从命名空间“Sensio\Bundle\Gene$”加载类“SensioGeneratorBundle” 您是否忘记了另一个名称空间的“使用”语句?在 /home/bob/example_project/app/AppKernel.php:25 堆栈跟踪: 0 /home/bob/example_project/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Kernel.php(403): AppKernel->registerBundles() 1 /home/bob/example_project/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Kernel.php(113): Symfony\Component\HttpKernel\Kernel->initializeBundles() 2 /home/bob/example_project/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Console/Application.php(68): Symfony\Component\HttpKernel\Kernel->boot() 3 /home/bob/example_project/vendor/symfony/symfony/src/Symfony/Component/Console/Application.php(120): Symfony\Bundle\FrameworkBundle\Console\Application->doRun(Object(Sy$ 4 /home/bob/example_project/bin/console(28): S in /home/bob/example_project/app/AppKernel.php on line 25

【问题讨论】:

根据您的日志,它看起来运行正常。尝试登录您的命令以验证一切是否正常运行。也许它在某个地方遇到了错误。还可以尝试将您的电子邮件地址添加到您的 crontab 中的 MAILTO,以便您收到错误通知。 将命令的输出(stdout/stderr)通过管道传输到日志文件....bin/console app:slack >> logfile.log 2>&1 我修复了它:* * * * * export SYMFONY_ENV=prod && /usr/bin/php /home/bob/example_project/bin/console app:slack。有没有更好的方法或者这样可以吗? 也许您在AppKernel.php 中有错字。我不喜欢你日志文件的这部分```“Sensio\Bundle\Gene$`”。问候。 【参考方案1】:

存在环境问题。这修复了它:

SYMFONY_ENV=prod

* * * * * php /home/bob/example_project/bin/console app:slack

不需要 php 的完整路径,/usr/bin/php

如 cmets 中所述,这也有效:

* * * * * php /home/bob/example_project/bin/console app:slack -e prod

【讨论】:

或者只是 * * * * * php /home/bob/example_project/bin/console app:slack -e prod

以上是关于crontab 如何立即执行的主要内容,如果未能解决你的问题,请参考以下文章

如何让crontab执行脚本后并且把日志输出到另一个文件?

如何查看crontab的日志记录

如何查看crontab的日志记录

如何让linux定时任务crontab按秒执行

crontab怎样每隔5分钟执行一次脚本

如何使用 crontab 执行 Symfony 命令