Нашли или выдавили из себя код, который нельзя назвать нормальным,
на который без улыбки не взглянешь?
Не торопитесь его удалять или рефакторить, — запостите его на
говнокод.ру, посмеёмся вместе!
stop() {
PIDS=$(/sbin/pidof $PNAME)
CNT=0
if [[ $PIDS != "" ]]; then
echo -n "Stopping $PNAME: "
killall $PNAME && echo "ok" || echo "failed"
while [[ $PIDS != "" ]]
do
PIDS=$(/sbin/pidof $PNAME)
echo -n "."
sleep 1
CNT=$(($CNT+1))
if [[ $CNT -eq 3 ]]; then killall -9 $PNAME;echo -e "\n$PNAME: Force kill";break; fi
done
echo
else echo "$PNAME: don't start"
fi
}
Так автор видел выключение процесса. Процесс работает с файлами на жестком диске и ему важна их целостность, поэтому за 3 секунды не завершался. А еще при gracefully shutdown пишется обновление конфига процесса на диск. Но кого волнуют такие мелочи если оно уже работает в проде 7+ лет
Возможно, тогда стоило бы прикрутить какую-то базу данных или запилить свою механику, которая даёт какую-то степень транзакционности... Хотя бы save('conf.tmp'), replace('conf.cfg', 'conf.tmp') для конфига.
Всё-таки и процесс может упасть и железка может ребутнуться.
Ну кстати tr_saveFile(), через который запилена эта функция, вроде корректно сделан, через .tmp файл. Т.е. просто настройки не сохранятся, а не весь конфиг навернётся...
Не так ужасно, как мне показалось сначала. Просто бывают проги, у которых необратимое повреждение от kill -9 во время записи.
bormand # 0
codemeow # 0 ⇈
bormand # 0 ⇈
bormand # 0
Возможно, тогда стоило бы прикрутить какую-то базу данных или запилить свою механику, которая даёт какую-то степень транзакционности... Хотя бы save('conf.tmp'), replace('conf.cfg', 'conf.tmp') для конфига.
Всё-таки и процесс может упасть и железка может ребутнуться.
guest # 0 ⇈
bormand # 0 ⇈
guest # 0 ⇈
codemeow # 0 ⇈
bormand # 0 ⇈
Не так ужасно, как мне показалось сначала. Просто бывают проги, у которых необратимое повреждение от kill -9 во время записи.