LINUX.ORG.RU
решено ФорумAdmin

Unable to start POP3 Daemon (maybe another process is listening to the same port?)

 perdition


0

1
service perdition start

ругается:

Starting /usr/sbin/perdition.pop3...
Unable to start POP3 Daemon (maybe another process is listening to the same port?)
При этом сам демон запускается и нормально работает. Порт свободен, его больше некому слушать.

ps aux | grep perdition

nobody   12371  0.0  0.1  47540  1280 ?        S    14:35   0:00 perdition.pop3: daemon

wtf?

★★★★

Up

perdition - проклятие, погибель, пердеж
С таким названием оно и не должно работать, а?

anonymous
()

делай netstat -nlp | grep $порт

vitruss ★★★★★
()
Ответ на: Up от anonymous

perdition - проклятие, погибель, пердеж

Последний перевод наиболее точный :)

делай netstat -nlp | grep $порт

перед запуском ничего не выводит, после соответственно:

tcp        0      0 здесь_ip:8110      0.0.0.0:*               LISTEN      22563/perdition.pop

Порт никто не слушает, и вообще все работает нормально, смущает только, что он ругается мол «не могу запуститься», но все равно запускается. Не аккуратненько как-то.. :)

afanasiy ★★★★
() автор топика
Ответ на: комментарий от afanasiy

Не аккуратненько как-то.. :)

Ну дак такой стартовый скрипт /etc/init.d/perdition. Посмотрите как там реализован вывод этого сообщения.

mky ★★★★★
()
Ответ на: комментарий от mky

Там вот так:

PATH=/usr/sbin:/bin:/usr/bin:/sbin:/usr/sbin
NAME=perdition
DAEMON=/usr/sbin/perdition

test -f $DAEMON || exit 0

if [ -e /etc/default/perdition ]; then
        . /etc/default/perdition
fi

# Please do not edit the values below.
# Rather, please edit /etc/default/perdition
RUN_PERDITION="${RUN_PERDITION:=no}"
FLAGS="${FLAGS:=}"
POP3="${POP3:=yes}"
POP3_FLAGS="${POP3_FLAGS:=}"
POP3S="${POP3S:=yes}"
POP3S_FLAGS="${POP3S_FLAGS:=}"
IMAP4="${IMAP4:=yes}"
IMAP4_FLAGS="${IMAP4_FLAGS:=}"
IMAP4S="${IMAP4S:=yes}"
IMAP4S_FLAGS="${IMAP4S_FLAGS:=}"
MANAGESIEVE="${MANAGESIEVE:=yes}"
MANAGESIEVE_FLAGS="${MANAGESIEVE_FLAGS:=}"

if [ "$RUN_PERDITION" != "yes" ]; then
        exit 0
fi

case "$1" in
  start)
    if [ "$POP3" = "yes" ]; then
      start-stop-daemon --start --verbose \
        --pidfile /var/run/perdition.pop3/perdition.pop3.pid \
        --exec /usr/sbin/perdition.pop3 -- $FLAGS $POP3_FLAGS
        if [ ! -e /var/run/perdition.pop3/perdition.pop3.pid ]; then
                echo "Unable to start POP3 Daemon (maybe another process is listening to the same port?)"
        fi
    fi
   ;;
  restart)
    $0 stop
    $0 start
    ;;
force-reload|reload)
    echo "Reloading $NAME configuration files"
    if [ "$POP3" = "yes" ]; then
      start-stop-daemon --stop --signal 1 --quiet \
        --pidfile /var/run/perdition.pop3/perdition.pop3.pid \
        --exec /usr/sbin/perdition.pop3
    fi
 ;;
  *)
    echo "Usage: /etc/init.d/$NAME {start|stop|restart|reload|force-reload}"
    exit 1
    ;;
esac

exit 0

Не программист. Не знаю, что здесь не так.

afanasiy ★★★★
() автор топика
Ответ на: комментарий от afanasiy

