diff --git a/install.sh b/install.sh index 689d6d9..c05e7b2 100755 --- a/install.sh +++ b/install.sh @@ -745,9 +745,10 @@ status() { echo "Сервер: $HOST:$PORT" echo "Архитектура: $ARCH (sing-box $SB_VER, ipt2socks $IPT_VER)" echo "Режим: $MODE / $TUNNEL / $FW" - pgrep -x sing-box >/dev/null 2>&1 && echo "sing-box: RUNNING" || echo "sing-box: STOPPED" + # pgrep без -x: busybox с argv[0]=/usr/bin/sing-box не матчит -x + pgrep sing-box >/dev/null 2>&1 && echo "sing-box: RUNNING" || echo "sing-box: STOPPED" if [ "$TUNNEL" = ipt2socks ]; then - pgrep -x ipt2socks >/dev/null 2>&1 && echo "ipt2socks: RUNNING" || echo "ipt2socks: STOPPED" + pgrep ipt2socks >/dev/null 2>&1 && echo "ipt2socks: RUNNING" || echo "ipt2socks: STOPPED" fi if [ -r /var/log/nikovpn.log ]; then echo "--- последние строки /var/log/nikovpn.log ---" @@ -772,6 +773,8 @@ uninstall() { /etc/init.d/nikovpn stop 2>/dev/null /etc/init.d/nikovpn disable 2>/dev/null fi + kill $(pgrep sing-box) 2>/dev/null + kill $(pgrep ipt2socks) 2>/dev/null nft delete table inet nikovpn 2>/dev/null rm -f /etc/nftables.d/10-nikovpn.nft for c in NIKOVPN NIKOVPN_TP NIKOVPN_UDP; do @@ -846,10 +849,14 @@ install() { esac fi - # остановить старый сервис перед перезаписью + # остановить старый сервис и процессы вне procd (иначе Text file busy + # при перезаписи бинарников и занятые порты после старта) if [ -x /etc/init.d/nikovpn ]; then /etc/init.d/nikovpn stop 2>/dev/null fi + kill $(pgrep sing-box) 2>/dev/null + kill $(pgrep ipt2socks) 2>/dev/null + sleep 1 install_bins log "Генерирую конфиг ..." @@ -862,11 +869,14 @@ install() { chmod +x "$WORK_DIR/install.sh" log "Запускаю сервис ..." + kill $(pgrep sing-box) 2>/dev/null + kill $(pgrep ipt2socks) 2>/dev/null + sleep 1 /etc/init.d/nikovpn enable 2>/dev/null /etc/init.d/nikovpn start 2>/dev/null - sleep 3 + sleep 5 - if pgrep -x sing-box >/dev/null 2>&1; then + if pgrep sing-box >/dev/null 2>&1; then log "sing-box запущен. Прозрачный прокси активен." else warn "sing-box не запустился. Смотрите: cat /var/log/nikovpn.log"