Перейти к содержанию

Рекомендуемые сообщения

Опубликовано

Помогите настроить автостарт xmail при перезагрузке роутера.

Понмаю, что тупой вопрос на знание Unix, но что-то не смог разобраться.

xmail установлен, настроен, "ручками" запускается и работает.

Долго искал - нашел вроде способ переписать в /opt/etc/init.d скрипт запуска xmail, переименовав его в S37xmail.

Но при перезапуске - получил неработоспособный рутер и "ndm: Opkg::Manager: /opt/etc/init.d/rc.unslung: timed out." в логах,  

Созданный файлик стёр, перезагрузился - всё ОК, но без xmail, естествнно.

Что мне нужно сделать, чтобы прописать автозапуск корректно?

Опубликовано
3 часа назад, HuduGuru сказал:

Что мне нужно сделать, чтобы прописать автозапуск корректно?

Что у вас в самом скрипте автозапуска xmail вы не показали (по-умолчанию его в самом пакете нет).

Протестировать вручную автоматический запуск программы можно с параметром start или stop (остановка). Например:

# S37xmail start

Если скрипт не отрабатывает нормально, то и роутер при перезапуске не сможет его запустить.

Простой пример скрипта автозапуска выглядит так:

Скрытый текст

#!/bin/sh

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

start() {
        /opt/bin/prog_name
        }

stop() {
        killall prog_name
        }

case $1 in
        start)
            start
            ;;
        stop)
            stop
            ;;
        restart)
            stop
            start
            ;;
        *)
            echo "Usage: $0 {start|stop|restart}"
            ;;
esac

 

Но это не совсем правильный вариант написания подобных скриптов для entware, но в простейших случаях сгодится.

Опубликовано

По умолчанию есть скрипт не автозапуска, но просто запуска.

Файл xmail, его и копировал в init.d:
 

Скрытый текст

 

#!/bin/sh
#
# skeleton example file to build /etc/init.d/ scripts.
#  This file should be used to construct scripts for /etc/init.d.
#
#  Written by Miquel van Smoorenburg <miquels@cistron.nl>.
#  Modified by Davide Libenzi <davidel@xmailserver.org>
#
# Version: @(#)skeleton  1.8  03-Mar-1998  miquels@cistron.nl
#

XMAIL_ROOT=/opt/var/MailRoot
XMAIL_CMD_LINE="-SX 1 -Qn 1 -Yt 1 -Ln 1 -PX 1 -CX 1"
PATH=$XMAIL_ROOT/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/opt/bin/XMail
NAME=XMail
DESC="XMail Server"

test -f $DAEMON || exit 0

set -e
ulimit -c 10000
ulimit -s 128

start_xmail()
{
    MAIL_ROOT=$XMAIL_ROOT
    export MAIL_ROOT
    MAIL_CMD_LINE=$XMAIL_CMD_LINE
    export MAIL_CMD_LINE
    /opt/bin/rm -f /opt/var/run/$NAME.pid
    $DAEMON
    while [ ! -f /opt/var/run/$NAME.pid ]
    do
        /opt/bin/sleep 1
    done
}

stop_xmail()
{
    if [ -f /opt/var/run/$NAME.pid ]
    then
        echo `date` > $XMAIL_ROOT/.shutdown
        kill -INT `cat /opt/var/run/$NAME.pid`
        while [ -f $XMAIL_ROOT/.shutdown ]
        do
            /opt/bin/sleep 1
        done
    fi
}


case "$1" in
  start)
      echo -n "Starting $DESC: "
      start_xmail
      echo "$NAME.[" `cat /opt/var/run/$NAME.pid` "]"
 ;;
  stop)
      echo -n "Stopping $DESC: "
      stop_xmail
      echo "$NAME."
 ;;
  #reload)
 #
 # If the daemon can reload its config files on the fly
 # for example by sending it SIGHUP, do it here.
 #
 # If the daemon responds to changes in its config file
 # directly anyway, make this a do-nothing entry.
 #
 # echo "Reloading $DESC configuration files."
 # start-stop-daemon --stop --signal 1 --quiet --pidfile \
 # /opt/var/run/$NAME.pid --exec $DAEMON
  #;;
  restart|force-reload)
 #
 # If the "reload" option is implemented, move the "force-reload"
 # option to the "reload" entry above. If not, "force-reload" is
 # just the same as "restart".
 #
 echo -n "Restarting $DESC: "
 stop_xmail
 /opt/bin/sleep 1
 start_xmail
        echo "$NAME.[" `cat /opt/var/run/$NAME.pid` "]" 
 ;;
  *)
 N=/etc/init.d/$NAME
 # echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
 echo "Usage: $N {start|stop|restart|force-reload}" >&2
 exit 1
 ;;
