我自己一直很在意「自我量化」,希望自己的各个方面的行为可以以一种尽量方便尽量被动的方式被记录下来方便后来的追溯。之所以这么想有以下几天原因:
这个话题太大了,这里就此止住,单讲自己屏幕使用(具体到电脑使用)的记录。
之前尝试过一些时间记录的软件,或多或少有如下一些问题:
注意 在 windows 平台下有个时间记录的软件叫做 manictime 可以做到时间流记录,不过依然存在具体的信息获取不到以及跨平台的问题,同时这个公司似乎非常低调,低调到我感觉它都要倒闭了。
考虑到如上的一些问题,再仔细想象自己的需求,我最迫切的需求是可以快速回顾某一天都在干嘛,然后才是什么分析统计。那么我可能还是需要保留很具体的信息,那我觉得就只有截图了。
所以,如果可以每几分钟截个图存下来,然后每天一个文件夹是不是就差不多够了?同时,截图信息非常敏感,可能有公司涉密信息,可能有自己涉密信息。那么直接存在本地自己看看也不用担心隐私问题了。
通过简单的调研,我写出来了如下的脚本:
#!/bin/bash
PATH=/usr/local/bin:/usr/local/sbin:~/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/homebrew/bin
# 使用 jq 获取目前有几个屏幕
screencount=`system_profiler SPDisplaysDataType -json | jq '.SPDisplaysDataType[0].spdisplays_ndrvs | length'`
# 获取当前日期
date=$(date +%Y-%m-%d)
# 用日期创建文件见
mkdir -p $date
# 获取当前时分秒,作为文件的名字
NOW=$(date +"%Y-%m-%d-%H-%M-%S")
# 截屏
for (( i=1; i<=$screencount; i++ )) do
# 每个参数都什么意思可以通过 screencapture -h 查看
screencapture -C -x -D $i $date/screenshot-$NOW-$i.png
done
介绍下功能:
crontab
跑起来这个脚本,具体多久跑一次可以自己控制,我自己是 5 分钟一次,感觉差不多够了system_profiler SPDisplaysDataType -json
可以获取当前屏幕个数,我为每一个屏幕都做了截图这里额外用到的工具只有 jq
可以通过 brew install jq
直接安装。
terminal
输入 crontab -e
进入编辑模式<your-sh-file-location>
替换成上面的 sh
的路径*/5 * * * * cd <your-sh-file-location> && ./screencapture.sh >> ./screencapture.log 2>&1
cron
提供「屏幕录制」的权限。如果不设置权限,你的截图只能截取到背景而已,Screencapture over cron shown background instead window content 阐述了这个问题。你需要在「系统偏好设置设置」-「安全性与隐私」-「隐私」下为 /usr/sbin/cron
提供「屏幕录制」的权限。cmd + shift + g
打开路径输入对话框,输入 /usr/sbin/cron
然后回车就可以进入 cron
的目录并选中它,点击确认就可以把 cron
授予权限了然后就会出现这样的目录了:
如果有两个屏幕就会出现两个截屏:
按照排序把截屏扫一遍就大概知道自己一天什么时候都在干嘛了。