Скрипт удваивает значения

Программирование на sh, быть может немного про альтернативные языки
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
densan
ст. сержант
Сообщения: 370
Зарегистрирован: 2007-12-06 10:02:02
Откуда: Penza
Контактная информация:

Скрипт удваивает значения

Непрочитанное сообщение densan » 2013-06-01 8:34:43

Здравствуйте.
Никак не могу победить следующую ошибку. Есть скрипт:

Код: Выделить всё

#!/bin/sh

log="/var/log/rsync/rsync-all.log"
config="/usr/local/etc/rsyncd/servers"
zfs_backup="zfsstripe/backup"
rootdir="/data/stripe/backup"
script_name="/usr/local/etc/rsyncd/sync.sh"

echo="/bin/echo"
date="/bin/date"
ping="/sbin/ping"
rsync="/usr/local/bin/rsync"
mkdir="/bin/mkdir"
touch="/usr/bin/touch"
rm="/bin/rm"
awk="/usr/bin/awk"
df="/bin/df"
zfs="/sbin/zfs"
head="/usr/bin/head"

#удаляем старый и создаем новый файл лога
$rm $log
$touch $log

# Получаем объем свободного места в разделе куда льется бэкап
free="`$df | grep $zfs_backup | $awk '{print $4}'`"
$echo "Free space partition $zfs_backup=`expr $free / 1048576` Gb"  >> $log
# Получаем объем каталога с бэкапом
backup_size="`du -s $rootdir | $awk '{print $1}'`"
$echo "Backup space=`expr $backup_size / 1048576` Gb"  >> $log
...
Если скрипт стартует по крону, то данные в логе увеличены в 2 раза.

Код: Выделить всё

2013-06-01_08-00-01   Start reports
Free space partition zfsstripe/backup=3315 Gb
Backup space=418 Gb
Если стартую этот скрипт вручную - данные правильные.

Код: Выделить всё

Free space partition zfsstripe/backup=1656 Gb
Backup space=207 Gb

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

rayder
лейтенант
Сообщения: 661
Зарегистрирован: 2008-12-18 16:29:43
Откуда: Ukraine/Kiev
Контактная информация:

Re: Скрипт удваивает значения

Непрочитанное сообщение rayder » 2013-06-01 9:31:59

и раз (man df)

Код: Выделить всё

     The df utility displays statistics about the amount of free disk space on
     the specified file system or on the file system of which file is a part.
     Values are displayed in 512-byte per block counts.  If neither a file or
     a file system operand is specified, statistics for all mounted file sys-
     tems are displayed (subject to the -t option below).
и два(man df)

Код: Выделить всё

     -k      Use 1024-byte (1-Kbyte) blocks rather than the default.  Note
             that this overrides the BLOCKSIZE specification from the environ-
             ment.
ну и для проверки:

Код: Выделить всё

[root[]@:[9:31]#echo $BLOCKSIZE
K

[root[]@:[9:31]#grep BLOCKSIZE /etc/login.conf | grep -v '^#'
 :setenv=MAIL=/var/mail/$,BLOCKSIZE=K,FTP_PASSIVE_MODE=YES:\

Человеку свойственно ошибаться, но для нечеловеческих ляпов нужен компьютер.

densan
ст. сержант
Сообщения: 370
Зарегистрирован: 2007-12-06 10:02:02
Откуда: Penza
Контактная информация:

Re: Скрипт удваивает значения

Непрочитанное сообщение densan » 2013-06-01 10:15:31

Спасибо за помощь. Буду знать.
заменил

Код: Выделить всё

df="/bin/df"
на

Код: Выделить всё

df="/bin/df -k"