lp 命令不作为 cron 作业运行(根据没有日志条目

lp 命令不作为 cron 作业运行(根据没有日志条目

我需要定期运行这个 lp 命令:

lp /Users/denniscook/Documents/PrinterManagement/UseInk.pdf 2>&1 >>/Users/denniscook/.cronlogs/runPrinter.log

我在 runPrinter.zsh 脚本中有这个命令:

#!/usr/bin/env zsh

cat >>/Users/denniscook/.cronlogs/runPrinter.log <<EOF

***************************
Enter Job `date`
EOF

lp /Users/denniscook/Documents/PrinterManagement/UseInk.pdf 2>&1 >>/Users/denniscook/.cronlogs/runPrinter.log

cat >> /Users/denniscook/.cronlogs/runPrinter.log <<EOF
Exit Job `date`

EOF

当直接在终端中发出时,或者当在终端中发出脚本时(意味着打印机打印并更新日志),lp 命令会正确执行。但是,当从 cron 运行命令或脚本时,两者都不起作用。

在 crontab 中,我使用下面的 crontab 尝试了两种方法,注释掉一个条目并使用另一个条目。第一个将运行脚本,第二个尝试直接运行命令。

#-----------#
# cron jobs #
#-----------#
#06 11 * * * /Users/denniscook/.scripts/runPrinter.zsh
13 11 * * * lp /Users/denniscook/Documents/PrinterManagement/UseInk.pdf 2>&1 >>/Users/denniscook/.cronlogs/runPrinter.log

~                                                                                                                                       
~                                                                                                                                       

当从终端执行脚本并且它正常工作时,日志条目为:

***************************
Enter Job Sun Jan 29 11:07:26 HST 2023
request id is EPSON_WorkForce_845-1286 (1 file(s))
Exit Job Sun Jan 29 11:07:26 HST 2023

当cron执行脚本时,日志条目如下(lp cmd无输出):

***************************
Enter Job Sun Jan 29 12:15:00 HST 2023
Exit Job Sun Jan 29 12:15:00 HST 2023

当cron直接执行lp命令时,没有日志条目。

我不知道 cron 执行作业和我在终端中执行它们之间有什么区别。我的研究未能找到答案。

我很感激任何帮助...

答案1

问题是 cron 进程没有完整的磁盘访问权限。

解决方案:

  • 转到“设置”>“安全和隐私”,然后在左侧列表中选择“完全磁盘访问”。
  • 单击加号按钮添加新应用程序。
  • 在文件浏览器中键入正斜杠以切换到直接输入模式。输入路径/usr/sbin/cron。 (通过在终端上输入“which cron”找到它)

或者使用 Automator 代替 cron。 (如果你想学习一个新工具,但这听起来很烦人......)

(这个答案在评论中,我只是将其作为正式答案发布在这里,这样下一个人就不必阅读所有评论来获得答案。感谢 gpaCook 分享最终解决方案。)

相关内容