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/ 脚本。大苏尔卡塔利娜的主要内容,如果未能解决你的问题,请参考以下文章