【问题标题】:Basic Cron job to run a shell script to append date in a log, not working运行 shell 脚本以在日志中附加日期的基本 Cron 作业,不起作用
【发布时间】:2020-07-23 17:27:26
【问题描述】:

我有一个 addlog.sh 文件,其中包含以下内容:

echo "time right now:" `date` >> ~/Desktop/date.log

这就是我的crontab -l 的样子:

* * * * * /bin/sh /Users/naman/Desktop/addlog.sh

我已经为addlog.sh 文件添加了正确的权限,我的shell 位于/bin/sh。 我已经验证addlog.sh 的手动运行是在date.log 文件中附加时间。

我在本地 Mac 上运行它。但它不起作用,不确定我在这里可能缺少什么。

【问题讨论】:

  • 在 10.11 上为我工作。你有什么版本的 macOS?查看/var/log/system.log 看看它是否有任何相关的日志消息。
  • @rtx13 指出的原因是 Mac 版本。他建议的解决方案 1 已经适用于我。

标签: linux macos shell cron


【解决方案1】:

我怀疑您正在运行具有限制性系统完整性保护的 Catalina (10.15)。有两种可能的解决方案。

解决方案 1

将您的脚本和日志文件从~/Desktop 移到~/。与~/Desktop~/Documents 和其他文件夹相比,主目录不受系统完整性保护。

解决方案 2

如果您需要将脚本和日志文件保存在~/Desktop

  1. #!/bin/sh shebang(第一行)添加到您的addlog.sh 脚​​本中
  2. 从您的 addlog.sh 脚本中创建一个简单的 addlog.app,如下所示:
mkdir -p ~/Desktop/addlog.app/Resources/MacOS/
cp ~/Desktop/addlog.sh ~/Desktop/addlog.app/Resources/MacOS/addlog
chmod +x ~/Desktop/addlog.app/Resources/MacOS/addlog
  1. 将您的 crontab 更改为以下内容:
* * * * * /Users/naman/Desktop/addlog.app/Resources/MacOS/addlog

您还必须允许新创建的应用访问 SIP 保护区域中的文件,如下所示:

  1. 打开“系统偏好设置”、“安全和隐私”
  2. 单击挂锁并进行身份验证以进行更改。
  3. 在左侧窗格中选择“全盘访问”。
  4. 点击右侧的+
  5. 导航到桌面并选择您的新应用程序addlog。它将被添加到应用程序列表中。确保选中复选标记。
  6. 关闭“系统偏好设置”

【讨论】:

  • 解决方案 2 也有效,但我必须将日志文件也保存在非桌面位置,以便 shell 脚本在该日志文件中输入。你能@rtx13 帮我理解这里使用.app 的必要性吗
  • 实际上解决方案2可能涉及更多步骤。我会尽快添加更多细节......
  • 新的步骤,看起来应该有效。但不知何故没有。但这不是一个重要的步骤,因为我只是将它用于我的学习,而步骤 1 本身对我和步骤 2 有一点帮助。无论如何,感谢您的帮助。
  • 不客气。作为参考,您能否确认您运行的是哪个版本的 macOS?
  • 我使用的是 macOS Catalina 版本 10.15.4
猜你喜欢
  • 1970-01-01
  • 2013-08-01
  • 1970-01-01
  • 2016-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-03
相关资源
最近更新 更多