NanoPi NEO2でタイムラプス撮影(続)

NanoPi NEO2でのタイムラプス撮影ですが、前回はcronが使えないようなので、スクリプト中でsleepして周期の調節をしていました。

で、いろいろ調べていたら、systemdのtimerユニットで似たようなことが実現できるようなのでやってみました。

1.スクリプトの作成

ログイン中であればユーザー権限でtimerユニットを動作させることもできるようなのですが、今回はroot権限で動作させます。

/usr/local/bin/TimerImageとして以下のファイルをrootで作成しました。

#!/bin/sh
DATE=$(date +"%Y%m%d%H%M%S")
fswebcam --quiet --jpeg 80 --timestamp "%Y-%m-%d %H:%M:%S (%Z)" -r 800x600 /DATA/TimerImage/pictures/$DATE.jpg
(/DATAはHDDをマウントしてあるディレクトリです)
作成したら、実行権限を付与しておきます。

2.サービスファイルの作成

/etc/systemd/system/TimerImage.serviceとして以下のファイルを作成しました。

[Unit]
Description=Time Lapse Capture

[Service]
Type=simple
ExecStart=/usr/local/bin/TimerImage

3.timerを設定する

/etc/systemd/system/TimerImage.timerとして以下のファイルを作成しました。

[Unit]
Description= Capture every 10 seconds

[Timer]
AccuracySec=1sec
OnCalendar=*-*-* *:*:00/10
Unit=TimerImage.service

[Install]
WantedBy=multi-user.target

作成後、以下のようにして起動します。

 $ sudo systemctl daemon-reload
 $ sudo systemctl start TimerImage.timer
 $ sudo systemctl enable TimerImage.timer

daemon-reload は設定ファイルを修正した場合に再読み込みさせる際に必要です。(=初回は必要ない)

4.動作状態を確認する

以下のようにして動作状態を確認することができます。再起動しても自動的に起動することも確認できました。

$ systemctl --system --all list-timers
NEXT                         LEFT         LAST                         PASSED    UNIT                         ACTIVATES
Mon 2018-01-08 18:58:40 JST  8s left      Mon 2018-01-08 18:58:30 JST  1s ago    TimerImage.timer             TimerImage.service
Mon 2018-01-08 20:08:31 JST  1h 9min left Sun 2018-01-07 20:08:31 JST  22h ago   systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.servi
Tue 2018-01-09 06:36:24 JST  11h left     Mon 2018-01-08 06:47:50 JST  12h ago   apt-daily-upgrade.timer      apt-daily-upgrade.service
Tue 2018-01-09 07:37:17 JST  12h left     Mon 2018-01-08 18:28:22 JST  30min ago apt-daily.timer              apt-daily.service

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)