【问题标题】:Cron Bad Minute Error: "home.cron":0: bad minute crontab: errors in crontab file, can't installcron 错误分钟错误:“home.cron”:0:错误分钟 crontab:crontab 文件中的错误,无法安装
【发布时间】:2021-07-20 22:58:32
【问题描述】:

我正在 Mac OS 终端上创建 cron,代码如下:

home.cron的内容:

* * * * * /users/username/desktop/forTrump/script.sh

然后我像这样运行它:

crontab home.cron

然后我得到这个错误:

"home.cron":0: bad minute crontab: crontab 文件中的错误,无法安装

这是上面打开的 shell 文件,我进行了测试,通过从 os 终端执行 ./script.sh 可以完美运行,但我似乎无法在 cron 中运行它而不会出现该错误。

#!/bin/sh    
python /Users/username/Desktop/forTrump/test.py

我已经确保没有换行符导致错误的分钟错误,提前感谢您的帮助。

【问题讨论】:

  • 顺便说一句,我正在尝试运行 test.py 文件,但是我创建一个 shell 文件的原因是因为我认为我可以避免这个错误。原始脚本是 nano home.cron 和 home.cron -- * * * * * python test.py,但我收到了同样的错误。
  • 只有我一个想知道你为什么要为特朗普运行脚本吗?

标签: shell cron


【解决方案1】:

我今天遇到了类似的问题: "/tmp/crontab.vjQAiZ" 1L, 14C 写 crontab:安装新的 crontab "/tmp/crontab.vjQAiZ":0: 糟糕的一分钟 crontab 文件中的错误,无法安装。 是否要重试相同的编辑?

即使我尝试在我的 crontab 列表中添加绝对正确的条目,也会引发相同的错误。 像往常一样,我有谷歌的建议。但没有任何帮助。

我的解决方案:100% 使用 /var/log/ 目录。 看起来 cron 无法更新自己的日志,因此在您想保存更改时会写入类似的错误。

当我删除额外的日志文件后,问题就解决了。

祝你好运!

【讨论】:

    【解决方案2】:

    如果存储 cron 文件的卷空间不足,也会发生此错误(特别是如果错误指示无效分钟位于第 0 列)。

    【讨论】:

    • 我遇到了同样的事情,因为日志分区 /var 可用空间不足。在那之前我找不到问题所在。
    【解决方案3】:

    根据crontab.guru* * * * **\1 * * * * 本质上是相同的,尽管您可能想尝试另一种方法,以防您的系统不喜欢其中一种。

    但是在您发布的home.cron 中,路径是错误的。

    这个:

    * * * * * /users/username/desktop/forTrump/script.sh 
    

    应该是:

    * * * * * /Users/username/Desktop/forTrump/script.sh
    

    但是,如果脚本需要提升权限,那么您将需要使用 root crontab,并且由于在命令之前添加了一个用户列,因此使用的行略有不同,如下所示:

    * * * * * root /Users/username/Desktop/forTrump/script.sh
    

    要以 root 身份安装该脚本,首先切换到 root,如下所示:

    sudo su
    

    接着是:

    crontab home.cron
    

    还看到您在 Mac OS X 上,确保 home.cron 中的行仅以 \n 而不是 \r\n\r 终止

    另见:https://www.dougv.com/2006/12/fixing-a-bad-minute-error-message-when-trying-to-use-crontab-with-certain-unix-text-editors/

    这个问题最常发生是因为您使用的文本编辑器(例如 pico)会在到达某个列位置时通过添加换行符来伪造自动换行。

    Crontab 使用换行符(换行符)分隔作业。每个作业占用一行。因此,如果 crontab 在一行的第一列中看到除整数以外的任何内容,它会抛出“bad minute”错误,因为 minute 参数是 crontab 遇到的第一个参数。

    简单的解决方法是删除由 pico / 你的 *nix 编辑器添加的换行符。您可以通过将光标放在每个额外行的第一个字符上最轻松地做到这一点,然后按退格键直到该行与前一行重新连接,然后重复该过程直到您的整个 cron 命令在一行上。

    【讨论】:

    • 我在 text wrangler 中创建了 script.sh 文件,可以验证没有多余的行。
    • 行以什么结尾?
    • 这行正好:#!/bin/env bash echo /Users/jamalrabie/Desktop/forTrump/test.py
    • 使用 TextWrangler 检查 home.cron 中的行尾并确保它们只是 \n
    • 这是shell文件“script.sh”中的内容,这是在home.cron中: */1 * * * * /users/username/desktop/againstTrump/script.sh跨度>
    【解决方案4】:

    在我的例子中,我在 docker 容器中遇到了这个错误。错误的原因是文件底部有一个空行,删除它问题就消失了。

    【讨论】:

      【解决方案5】:

      您的 cron 作业应该在什么时候运行 - 每分钟?

      m h dom mon dow command
      */1 * * * *  /users/username/desktop/againstTrump/script.sh
      

      【讨论】:

      • 然后 cat -v 你的 crontab 来检查意外的控制字符。
      • 我不知道 OSX 实际存储其 crontab 的位置。应该是 /var/at/tabs - 所以你必须运行 cat -v /var/at/tabs/home.cron
      • 这是我得到的 Reto,用法:sudo -h | -K | -k | -L | -V 用法:sudo -v [-AknS] [-g groupname|#gid] [-p prompt] [-u 用户名|#uid] 用法:sudo -l[l] [-AknS] [-g groupname| #gid] [-p 提示符] [-U 用户名] [-u 用户名|#uid] [-g 组名|#gid] [命令] 用法:sudo [-AbEHknPS] [-C fd] [-g 组名|#gid] [-p 提示符] [-u 用户名|#uid] [-g 组名|#gid] [VAR=value] [-i|-s] [] 用法:sudo -e [- AknS] [-C fd] [-g groupname|#gid] [-p prompt] [-u 用户名|#uid] 文件...
      • 你试过*/1 * * * * /Users/username/Desktop/againstTrump/script.sh Users和Desktop吗?
      • cat -v /var/at/tabs/home.cron 不是 -v /var/at/tabs/home.cron ;)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-02-22
      • 2017-02-01
      • 1970-01-01
      • 2016-09-18
      • 2016-04-16
      • 2021-06-04
      • 2019-05-30
      相关资源
      最近更新 更多