【问题标题】:Crontab that executes shell script every minute [closed]每分钟执行一次 shell 脚本的 Crontab [关闭]
【发布时间】:2012-09-18 13:54:43
【问题描述】:

我在我的红帽服务器上制作了一个 shell 脚本,需要每分钟运行一次。我的脚本位于/media。我已经像这样编辑了 crontab:

* * * * * /media/statusshellscript.sh

我的脚本肯定在上面的位置,我知道 5 星意味着每分钟运行一次。

哦..我的脚本绝对有效!因为当我做一个 ./statusshellscript 它工作正常。无论如何,这是我的脚本,它基本上只是运行我制作的一个 php 脚本,让生活更轻松。

#!/bin/bash
# Script to execute the PHP Script

cd ~
cd /media/PHPServerTest
php -f index.php

Crontab 目前完全没有做任何事情。不确定接下来要尝试什么?

另外.. 权限应该不是问题,因为我已经完成了chmod 777 statusshellscript

【问题讨论】:

  • 不是每一分钟都是*/1 * * * *吗?
  • @Let_Me_Be 那为什么不*/1 */1 */1 */1 */1呢?
  • 我不肯定,但我认为 * * * * * 是一回事。什么都没有发生……
  • @rednaxela 检查执行权限。我实际上已经看到了一种设置,./script 将评估脚本而不考虑执行权限。
  • 向我们展示 shell 脚本。此外,在您的 crontab 中重定向 stderr 以捕获错误 * * * * * /media/statusshellscript.sh 2>>/tmp/statusshellscript.errors,并为 cron 作业正在运行的用户运行 mail,因为错误也可能在那里结束。

标签: linux shell cron crontab


【解决方案1】:

如果它通过 cronjob 没有运行,但通过 command 运行正常,那么可能有 两个 原因

1) 你从来没有让你的文件 executable ,你可以使用命令解决我的问题

sudo chmod +x filename 

2)你的路径不正确,为了找到绝对路径你可以使用命令

realpath(filename)

如果 realpath 尚未安装,它会告诉你如何安装它的命令

通过检查这些点,它应该可以正常工作。

【讨论】:

  • 我尝试了“sudo chmod +x 文件名”,但没有任何变化。无法让 'realpath()' 工作,但我执行了 'pwd' 并得到了与 crontab 中相同的路径。
  • 如果./filename 有效,chmod +x filename 应该不需要,除非发生了新的事情。快速的ls -l filename 会告诉 OP 设置了哪些位。我仍然认为这是由于 PATH 没有在 crontab 中正确设置。
  • @rednaxela 你可以 sudo realpath(filename) ,通过使用 chmod +x filename 你的文件应该是绿色的,如果它不是之前......
【解决方案2】:

crontab 的 PATH 与 shell 不同。

确保在 crontab 中定义一个 PATH,其中包含脚本所需的所有内容。

另外,请确保脚本以指向所需外壳的有效#! 标记开头。

或者,使用脚本中所有命令的完整路径。

【讨论】:

    【解决方案3】:

    正如其他人所说,我的赌注是路径配置错误。试着把它放到你的路径中:

    "* * * * * /media/statusshellscript.sh"

    在脚本运行时检查该输出文件以查看 PATH。与其在 crontab 中定义 PATH,不如在脚本中定义它。

    【讨论】:

    • 我不能评论缺乏代表,但尝试用你的明确主页替换 ~ (/home/
    • 或者实际上删除“cd ~”,因为它没用
    猜你喜欢
    • 2011-07-20
    • 2014-03-25
    • 2016-11-21
    • 1970-01-01
    • 2014-03-07
    • 1970-01-01
    • 2012-06-30
    • 1970-01-01
    相关资源
    最近更新 更多