esac

exit 0

 

 

Опубликовано (изменено)
1 час назад, HuduGuru сказал:

По умолчанию есть скрипт не автозапуска, но просто запуска.

Если его запустить вручную так, то все нормально отрабатывает?:

/etc/init.d/S37xmail start

Если да, то, возможно, запуск xmail при загрузке роутера не укладывается в какие-то таймауты. Соответственно, и возникает ошибка...

И я бы подкорректировал строчку PATH, добавив в конце ":/opt/bin":

PATH=$XMAIL_ROOT/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/bin

Изменено пользователем gvan
Опубликовано
15 часов назад, gvan сказал:

Спасибо, разобрался.

Засада была в while [ ! -f /opt/var/run/$NAME.pid ]. Xmail по умолчанию пишет свой PID в /var/run/, а не в /opt//var/run/.

Почитал документацию, добавил в файлик

XMAIL_PID_DIR=/opt/var/run
export XMAIL_PID_DIR

Всё заработало.

 

  • 5 лет спустя...
Опубликовано

как исправить Socket bind error? подскажите пожалуйста.

поставил opkg install xmail. распаковал /opt/etc/MailRoot.tar.bz2. переименовал файл xmail в S43xmail, и немого поправил.

Скрытый текст
#!/bin/sh
#
#skeleton	example file to build /opt/etc/init.d/ scripts.
#This file should be used to construct scripts for /opt/etc/init.d.
#
#Written by Miquel van Smoorenburg <miquels@cistron.nl>.
#Modified by Davide Libenzi <davidel@xmailserver.org>
#
#Version:	@(#)skeleton 1.8 03-Mar-1998 miquels@cistron.nl
#

XMAIL_ROOT=/opt/var/lib/xmail/MailRoot
XMAIL_CMD_LINE="-SX 1 -Qn 1 -Yt 1 -Ln 1 -PX 1 -CX 1"
PATH=$XMAIL_ROOT/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/opt/sbin:/opt/bin
DAEMON=/opt/bin/XMail
NAME=XMail
DESC="XMail Server"

test -f $DAEMON || exit 0

set -e
ulimit -c 10000
ulimit -s 128

start_xmail()
{
    MAIL_ROOT=$XMAIL_ROOT
    export MAIL_ROOT
    MAIL_CMD_LINE=$XMAIL_CMD_LINE
    export MAIL_CMD_LINE
    XMAIL_PID_DIR=/opt/var/run
    export XMAIL_PID_DIR
    rm -f /opt/var/run/$NAME.pid
    $DAEMON
    while [ ! -f /opt/var/run/$NAME.pid ]
    do
        sleep 1
    done
}

stop_xmail()
{
    if [ -f /opt/var/run/$NAME.pid ]
    then
        echo `date` > $XMAIL_ROOT/.shutdown
        kill -INT `cat /opt/var/run/$NAME.pid`
        while [ -f $XMAIL_ROOT/.shutdown ]
        do
            sleep 1
        done
    fi
}


case "$1" in
  start)
      echo -n "Starting $DESC: "
      start_xmail
      echo "$NAME.[" `cat /opt/var/run/$NAME.pid` "]"
	;;
  stop)
      echo -n "Stopping $DESC: "
      stop_xmail
      echo "$NAME."
	;;
  #reload)
	#
	#	If the daemon can reload its config files on the fly
	#	for example by sending it SIGHUP, do it here.
	#
	#	If the daemon responds to changes in its config file
	#	directly anyway, make this a do-nothing entry.
	#
	# echo "Reloading $DESC configuration files."
	# start-stop-daemon --stop --signal 1 --quiet --pidfile \
	#	/opt/var/run/$NAME.pid --exec $DAEMON
  #;;
  restart|force-reload)
	#
	#	If the "reload" option is implemented, move the "force-reload"
	#	option to the "reload" entry above. If not, "force-reload" is
	#	just the same as "restart".
	#
	echo -n "Restarting $DESC: "
	stop_xmail
	sleep 1
	start_xmail
        echo "$NAME.[" `cat /opt/var/run/$NAME.pid` "]"
	;;
  *)
	N=/opt/etc/init.d/$NAME
	# echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
	echo "Usage: $N {start|stop|restart|force-reload}" >&2
	exit 1
	;;
esac

exit 0

 

 

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...

Важная информация

На этом сайте используются файлы cookie. Нажимая "Я принимаю" или продолжая просмотр сайта, вы разрешаете их использование: Политика конфиденциальности.