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

2024-01-09

在 macOS 上,Catalina 在通过 cron 进行屏幕截图时遇到问题。 手动运行时do_screenshot.sh脚本然后一切都很好。 但是当它在 cron - 问题上自动运行时,只有菜单正确,而不是窗口内容显示 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

更新后也遇到这个问题了。花了几个小时学习细节,以下是原因和方法。信用去往大圈子 https://superuser.com/users/1123992/big-circle。原来的问题和答案here https://superuser.com/questions/1510312/mac-screenshot-crontab-only-got-desktop.

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

这是解决方案

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

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

关闭 Mac,再次启动并按住 cmd+r 直到出现 OS X 实用程序窗口。开放式端子类型csrutil disable。再次重新启动,启动进入正常的 mac 操作系统。

  1. 授予 TCC 写权限

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

  1. 向 cron 和 screencapture 授予 screencapure 权限

    a) CRON:

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

    b) 屏幕截图:

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

    --------------------------------------------------------------------------

       Big Sur and later:
    `sudo sqlite3 "/Library/Application Support/com.apple.TCC/TCC.db" 'insert into access values ("kTCCServiceScreenCapture", "/usr/sbin/screencapture", 1,2,4,1, "", "", "", "UNUSED", "", 0,"")'`
    
  2. 在此阶段重新打开 SIP 可能是个好主意。要启用它,请按照步骤 1 操作,而不是csrutil disable只需输入csrutil enable.

编辑 @ 2021-12-09T11:58:00+1000:添加到 Big Sur 的命令中,并稍后根据评论添加西尔万·穆勒曼 https://stackoverflow.com/users/2454815/silvan-m%c3%bchlemann

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

cron 上的屏幕截图显示背景而不是窗口内容 的相关文章

随机推荐