运行 mac osx 来自 cronjob 的命令
Running mac osx commands from cronjob
我的 mac 书中有一个 cronjob(每 10 分钟截图一次),其中 mac osx El Capitan 执行以下命令:
*/10 * * * * cd /Users/userx/Pictures/memes && ./shared.sh
shared.sh 脚本包含以下内容:
#!/bin/bash
_now=$(date +"%m_%d_%Y_%H_%M_%S")
screencapture -x $_now.png
但是当系统执行 cronjob 时我得到这个错误:
./shared.sh: line 3: screencapture: command not found
但是如果我运行直接在终端中shared.sh文件全部执行正确
有什么想法吗??我们可以从 cronjobs 运行 mac osx 命令吗??
screencapture
在 /usr/sbin 中,但 cron 作业的默认 PATH 只是 /usr/bin:/bin
,因此找不到。有几种方法可以解决这个问题:
- 在脚本中使用完整路径(即
/usr/sbin/screencapture -x $_now.png
)。
- 在使用
screencapture
(即 PATH=/usr/bin:/bin:/usr/sbin:/sbin
)之前在脚本中设置 PATH。
- 在您的脚本条目之前的 crontab 中设置 PATH(语法与脚本中的语法相同)。
我的 mac 书中有一个 cronjob(每 10 分钟截图一次),其中 mac osx El Capitan 执行以下命令:
*/10 * * * * cd /Users/userx/Pictures/memes && ./shared.sh
shared.sh 脚本包含以下内容:
#!/bin/bash
_now=$(date +"%m_%d_%Y_%H_%M_%S")
screencapture -x $_now.png
但是当系统执行 cronjob 时我得到这个错误:
./shared.sh: line 3: screencapture: command not found
但是如果我运行直接在终端中shared.sh文件全部执行正确
有什么想法吗??我们可以从 cronjobs 运行 mac osx 命令吗??
screencapture
在 /usr/sbin 中,但 cron 作业的默认 PATH 只是 /usr/bin:/bin
,因此找不到。有几种方法可以解决这个问题:
- 在脚本中使用完整路径(即
/usr/sbin/screencapture -x $_now.png
)。 - 在使用
screencapture
(即PATH=/usr/bin:/bin:/usr/sbin:/sbin
)之前在脚本中设置 PATH。 - 在您的脚本条目之前的 crontab 中设置 PATH(语法与脚本中的语法相同)。