需求
开会看演讲时候定时自动截屏。
方案
终端下Mac的screencapture命令解决截屏问题。
screencapture -D 3 /Users/ZhenLi/Pictures/Screenshots/”2021-05-22 Siyu”/screenshots.png
写成Shell文件:
name=$(date “+%Y-%m-%d %H-%M-%S”)
screencapture -D 3 /Users/ZhenLi/Pictures/Screenshots/”2021-05-22 Siyu”/”$name.jpg”
加入crontab:
*/1 * * * * /Users/ZhenLi/Tools/cs.sh > /Users/ZhenLi/Tools/log1.txt 2>&1 &
问题
问题1:cronjob后没有收到截屏信息。最开始以为命令不对,但同样的模式下别的命令都能运行。需要查找错误信息,参考cronjob调试:https://blog.csdn.net/u012129607/article/details/80418149
*/5 * * * * /root/XXXX.sh &>/dev/null 2>&1 # 啥都不输出
*/1 * * * * /root/XXXX.sh > /tmp/load.log 2>&1 & # 正确和错误日志输出
*/1 * * * * /root/XXXX.sh > /tmp/load.log & 等同于 */1 * * * * /root/XXXX.sh 1>/tmp/load.log & #只输出正确日志
*/1 * * * * /root/XXXX.sh 2> /tmp/load.log & # 只输出错误日志
调试后后来发现是screencapture没有找到。加入路径后搞定:
/usr/sbin/screencapture -D 3 /Users/ZhenLi/Pictures/Screenshots/”2021-05-22 Siyu”/”$name.jpg”
问题2:截取到的只是桌面背景,没有实际命令行
先找到了用cronjob的答案,还挺麻烦的,要改系统的System Integrity Protection。解决办法见这里:
在底下的解答里,看到了一个更优雅的方式:https://superuser.com/questions/26956/use-cron-to-screen-capture-on-mac-os-x。不用cronjob,一条命令行搞定:
while :;do screencapture -D 3 /Users/ZhenLi/Pictures/Screenshots/”2021-05-22 Siyu”/$(date “+%Y-%m-%d_%H-%M-%S”).png;sleep 60;done