phy*_*ael 8 mac screenshot user-accounts cron macos
为了分析我自己的计算机使用情况,而不是监视任何人(尽管我想到了这一点),我希望让 cron 每分钟捕获当前屏幕。
* * * * * /bin/bash -c "/usr/sbin/screencapture /somedir/screen.png"
Run Code Online (Sandbox Code Playgroud)
在 crontab 中将执行并截屏。但是,它完全是黑色的,因为它不像我那样运行。知道如何允许 cron 作业捕获我的屏幕吗?
更新:我say whoami在同一个 cron 命令中添加了一个,它确认它以我的用户身份运行(不涉及 sudo 或其他用户)。我以我自己的身份从终端访问 crontab。
所以,它以我的身份运行,但不附加到我的窗口系统。有任何想法吗?
小智 10
如果您查看 screencapture 联机帮助页的末尾,您会看到它说:
要在通过 ssh 登录时捕获屏幕内容,您必须启动 在与 loginwindow 相同的 mach bootstrap 层次结构中的屏幕截图: PID=登录窗口的pid sudo launchctl bsexec $PID screencapture [选项]
所以我认为你可以在 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
| 归档时间: |
|
| 查看次数: |
3117 次 |
| 最近记录: |