将 Cron 作业存储在哪里,它们会一直运行吗?
Posted
技术标签:
【中文标题】将 Cron 作业存储在哪里,它们会一直运行吗?【英文标题】:Where to store Cron Jobs, and will they always run? 【发布时间】:2012-01-24 20:33:08 【问题描述】:我最近想过使用 cron 作业。在我的站点中,我的设置中有css
、js
和images
文件夹,这不是很相关,但可能需要。
我知道如何执行 cron 任务,但不确定将它放在我的文件中的哪个位置,以便它始终每天运行。
那么我应该把cron作业文件放在哪里,我应该为它创建一个新文件夹,文件扩展名应该是什么?
【问题讨论】:
【参考方案1】:通过SSH登录你的系统,然后输入,
crontab -e
如果这是您第一次编辑,它可能会询问您想使用什么编辑器。 然后开始编辑。
*/1 * * * * /var/www/mysite/public/cron/script.php
将每分钟运行一次 script.php。
【讨论】:
Cpanel 有自己的 cron 接口。 对不起,你应该提到你需要看看如何在 cpanel 中做到这一点。您应该只检查 cpanel 常见问题解答。这应该是显而易见的。【参考方案2】:我在 Mythbuntu 系统上安装的 cron 将其每日 cron 脚本保存在 /etc/cron.daily/
。
文件扩展名在 *nix 上无关紧要。该文件只需要具有可执行权限(并且应该在顶部有一个 shebang 行来说明它应该运行什么程序)。
【讨论】:
这个总是会运行吗?我应该使用什么文件扩展名? 阅读答案! “文件扩展名无关紧要”,因此请使用您喜欢的任何(或不使用)扩展名。【参考方案3】:任何地方,但我建议在 Web 根目录之外。文件扩展名以匹配文件类型
【讨论】:
【参考方案4】:不管你把它放在哪里,只要你用它们的绝对路径调用所有包含的文件以避免混淆。我遇到过
include '../../start.php';
使用 php 命令运行时出现问题(我认为是 usr/bin/php)。可能是因为它是从 php 运行命令位于 Apache 服务器上的不同文件夹中运行它的。因此,当包含文件时,我会使用 $_SERVER['DOCUMENT_ROOT'] 作为包含文件的参考点。
您也可以随时使用 wget 命令来运行它,就好像您在自己的浏览器中运行它一样。这是我使用的:
wgethttp://www.mydomain.ca/cron/cron_whatever.php
可以使用 cPanel cron 选项设置时间,或者您也可以将其写出来。 并且始终打开电子邮件通知,以确保您得到写出的结果,看看是否有任何问题。
【讨论】:
linux.about.com/od/commands/l/blcmdl1_wget.htm 显示 WGET 选项。【参考方案5】:您不直接编辑cron,而是运行crontab -e
,这将有效地保存允许您编辑并将其保存到系统区域中。
【讨论】:
我认为他指的是他通过 cron 作业调用的文件\应用程序。但话说回来,也许你是对的。【参考方案6】:您可以像之前所说的那样使用 SSH,但是有一些托管服务提供商使用 cPanel 并允许您通过易于使用的基于 Web 的界面轻松创建这些 cron 作业,您还可以轻松地为和他们一起跑。
【讨论】:
以上是关于将 Cron 作业存储在哪里,它们会一直运行吗?的主要内容,如果未能解决你的问题,请参考以下文章
Centos / Red Hat 服务器中 Cron 作业的退出代码存储在哪里?