【问题标题】:Simple bash script doesn't cron properly简单的 bash 脚本无法正确 cron
【发布时间】:2021-01-14 13:13:03
【问题描述】:

我正在尝试在我的 macbook-pro 笔记本电脑上运行一个简单的 bash 脚本。最终,我想首先让它适用于 bash 脚本,然后继续我的 python 脚本。我使用以下代码创建了一个简单的 bash 文件(名为 hello.sh):

#!/bin/bash

echo "Hello World" >> /Users/myusername/Desktop/test.txt

而我的crontab -e指定如下:

* * * * * /bin/bash /Users/myusername/Desktop/bash-files/hello.sh

但是,等了一分钟后,我什么也得不到。

谷歌搜索后,我得出结论,也许我遇到了“陷阱”问题(cron 读取的参数与 env 不同)。所以我排队了:

* * * * * env > /tmp/env.output

输出如下

SHELL=/bin/sh
USER=myusername
PATH=/usr/bin:/bin
PWD=/Users/myusername
SHLVL=1
HOME=/Users/myusername
LOGNAME=myusername
_=/usr/bin/env

在我的终端中运行 env 会产生以下相关参数:

SHELL=/bin/zsh
USER=myusername
PATH=/Users/myusername/opt/anaconda3/bin:/Users/myusername/opt/anaconda3/condabin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/TeX/texbin:/opt/X11/bin
PWD=/tmp
SHLVL=1
HOME=/Users/myusername
LOGNAME=myusername
_=/usr/bin/env

我已将上述参数设置添加到我的 hello.sh 脚本中,但仍然一无所获。

谁能指出我的问题是什么?

【问题讨论】:

  • 尝试将脚本和文本文件直接放入/Users/myusername/。 macOS 有一个奇怪的机制来阻止访问 ~/Desktop 和某些其他目录,所以最好排除它。
  • 哇哦,看起来好像执行了我的脚本并生成了文本文件!谢谢!!
  • 不能让cron访问~/Desktop及以下级别吗?
  • 可能有。由于它似乎是与 bash 或 cron 语法无关的 macOS 特定问题,您可以在 Ask Different 上找到提示
  • 与 MacOS 沙盒相关。

标签: bash macos shell command-line cron


【解决方案1】:

These are permission and path errors, easily resolved.

查看系统首选项以授予对二进制文件的完整磁盘访问权限,并在脚本中取消设置 PATH 以捕获任何不完整的路径。

我推荐/usr/local/bin 以便于维护您希望有launchdcron 安排的任何脚本。

如果适合您,您没有理由不能从您的用户文件夹运行。

【讨论】:

  • 感谢@bmike!看起来这对我有用!
猜你喜欢
  • 2011-08-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-07
  • 1970-01-01
  • 1970-01-01
  • 2013-12-01
  • 2018-08-28
相关资源
最近更新 更多