【问题标题】:How do i execute this cron job from a mac?我如何从 mac 执行这个 cron 作业?
【发布时间】:2019-05-02 05:05:13
【问题描述】:

我有一个 bash 脚本,如果我在计算机上的任何目录中并且成功推送到我想要的 github,我可以使用 cd ~/Documents/Code/shhh/ && ./testy 执行它。

我正在尝试安排一个 cron 作业每天执行此操作,因此我运行了 crontab -e,它打开了一个 nano 编辑器,然后我将 30 20 * * * cd ~/Documents/Code/shhh/ && ./testy 设置为每天晚上 10:30 运行并点击控制 O,输入并控制 X .但它仍然没有执行。当我输入crontab -l 时,它会显示我的命令,并且当我打开一个新窗口时,我会收到一条You have new mail. 消息。即使当我从任何其他目录运行它时,我的命令仍然不会执行。

我认为我的 crontab 工作在 /var/at/tmp,所以我运行了 30 20 * * * cd ../../../Users/squirrel/Documents/Code/shhh/ && ./testy,但仍然没有,即使当我自己从该目录中写出它时它确实有效。旁注,即使使用 sudo 后我也无法进入 tmp 文件夹

好的,当我输入 mail 时,我看到很多消息,并且在里面我得到了这个错误

---------------Checking Status of 2--------------- [master 0c1fff8] hardyharhar 1 file changed, 1 insertion(+), 1 deletion(-) fatal: could not read Username for 'https://github.com': Device not configured

【问题讨论】:

  • 为什么您认为保持编辑器打开会有所帮助?你保存文件了吗?
  • @tripleee 哈哈不确定。我不太了解纳米。我运行了 control O。这不是保存它吗?
  • 我不知道,我不使用nano。快速谷歌搜索表明是的。

标签: bash macos cron


【解决方案1】:

crontab -e 根本不“实时”编辑 crontab 文件——只有在您保存更改退出编辑器后,更改才会保存到活动文件中。

听起来您可能使用了不正确的目录路径。 crontab 条目中的命令通常会从用户的主目录开始执行。因此,如果您的主目录是 /Users/squirrl,则命令 cd ../parent_directory/ 将尝试移动到 /Users/parent_directory。我怀疑这不是你想要的。

最后,请注意 cron 作业在非常小的环境下运行,无需运行大多数常用的 shell 设置文件(例如 .bashrc)。最值得注意的是,如果您的脚本使用任何不在 /bin 或 /usr/bin 中的命令,您将需要使用它们的显式完整路径,或者更改 PATH 变量以包含它们所在的目录。

【讨论】:

  • 我编辑了上面的问题。我现在正在运行30 20 * * * cd ~/Documents/Code/shhh/ && ./testy 命令cd ~/Documents/Code/shhh/ && ./testy 适用于我计算机上的任何目录,但不适用于cron 作业。谢谢!
  • 脚本中可能有些内容取决于您的正常设置(例如我提到的PATH 问题)。我建议通过在 crontab 中的命令中添加类似 >/tmp/test.log 2>&1 的内容来捕获其输出。 This question on ServerFault 有一些额外的故障排除建议。
【解决方案2】:

默认情况下打开nano Input_file 时,它会以插入模式打开(与vi 不同,我们必须通过按i 键显式进入插入模式)。现在,当您完成CTNRL+O 后,它会询问您是否要保存对打开文件的更改,例如--> File Name to Write: Input_file 如果您按 ENTER,它将保存并返回屏幕(到您的Input_file) 输入新行的位置。现在您可以按CONTRL+X 退出 Input_file。可能是你保存后卡住了,想出来再试一次?

【讨论】:

  • 好吧,我试着按回车,我得到了这个crontab: installing new crontab$ crontab -l5 23 * * * cd ~/Documents/Code/shhh/ && ./testy
  • 这看起来很有希望,但它仍然没有运行
  • @Squirrl,按下cntrl+O 后会要求您保存它,然后按回车键将保存条目。现在通过 CNTRL+X 摆脱困境,请告诉我们?
  • 我没有坚持这一点。我现在得到了那部分,非常感谢。现在它只是没有执行。如果我从其他任何地方运行cd ~/Documents/Code/shhh/ && ./testy,它会运行我的脚本,但是当我将5 23 * * * cd ~/Documents/Code/shhh/ && ./testy 放入/tmp/crontab.L8REs9jMFP 文件时没有运行
  • 当我打开一个新窗口时,它会显示 You have new mail.,而 crontab -l 也会显示一些内容
猜你喜欢
  • 1970-01-01
  • 2015-04-24
  • 2011-11-07
  • 2015-09-21
  • 2021-05-10
  • 1970-01-01
  • 1970-01-01
  • 2014-02-13
  • 1970-01-01
相关资源
最近更新 更多