У меня есть стартовый скрипт в /etc/init.d, который вызывает мой основной сценарий оболочки для выполнения. Главный скрипт затем записывает в файл журнала. Он должен всегда присоединяться к существующему файлу журнала.Сценарий перезаписывания сценария оболочки при запуске
Вот что происходит с установкой у меня есть:
- При запуске основного скрипта вручную он присоединяет к логфайл он использует.
- При запуске в качестве службы из /etc/init.d он перезаписывает журнал при первом запуске.
Что мне не хватает? Почему он перезаписывает файл журнала при запуске в качестве службы?
Здесь стартовый скрипт:
#!/bin/sh
SPINDOWNCHECK_BINARY="/home/nzbget/hdd_spindown.sh"
start() {
if [ -e "/tmp/spindowncheck.pid" ]; then
## Program is running, exit with error.
echo "Error! spindowncheck is currently running!" 1>&2
exit 1
else
/home/nzbget/hdd_spindown.sh > /var/log/spindowncheck.log &
echo "spindowncheck started"
touch "/tmp/spindowncheck.pid"
fi
}
stop() {
if [ -e "/tmp/spindowncheck.pid" ]; then
## Program is running, so stop it
killall hdd_spindown.sh
rm "/tmp/spindowncheck.pid"
echo "spindowncheck stopped"
else
## Program is not running, exit with error.
echo "Error! spindowncheck not started!" 1>&2
exit 1
fi
}
case "$1" in
start)
start
exit 0
;;
stop)
stop
exit 0
;;
reload|restart|force-reload)
stop
start
exit 0
;;
**)
exit 1
fi
}
esac
И тут приходит главный сценарий:
#!/bin/bash
echo "Reading config...." >&2
. /tmp/spindowncheck.conf
logfile='/var/log/spindowncheck.log'
while [ 1 ]
do
i=0
for DRIVE in $drives
do
DATE=`date +"%Y-%m-%d %H:%M:%S"`
RESULT_OLD=${RESULT[i]}
RESULT[$i]=`hdparm -C $DRIVE | grep state`
if [ "$RESULT_OLD" != "${RESULT[i]}" ]
then echo $DATE $DRIVE ${RESULT[i]} >> $logfile
fi
i=$i+1
done
sleep 10
done
Чтобы быть уверенным, что 'overwrites' означает создание нового пустого файла или запись в предыдущий, но в существующих строках? –
Я могу только сказать, что все, что было в журнале раньше (пример: 10 строк), исчезло и заменено новым журналом (пример: 1 строка). Таким образом, он может создать новый файл с тем же именем (но он должен был удалить старый ранее, чтобы это было возможно) – mon
Эта строка: '/home/nzbget/hdd_spindown.sh>/var/log/spindowncheck. log & 'clobbers файл журнала; замените '>' на '>>'. –