我的 shell 脚本无法从 crontab 运行 (macOS)

Dan*_*Dan 2 macos bash shell terminal cron

我正在运行 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
Run Code Online (Sandbox Code Playgroud)

当我按上述方式运行脚本时,新的 csv 行将添加到 crontab_log.csv 中。但是当我尝试从 crontab 调用这个脚本时,我收到一个错误,这是来自mailbin/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
Run Code Online (Sandbox Code Playgroud)

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

根据这个问题[/sf/ask/2185191851/]我也尝试过:

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

echo "running"
Run Code Online (Sandbox Code Playgroud)

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

Dan*_*Dan 5

为了结束这个问题,我添加了来自巴马尔和戈登评论的正确解决方案。我面临的问题是 Cron 权限问题 - 我无法从错误消息中推断出这一点。

根据这个问题的答案,我向 Cron 授予了完整的磁盘权限,我的 cronjobs 现在按预期工作。