その後のその後

iOSエンジニア 堤 修一のブログ github.com/shu223

Mac のスクリーンショットを定期的に自動撮影する

10分ごととかにMacスクリーンショットを自動撮影する方法です。ライフログに、あるいはサボり防止に役立つかもしれません。


以下、手順です。

1. シェルスクリプトの準備

適当なフォルダを作成して、シェルスクリプトのファイルを生成します。(下記サンプルではホーム直下にssというフォルダを作成)

$ cd
$ mkdir ss
$ cd ss
$ touch capture.sh


生成したスクリプトファイルを編集します。(最後のパスは出力先。よしなに変えてください)

#!/bin/bash

/usr/sbin/screencapture -m -C -T0 -x ~/ss/capture_`date +%Y%m%d%H%M`.png


スクリプトに実行権限をつけます。

$ chmod +x capture.sh


※注意:このスクリプトではファイル名に日時をつけているので、画像がどんどん溜まっていくことになります。定期的に溜まったファイルを削除するスクリプトを登録する等、HDDがいつの間にか一杯にならないような工夫をしないと実用的ではないので、ご注意ください。

2. crontab の編集

$ crontab -e

で、crontabの編集に入るので、

*/5 * * * * ~/ss/capture.sh

と書いて保存します。


こうすると5分ごとにスクリーンキャプチャが保存されるようになります。


保存間隔を10分ごとにしたい場合は、次のようにします。

*/10 * * * * ~/ss/capture.sh


ちなみに、現在の crontab の内容を確認するには、-l オプションを使用します。

$ crontab -l


(参考)
crontabの書き方

余談

本件で crontab を初めて使ったのですが、はじめ動作せず困りました。


スクリプトの1行目の

#!/bin/bash

を書いていなかったことと、


screencaptureコマンドを

/usr/sbin/screencapture

とせず

screencapture

とだけ指定していたことが原因でした。


どちらもスクリプトをターミナルから実行する際には問題なかったので、なかなか気付くことができず。。


この辺りは、環境変数の設定とか実行ユーザーとか、環境に依るところなので誰にでも当てはまる話ではないと思いますが、ご参考まで。

Thanks

こちらのリポジトリで方法を知りました。大西さんありがとうございます!


https://github.com/024t910/yc2013