Eğer dâhili SD karta kayıt yapıyorsanız, yapılandırma ayarlarınıza bağlı olarak kartın kısa sürede dolması mümkündür. Disk dolduğunda Raspberry Pi çalışamaz duruma gelir. Bunun için harici bir diske veya uzak dosya sistemine de (Samba/NFS) kayıt yapmak çözüm gibi gözükse de aylarca yıllarca çalışacak bir sistem için farklı çözümlere ihtiyaç vardır. Disk er ya da geç dolacaktır. Bu sorunu çözmek için kullanılan yaklaşımlardan birisi en eski dosyadan başlayarak silme işlemi gerçekleştirmek ve diskte boş alan açmaktır.
Silme işleminin öncelikli kriteri disk doluluk oranının belli bir yüzdeye ulaşmasıdır. Çünkü disk doluluk oranı %100’e ulaşırsa Raspberry Pi çalışamaz. Bunun için motion’ın desteklediği olaylardan birisi olan on_movie_end kullanılarak her video kaydının sonunda disk kullanım yüzdesi ölçülerek gerektiği kadar dosya silinebilir.
Aşağıdaki disk_kul_sinirla.sh adlı betik, belirtilen disk kullanım yüzdesi aşılmışsa belirtilen dizindeki en eski dosyadan başlayarak siler. Betiği yazmak için aşağıdaki gibi nano editörünü çalıştırın ve kaydettikten sonra çalıştırma izni verin (+x).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
pi@raspberrypi:~ $ nano disk_kul_sinirla.sh IZLENECEK_DIZIN=$1 SINIR_YUZDE=$2 echo "Disk kullanimi denetleniyor..." export GENEL_DISK_KUL_YUZDESI_STR=$(df | head -n2 | sed -n '2p' | awk -F ' ' '{print $5}') export GENEL_DISK_KUL_YUZDESI=${GENEL_DISK_KUL_YUZDESI_STR%?} while [ $GENEL_DISK_KUL_YUZDESI -gt $SINIR_YUZDE ] ; do echo "Disk kullanim yuzdesi (%"$SINIR_YUZDE") asilmis." echo $IZLENECEK_DIZIN" dizininden en eski dosya silinecek." export EN_ESKI_DOSYA=$(find $IZLENECEK_DIZIN -type f -printf '%p\n' | sort | head -n 1) rm -rf $EN_ESKI_DOSYA echo $EN_ESKI_DOSYA" silindi.". echo "Disk kullanimi denetleniyor..." export GENEL_DISK_KUL_YUZDESI_STR=$(df | head -n2 | sed -n '2p' | awk -F ' ' '{print $5}') export GENEL_DISK_KUL_YUZDESI=${GENEL_DISK_KUL_YUZDESI_STR%?} done echo "Mevcut disk kullanim yuzdesi "$GENEL_DISK_KUL_YUZDESI_STR"." echo "bitti." pi@raspberrypi:~ $ chmod +x disk_kul_sinirla.sh |
Betiğin kullanımı aşağıdaki gibidir ve iki adet seçenek alır ilk seçenek dosya silinecek dizinin patikası diğer ise takip edilecek disk kullanım yüzdesidir.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
pi@raspberrypi:~ $ ./disk_kul_sinirla.sh /home/pi/motion/ 84 Disk kullanimi denetleniyor... Disk kullanim yuzdesi (%84) asilmis. /home/pi/motion/ dizininden en eski dosya silinecek. /home/pi/motion/kamera1/09-20190105085842.avi silindi.. Disk kullanimi denetleniyor... Disk kullanim yuzdesi (%84) asilmis. /home/pi/motion/ dizininden en eski dosya silinecek. /home/pi/motion/kamera1/10-20190105090858.avi silindi.. Disk kullanimi denetleniyor... Mevcut isk kullanim yuzdesi 84%. bitti. |
Şimdi de bu betiği her görüntü kaydının ardından çalıştırılması için motion.conf içindeki on_movie_end olayına ekleyelim. motion.conf dosyasını nano ile açarak aşağıdaki satırı ekleyin ve motion’ı yeniden başlatmayı unutmayın.
1 2 3 4 5 6 7 8 9 10 11 |
pi@raspberrypi:~ $ nano .motion/motion.conf […] on_movie_end /home/pi/disk_kul_sinirla.sh /home/pi/motion/ 90 […] pi@raspberrypi:~ $ sudo pkill motion pi@raspberrypi:~ $ sudo motion -c .motion/motion.conf& |
