使用cron在Mac OS X上进行屏幕捕获

Modified on: Fri, 15 Feb 2019 19:20:02 +0800

要分析我自己的计算机使用情况,不要暗中监视任何人(虽然我已经想到了),我想让cron每分钟捕获当前屏幕。

 * * * * * /bin/bash -c "/usr/sbin/screencapture /somedir/screen.png"

crontab中的

将执行并进行屏幕捕获。然而,它完全是黑色的,因为它不像我一样运行。知道如何让cron作业捕获我的屏幕吗?

更新:我在同一个cron命令中添加了say whoami,并确认它正在以我的用户身份运行(没有涉及sudo或其他用户)。我自己从终端访问crontab。

所以,它像我一样运行,但没有附加到我的窗口系统。有什么想法吗?

最佳答案

如果您查看screencapture联机帮助页的末尾,您会看到它:

To capture screen content while logged in via ssh, you must launch
screencapture in the same mach bootstrap hierarchy as loginwindow:

PID=pid of loginwindow
sudo launchctl bsexec $PID screencapture [options]

所以我认为你可以在cron调用的shell脚本中做这样的事情:

#/bin/sh
loginwindowpid=`ps axo pid,comm | grep '[l]oginwindow' | sed -n 's# *\([^ ]*\).*$#\1#p'`
sudo launchctl bsexec $loginwindowpid screencapture /somedir/screen.png

当然,您需要将您的用户ID设置为不需要sudo的密码
那就是你用visudo命令设置/ etc / sudoers

youruserid     ALL=(ALL) NOPASSWD: ALL

相关问答

添加新评论