Можно ещё, если демон позволяет запускаться не в режиме демона, а в консоли, запустить его под strace и посмотреть, какой именн опорт ему не дают биндить - может, он их больше одного хочет. Или найти значение этого порта в скрипте, который вы сейчас вывели.

pianolender ★★★
()
Ответ на: комментарий от pianolender

Надпись-то я нашел, только не понимаю, что значит этот блок. В программировании не силен.

afanasiy ★★★★
() автор топика
Ответ на: комментарий от pianolender

Насколько я понимаю, этот кусок делает вот что: запустить бинарник через start-stop-daemon, посмотреть, создался ли пид-файл (должен создаваться), если нет - ругнуться. Видимо, демон может и без пид-файла работать.

Не вижу в инит-скрипте места, где обозначался бы аккаунт для понижения привилегий при запуске демона, значит, запускатьяс должен от рута. Если я все-таки этот аккаунт проглядел, может, у него нет прав на папку для пид-файла?

pianolender ★★★
()
Ответ на: комментарий от afanasiy

Ну где тут программирование, что вы. Это простой шелл-скрипт. «Если нету /этого/файла, матюгнуться вот так» - вот, что там написано.

pianolender ★★★
()
Ответ на: комментарий от pianolender

Не вижу в инит-скрипте места, где обозначался бы аккаунт для понижения привилегий при запуске демона, значит, запускатьяс должен от рута. Если я все-таки этот аккаунт проглядел, может, у него нет прав на папку для пид-файла?

Точно нет прав, я его стартую через sudo, но ps показывает, что демон запущен от nobody

nobody   27828  0.0  0.1  47540  1280 ?        S    13:00   0:00 perdition.pop3: daemon

afanasiy ★★★★
() автор топика
grep -i elf /usr/sbin/perdition.pop3 || cat /usr/sbin/perdition.pop3

вот ещё что покажите

pianolender ★★★
()
Ответ на: комментарий от pianolender
grep -i elf /usr/sbin/perdition.pop3 || cat /usr/sbin/perdition.pop3
Binary file /usr/sbin/perdition.pop3 matches
ls /var/run/perdition.pop3/ -l
-rw-rw---- 1 nobody nogroup 5 May 16 13:00 perdition.pop3.pid 
afanasiy ★★★★
() автор топика
Ответ на: комментарий от afanasiy

Тогда запустите perdition.pop3 без обертки, то есть не через service. Если не отпусти консоль и не вернет управление, значит, само по себе он не демонизируется, и можно запустить его под strace.

strace -o perd.strace /usr/sbin/perdition.pop3

должно показать, что именно не получается. После запуска подождите полминуты, а потом файл выложите в какой-нибудь pastebin.com

pianolender ★★★
()
Последнее исправление: pianolender (всего исправлений: 1)
Ответ на: комментарий от afanasiy

В интернетах приводятся другие варианты этого скрипта, в которых делается проверка кода завершения (exit status) start-stop-daemon. Не знаю, насколько они корректны, надо смотреть исходники perdition, чтобы понять, всегда ли ″$? == 0″ означает, что демон запустился корректно.

Скорее всего выскакивающая у вас ошибка связана с тем, что проверка существования файла ″/var/run/perdition.pop3/perdition.pop3.pid″ происходит раньше, чем демон успевает его создать. В принципе, если очень хочется докопатся до сути, можно заняться трассировкой, изучением исходников (и языка программирования). А можно забить, демон запускается, работает, и пусть пишется это неправильное сообщение, может при очередном обновлении проблема исчезнет.

mky ★★★★★
()
Ответ на: комментарий от mky

Тогда запустите perdition.pop3 без обертки, то есть не через service

Без обертки запускается без ошибок.

Вобщем, фиг с ним, действительно проще забить. Спасибо всем!

afanasiy ★★★★
() автор топика
Ответ на: комментарий от afanasiy

Без обертки запускается без ошибок.

Дык без обертки он и не делает эту проверку, она только в обертке и есть.

А, тьфу. И под strace эту ерудну не будет видно по той же причине. Ну и ладно, правильно говорят - может, апдейт прилетит и всё починит.

pianolender ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.