在 cron 上的屏幕截图显示背景而不是窗口内容

Ale*_*hev 5 macos cron screenshot screen-capture macos-catalina

在 macOS 上,Catalina 在通过 cron 制作屏幕截图时遇到问题。当手动运行do_screenshot.sh脚本时,一切都很好。但是当它在 cron 上自动运行时 - probs,只有菜单正确,而不是窗口内容显示 macOs 背景(见图)

do_screenshot.sh

#!/bin/bash

DATEFULL=`date '+%Y%m%d%H%M%S'`
FILENAME="/Users/yak/Documents/screenshots/"$DATEFULL.png
/usr/sbin/screencapture -x $FILENAME
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

A W*_*per 9

更新后也遇到这个问题。花了几个小时学习细节,这是原因和方法。功劳归于大圈。原来的问答在这里

问题是 cron 没有屏幕访问权限。

这是解决方案

  1. 关闭 SIP(​​系统完整性保护)。

    确保您的 SIP 已禁用。检查 SIP 是否被禁用。到终端并输入csrutil status。它应该说 SIP 状态:启用/禁用。要禁用它:

    关闭 Mac,再次启动并按住 cmd+r 直到出现 OS X Utilities 窗口。打开终端类型csrutil disable。再次重启,进入正常的mac os。

  2. 授予 TCC 写权限

    sudo chmod 664 /Library/Application\ Support/com.apple.TCC

  3. 将 screencapure 权限授予 cron 和 screencapture

    sudo sqlite3 "/Library/Application Support/com.apple.TCC/TCC.db" 'insert into access values ("kTCCServiceScreenCapture", "/usr/sbin/cron", 1, 1, 1, "", "", "", "UNUSED", "", 0,"")'

    sudo sqlite3 "/Library/Application Support/com.apple.TCC/TCC.db" 'insert into access values ("kTCCServiceScreenCapture", "/usr/sbin/screencapture", 1, 1, 1, "", "", "", "UNUSED", "", 0,"")'

  4. 在这个阶段重新开启 SIP 可能是个好主意。要启用它,请按照第 1 步操作,而csrutil disable不仅仅是键入csrutil enable


小智 2

您应该允许您的脚本使用“安全和隐私”系统首选项中的“屏幕录制”。