- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
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+ лет
bormand 05.02.2022 03:55 # +1
codemeow 05.02.2022 20:43 # +1
bormand 05.02.2022 20:47 # +1
bormand 05.02.2022 21:31 # 0
Возможно, тогда стоило бы прикрутить какую-то базу данных или запилить свою механику, которая даёт какую-то степень транзакционности... Хотя бы save('conf.tmp'), replace('conf.cfg', 'conf.tmp') для конфига.
Всё-таки и процесс может упасть и железка может ребутнуться.
guest6 05.02.2022 21:35 # 0
bormand 05.02.2022 21:35 # 0
guest6 05.02.2022 21:37 # 0
codemeow 05.02.2022 21:38 # 0
bormand 05.02.2022 21:42 # 0
Не так ужасно, как мне показалось сначала. Просто бывают проги, у которых необратимое повреждение от kill -9 во время записи.