【问题标题】:crontab not running commandcrontab 没有运行命令
【发布时间】:2014-12-03 21:56:30
【问题描述】:

我一直在尝试运行 crontab 命令,但由于某种原因它没有运行。该命令应该发送推送通知。

我的 sudo crontab -e 看起来像这样:

 0 0 * * 0 /home/[user]/resetWeeklyLeaderboard
 * * * * * /home/[user]/pushDelivery

我在上面的位置有一个名为 pushDelivery 的文件,其中包含以下内容:

 /usr/bin/flock -n /home/[user]/PushChatServer/push/lockfile usr/bin/php /home/[user]/PushChatServer/push/push.php development

我还通过执行 chmod +x pushDelivery 使 pushDelivery 可执行。此代码非常适合我的 resetWeeklyLeaderboard 文件,但不会调用 pushDelivery 文件。

如果我运行它会起作用

 /home/[user]/pushDelivery 

如果我运行它会起作用

 /usr/bin/flock -n /home/[user]/PushChatServer/push/lockfile usr/bin/php /home/[user]/PushChatServer/push/push.php development

但是,如果我在 crontab 中这样做

 * * * * * /home/[user]/pushDelivery

 * * * * * /usr/bin/flock -n /home/[user]/PushChatServer/push/lockfile usr/bin/php /home/[user]/PushChatServer/push/push.php development

它不起作用。请帮我。谢谢!

更新:

它仍然不起作用,但我尝试了更多的东西。我尝试在 crontab 中颠倒顺序

 * * * * * /home/[user]/pushDelivery
 0 0 * * 0 /home/[user]/resetWeeklyLeaderboard

它不起作用。我还尝试让我的 resetWeeklyLeaderboard 代码每分钟运行一次

 * * * * * /home/[user]/pushDelivery
 * * * * * /home/[user]/resetWeeklyLeaderboard

这适用于我的 resetWeeklyLeaderboard 代码,但不适用于我的 pushDelivery 代码。这对我来说意味着是我的 pushDelivery 代码中的某些内容导致了问题。但是我从命令行运行 /home/[user]/pushDelivery 并且它可以工作。什么可能导致这个问题?

【问题讨论】:

  • 当你运行env -i /home/[user]/pushDelivery 时会发生什么?
  • 我收到错误 /usr/bin/flock: usr/bin/php: No such file or directory 当我运行 env -i /home/miguel/resetWeeklyLeaderboard 时,我没有收到任何错误。
  • 没关系。当我从 /home/[user] 目录运行 env -i /home/[user]/pushDelivery 时,我只会得到 /usr/bin/flock: usr/bin/php: No such file or directory。如果我 cd ../ 到顶部并从那里运行,则没有错误。奇怪的是,如果我运行env -i /home/miguel/resetWeeklyLeaderboard,我将成为[trueuser],而当我运行env -i /home/miguel/pushDelivery 时,我仍然是[user]。

标签: linux apple-push-notifications crontab flock


【解决方案1】:

我不知道为什么 is 没有运行,但同样的事情发生在我之前,当时我决定这样做
* * * * * /home/[用户]/pushDelivery
试试这个
*/1 * * * * /home/[用户]/pushDelivery
它以这种方式对我有用......(每分钟都运行两个任务)

【讨论】:

  • 我刚试过这个,但不幸的是它对我不起作用。 :(
【解决方案2】:

我解决了这个问题。在我的 pushDelivery 文件中,我应该写:

/usr/bin/flock -n /home/[user]/PushChatServer/push/lockfile /usr/bin/php /home/[user]/PushChatServer/push/push.php development

而我写的是:

/usr/bin/flock -n /home/[user]/PushChatServer/push/lockfile usr/bin/php /home/[user]/PushChatServer/push/push.php development

“usr/bin/php”之前的“/”会有所不同。不知何故,这个斜线将允许它在 crontab 之外工作,但在 crontab 内运行时会失败。我不明白为什么,但这是正确的解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-22
    • 2018-07-17
    • 1970-01-01
    • 2020-05-27
    • 2017-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多