我的shell脚本不能从crontab (macOS)运行



我正在运行macoS Ventura(13.1)。Bash是我的默认shell。请原谅我,我还是一个shell新手。

我有一个shell脚本存储在我系统上的一个文件中。我可以成功地从终端运行shell脚本:sh ~/Documents/4 Project Folders/Shell Script Project Files/cronjob_test.sh

在几次不成功的运行之后,我剥离了一些代码来简化它-尽管仍然没有乐趣。下面是简化后的脚本:

#! /bin/bash
DEVICE_NAME="MBP 💻"
# Get battery percent charge
BATTERY_PERCENT=55
# Append to log
timestamp() {
date +"%Y-%m-%d %H:%M:%S"
}
TIMESTAMP=$(timestamp)
echo "$TIMESTAMP,$DEVICE_NAME,$BATTERY_PERCENT,Cronjob Test" >> ~/crontab_log.csv
exit 0

当我像上面那样运行脚本时,一个新的csv行被添加到crontab_log.csv中。但是当我尝试从crontab调用这个脚本时,我得到一个错误,这是来自mail:bin/bash: /Users/nadnosliw/Documents/4 Project Folders/Shell Script Project Files/cronjob_test.sh: Operation not permitted

如果你能帮我解决这个问题,那就太棒了!谢谢你的阅读。

下面是我从crontab调用脚本的失败尝试(每4小时):

0 */4 * * * bash ~/Documents/4 Project Folders/Shell Script Project Files/battery_check.sh
0 */4 * * * bin/bash ~/Documents/4 Project Folders/Shell Script Project Files/battery_check.sh
0 */4 * * * sh ~/Documents/4 Project Folders/Shell Script Project Files/battery_check.sh
0 */4 * * * ~/Documents/4 Project Folders/Shell Script Project Files/battery_check.sh

我希望脚本将被执行,并在我的csv文件中添加新一行数据。

根据这个问题[https://stackoverflow.com/questions/31217026/shell-script-my-crontab-script-does-not-run]我也试过:

  • chmod +x ~/Documents/4 Project Folders/Shell Script Project Files/cronjob_test.sh
  • 将脚本更改为如下:-
#! /bin/bash
echo "running"

仍然收到相同的错误:sh: /Users/nadnosliw/Documents/4 Project Folders/Shell Script Project Files/cronjob_test.sh: Operation not permitted

为了解决这个问题,我添加了Barmar和Gordon评论中的正确解决方案。我面临的问题是一个Cron权限问题——我无法从错误消息中推断出来。

根据这个问题的答案,我给了Cron完全的磁盘权限,我的cronjobs现在可以正常工作了。

最新更新