crontab 没有运行 local/bin/ 脚本。大苏尔卡塔利娜

Posted

技术标签:

【中文标题】crontab 没有运行 local/bin/ 脚本。大苏尔卡塔利娜【英文标题】:Crontab is not running local/bin/ script. Catalina, BigSur 【发布时间】:2020-03-26 03:44:13 【问题描述】:

我刚开始使用 crontab,但遇到了一些问题。我已经阅读了一些关于如何在 macOS 上使用它的帖子,但它仍然无法正常工作。

所以, 我写crontab -e,然后编辑为 */1 * * * * cliclick -w 1 m:3,3(例如)- 这意味着每 1 分钟重复点击 x=3;y=3。 什么都没有改变。 但是,当我从终端只使用这个命令时,一切正常。

我已经尝试创建一个script.sh 文件,但情况相同:手动命令可以,而 crontab 不能。

也许,我做错了什么? UPDATE:crontab 拥有全盘访问权限。

更新 2: 我试着在 BigSur 上再做一次。首先我使用一个更简单的命令,比如echo:

* * * * * echo 'test' >> /*/Desktop/text.txt 而且效果很好。之后,我写了自己的script.sh

echo '2test' >> /Users/***/Desktop/t.txt
/usr/local/bin/cliclick -w 1 m:1,3
cliclick -w 1 m:55,44

而且 cliclick 不起作用,因为位于 /usr/local/bin/ 中的其他 bin 文件(cliclick 位于此路径中)

请注意,如果我执行 ./script.sh 则 cliclick 在这两种情况下都可以正常工作。

我彻底搜索了一下,发现虽然crontab:https://github.com/BlueM/cliclick/issues/103

【问题讨论】:

【参考方案1】:

我的问题是,cron 无法访问磁盘,因此它无法运行我的脚本。我必须为/usr/sbin/cron 提供全盘访问权限

查看这篇博文:https://blog.bejarano.io/fixing-cron-jobs-in-mojave/

【讨论】:

仍然无法运行。您知道它可能无法在 MacOS 中运行的任何其他原因吗?我正在使用 Mojave 10.14.5。 我认为这里可能有一些继承。 Unison 也有类似的问题,它在终端 (iTerm) 上运行良好,但在我的 crontab 上运行良好。授予 Unison Disk 访问权限并不能解决此问题。相反,我不得不授予 cron 磁盘访问权限(并从 Unison 中删除了访问权限)。那么也许进程树的顶部是需要访问的?【参考方案2】:

授予terminal.app 完整磁盘访问权限。

您需要在设置>安全和隐私>隐私中为terminal.app授权全盘访问

【讨论】:

你现在是男人了,狗。就是这样。我添加了cron 甚至crontab,但这并没有起到作用。原来我还需要添加terminal.app。谢谢! 令人着迷!关于为什么这些权限与 cron 相关的任何解释?是否使用 Terminal.app 运行脚本(即使脚本在没有 UI 的后台运行)?【参考方案3】:

(macOS Big Sur 版本 11.2.3)

首先你必须用crontab -l验证一个cron是否存在。

创建完 cronjob 后,您会看到类似“crontab:安装新的 crontab”的内容。 (如果您没有看到此消息,则该作业尚未创建,并且在您运行 crontab -l 时不会显示)

为了确保 cronjob 执行,我必须按照@roNn23 @berkinet 的建议进行操作。详细说明链接文章出现故障的情况:

将“全盘访问”(在系统偏好设置 > 安全和隐私 > 隐私下)授予:-

    /usr/sbin/cron 使用转到文件夹快捷方式“command + shift + G” Terminal.app

【讨论】:

【参考方案4】:

您可以通过如下配置来检查运行 cron 时是否有任何错误。

*/1 * * * * cliclick -w 1 m:3,3 >> output.log 2>&1

最后一部分2>&1 也会将 STDERR 重定向到 output.log。

【讨论】:

对于您的路径问题。你可以试试类似的东西。 */1 * * * * cd /Users/your-user-name/Desktop && ./cliclick.sh 您可以尝试在终端中执行此命令/usr/local/Cellar/cliclick -w 1 m:3,3 看看会发生什么吗? formulae.brew.sh/formula/cliclick - 所以,这是 cliclick。我留在哪里都没有关系,例如 /usr/local/Cellar/cliclick 或只是 /Users 或 /。实际上,不明白你的意思:/usr/local/Cellar/cliclick -w 1 m:3,3/usr/local/Cellar/cliclick 是一种文件夹方式,就像另一种方式来酿造实用程序一样。如果您的意思是 cd /usr/local/Cellar/cliclick 然后 cliclick -w 1 m:3,3,那么它可以正常工作。我已经解决了在 c++ 中使用时的问题,但我认为这是个坏主意。谢谢 好的,我认为 cliclick 已安装在 /usr/local/Cellar 中,这就是我希望您尝试该命令的原因。

以上是关于crontab 没有运行 local/bin/ 脚本。大苏尔卡塔利娜的主要内容,如果未能解决你的问题,请参考以下文章

关于crontab的学习总结

linuxcrontab的环境变量问题

EC2_HOME 未设置。从 Cron 运行 AWS 命令

crontab执行失败问题总结

Perl 不在 crontab 中执行

Bash + Expect脚本在cron RHEL 7中不起作用