Jump to content

Recommended Posts

Posted

Не работает скрипт автозапуска Node-RED на Entware.

NMDS 2.14.B.0.0-1 (не работало и на более ранних)

Энтварь установлена по инструкции здесь. В /etc/init.d есть несколько сервисов - всё стартует корректно, кроме самописного скрипта для Node-RED. Причём, если после перезагрузки запустить ручками - всё хорошо.

Сам Node-RED установлен через npm с флагом -g, почти по инструкции с оф. сайта. Ругани нигде не могу найти при запуске. Тот же TV-Headend, netdata и Mosquitto стартуют нормально.

Привожу сам скрипт S95node-red:

#!/bin/sh

PATH=/opt/bin:/opt/sbin:/opt/usr/bin:/opt/usr/sbin:/sbin:/bin:/usr/sbin:/usr/bin

ENABLED=yes
NAME=node-red
WRITE_LOG=yes

PROG="/opt/bin/$NAME"
PIDFILE="/var/run/$NAME.pid"
CONFDIR="~/.node-red/"
LOG="/opt/var/log/$NAME.log"
ARGS="--max-old-space-size=128"

CONF_ARG="-u $CONFDIR"

ansi_red="\033[1;31m";
ansi_white="\033[1;37m";
ansi_green="\033[1;32m";
ansi_yellow="\033[1;33m";
ansi_blue="\033[1;34m";
ansi_cyan="\033[1;36m";
ansi_std="\033[m";

prog_status()
{
	[ -f $PIDFILE ] && [ -d /proc/`cat $PIDFILE 2> /dev/null` ]
}

prog_kill()
{
	COUNTER=0
	LIMIT=20
	while [ -n "`pidof $NAME`" -a "$COUNTER" -le "$LIMIT" ]; do
		sleep 1;
		COUNTER=`expr $COUNTER + 1`
	done
	[ -n "`pidof $NAME`" ] && killall -9 $NAME 2> /dev/null
	rm -f $PIDFILE 2> /dev/null
}

prog_start()
{
	[ "$ENABLED" != "yes" ] && return 8
	if prog_status
	then
		return 1
	fi
	rm -f $PIDFILE 2> /dev/null

	if [ "$WRITE_LOG" != "yes" ]
	then
		$PROG $ARGS $CONF_ARG >/dev/null 2>&1 &
	else
		touch $LOG
		chown root. $LOG
		echo "" >> $LOG
		$PROG $ARGS $CONF_ARG >>$LOG 2>&1 &
	fi
	echo $! > $PIDFILE
}

prog_stop()
{
	kill -15 `cat $PIDFILE 2> /dev/null` 2> /dev/null
	prog_kill
}

start() {
	echo -e -n "$ansi_white Starting $NAME... $ansi_std"
	if prog_status
	then
		echo -e "            $ansi_yellow already running. $ansi_std"
	else
		prog_start
		if [ -f $PIDFILE ] && [ -d /proc/`cat $PIDFILE 2> /dev/null` ]; then
			echo -e "            $ansi_green done. $ansi_std"

			logger "$NAME started." 2> /dev/null
		else
			echo -e "            $ansi_red failed. $ansi_std"
		fi
	fi
}

stop() {
	echo -e -n "$ansi_white Shutting down $NAME... $ansi_std"
	if prog_status
	then
		prog_stop
		if [ -z "`pidof $NAME`" ]; then
			echo -e "       $ansi_green done. $ansi_std"
			logger "$NAME stoped." 2> /dev/null
		else
			echo -e "       $ansi_red failed. $ansi_std"
		fi
	else
		echo -e "       $ansi_blue is not running. $ansi_std"
	fi
}

check() {
	echo -e -n "$ansi_white Checking $NAME... $ansi_std"
	if prog_status
	then
		echo -e "              $ansi_green alive. $ansi_std"
	else
		echo -e "              $ansi_red dead. $ansi_std"
	fi
}

status() {
	echo -e -n "$ansi_white Status $NAME... $ansi_std"
	if prog_status
	then
		echo -e "              $ansi_yellow is running. $ansi_std"
	else
		echo -e "              $ansi_blue is not running. $ansi_std"
	fi
}

case "$1" in
	start)
		start
		;;
	stop)
		stop
		;;
	status)
		status
		;;
	check)
		check
		;;
	restart)
		stop
		sleep 3
		start
		;;
	*)
		echo -e "$ansi_white Usage: $0 (start|stop|restart|status|check|clean) $ansi_std"
		;;
esac

ЧЯДНТ? Уже давно не могу сие побороть...

Posted

Да, добавлю - сам Node-Red стартует долго, секунд 30-40. Может в этом быть проблема?

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

This site uses cookies. By clicking "I accept" or continuing to browse the site, you authorize their use in accordance with the Privacy Policy.