я продолжил извращаться в плане автоматизации закачек и написал скриптик, который находит сколько свободного места останется после того как все закачки по торрентам завершатся. этот скриптик интересен как дополнение к автоматизации с учетом крайне ограниченного дискового пространства. т.е. прежде чем вслепую качать с сервера новый .torrent - файл мы посмотрим хватает ли у нас на диске места чтобы его запустить.
этот скрипт надо было изначально писать на перле а не в интерпретаторе bash, т.к. тт используется много регулярок, а решулярки я по незнанию лучшего метода пропускаю через перл-интерпретатор.
а скриптик из предыдущего поста не работает, кстати, там надо извращенскую конструкцию проверки запущенности процесса закачки торрента
if [ `top -bcn1 | grep -F $m | grep -c ctorrent` == "0" ] ;then
заменить на
if [ `ps -fC ctorrent | grep -cF $m` == "0" ] ;then
причем не работает оно только при запуске по крону, а так работает на ура)
этот скрипт надо было изначально писать на перле а не в интерпретаторе bash, т.к. тт используется много регулярок, а решулярки я по незнанию лучшего метода пропускаю через перл-интерпретатор.
#!/bin/bash
output=`date +"%F %R"`
# тут лежат торренты
cd /home/nx/torrents
total=0
# проходимся по всем запущенным торрентам и считаем сколько мб они в итоге займут, когда докачаются
for m in `ls .`; do
if [ -d $m ]; then
cd $m
if [ -f $m ]; then
m_filesize=`ctorrent -x $m | perl -lne 'if ($_ =~ /^Total\: (\d*) MB$/){ print $1; }'`
let total+=$m_filesize
fi
cd ..
fi
done
# свободное место на диске. я беру вывод команды df и вырезаю из него строчку, относящуюся к точке монтирования /home
disk_free_space=`df -mx tmpfs | perl -lne 'if ($_ =~ /^[^\s]+\s+\d+\s+\d+\s+(\d+)\s+\d+%\s+\/home$/){ print "$1"; }'`
# всего скачано я считаю как размер директории с торрентами. в ней не должно быть левых файлов
total_downloaded=`du -sm . | perl -lne 'if ($_ =~ /^(\d+)/){ print "$1"; }'`
# осталось скачать = общий объем торрентов минус скачанное
let to_download=$total-$total_downloaded
# место которое можно использовать и которое останется, когда все торренты докачаются:
let space_available=$disk_free_space-$to_download
output+=" total active torrents size: $total Mb total downloaded: $total_downloaded Mb free disk space: $disk_free_space Mb"
output+=" to download: $to_download Mb disk space available for new downloads: $space_available Mb"
echo $output;
# вывод организован так неказисто т.к. мне так удобнее логировать и читать логи
а скриптик из предыдущего поста не работает, кстати, там надо извращенскую конструкцию проверки запущенности процесса закачки торрента
if [ `top -bcn1 | grep -F $m | grep -c ctorrent` == "0" ] ;then
заменить на
if [ `ps -fC ctorrent | grep -cF $m` == "0" ] ;then
причем не работает оно только при запуске по крону, а так работает на ура)

