Jump to content
Калькуляторы

Автоматический запуск microdc Автоматический запуск microdc

проблема вот в чем:

 

установил microdc

вручную запускаешь, все работает, файлы которые он расшаривает видно, все в нормальной кодировке.

проблема возникает когда даешь автоматический запуск - все процессы присутствуют, но другие не видят, в логах microdc видно следующее:

18.08.2010 10:41:33 Automatically reconnecting to hub

18.08.2010 10:41:33 Connecting to hub on 0.0.0.0:0.

18.08.2010 10:41:33 Connected to hub from 0.0.0.0:0.

18.08.2010 10:41:33 Cannot receive from hub - Transport endpoint is not connected

18.08.2010 10:41:33 Shutting down hub connection.

18.08.2010 10:41:43 Automatically reconnecting to hub

18.08.2010 10:41:43 Connecting to hub on 0.0.0.0:0.

18.08.2010 10:41:43 Connected to hub from 0.0.0.0:0.

18.08.2010 10:41:43 Cannot receive from hub - Transport endpoint is not connected

18.08.2010 10:41:43 Shutting down hub connection.

 

 

и так каждые 10 секунд.

 

 

скрипт запуска (кстати может кому нибудь будет полезен):

cat /etc/init.d/mdc

#!/bin/bash

PROGRAM="microdc2"

PROG_BIN="screen -dmS microdc /usr/local/bin/microdc2 -c /root/.microdc2/config"

PID=`ps -aef | grep "$PROGRAM" | grep -v grep | awk '{print $2}'`

 

case "$1" in

start)

if [ ! -z $PID ]

then

echo -n "Daemon $PROGRAM is running"

echo ""

else

echo -n "Starting $PROGRAM: "

$PROG_BIN > /dev/null 2>&1 &

echo "Daemon $PROGRAM started. PID:$!"

echo ""

fi

;;

stop)

echo -n "Shutting down $PROGRAM: "

echo ""

for i in $PID; do

kill -9 $i

done

echo -n "$PROGRAM is down."

echo ""

;;

restart)

$0 stop

$0 start

;;

status)

STATUS=`ps -aef | grep "$PROGRAM" | grep -v grep | awk '{print $2}' | head -1`

if [ ! -z $STATUS ]

then

echo -n "Daemon $PROGRAM is running"

echo ""

for i in $PID; do

echo PID:$i

done

echo ""

else

echo -n "Daemon $PROGRAM is down."

echo ""

fi

;;

*)

echo "Usage: $PROGRAM {start|stop|restart|status}"

exit 1

esac

exit 0

 

 

но если сделать в запуск по крону например каждые 15 минут, или запускать вручную - то запускается прекрасно и работает, и в логах все ок:

18.08.2010 10:50:02 Listening on 0.0.0.0:46475.

18.08.2010 10:50:02 Connecting to hub on 172.20.1.1:411.

18.08.2010 10:50:02 Connected to hub from 172.20.1.50:50475.

18.08.2010 10:50:03 Nick accepted. You are now logged in.

18.08.2010 10:50:03 Sharing 1812768803757 bytes (1.7TiB) totally

18.08.2010 10:50:03 Sharing 1812768803757 bytes (1.7TiB) totally

18.08.2010 10:50:03 filelist_update: /srv/files directory is already shared as subfolder of existing shared tree

 

18.08.2010 10:50:03 Hub name is XXX Hub.

18.08.2010 10:50:03 Sharing 1812768803757 bytes (1.7TiB) totally

 

 

подскажите где могут быть грабли?

Edited by hoochie

Share this post


Link to post
Share on other sites
18.08.2010 10:41:43 Connecting to hub on 0.0.0.0:0.

18.08.2010 10:41:43 Connected to hub from 0.0.0.0:0.

18.08.2010 10:41:43 Cannot receive from hub - Transport endpoint is not connected

Я бы предположил, что он читает не тот config-файл.

Можно попробовать вместо microdc запускать strace -o /tmp/microdc.strace -e file microdc

и смотреть в /tmp/microdc.strace, действительно ли читается то, что нужно.

Share this post


Link to post
Share on other sites

от какого пользователя он запускается из скрипта автозапуска и добирается ли до своего конфига в хоме рута? Может конфиг в более другое место положить?

Share this post


Link to post
Share on other sites

Спасибо всем за ответы, как проверю, так отпишу. Сейчас отправили другой задачей заниматься.

Share this post


Link to post
Share on other sites

вот что по процесам после перезагрузки сервера:

ps aux|grep micro

root 884 0.0 0.1 2852 856 ? Ss 18:31 0:00 SCREEN -dmS microdc /usr/local/bin/microdc2 -c /root/.microdc2/config

root 888 0.0 0.2 4436 1528 pts/1 Ss+ 18:31 0:00 /usr/local/bin/microdc2 -c /root/.microdc2/config

root 898 0.0 0.2 4660 1124 pts/1 SN+ 18:31 0:00 /usr/local/bin/microdc2 -c /root/.microdc2/config

root 899 0.0 0.0 4280 352 pts/1 S+ 18:31 0:00 /usr/local/bin/microdc2 -c /root/.microdc2/config

root 900 0.0 0.0 4280 360 pts/1 S+ 18:31 0:00 /usr/local/bin/microdc2 -c /root/.microdc2/config

root 903 43.9 0.1 4716 936 pts/1 SN+ 18:31 0:20 /usr/local/bin/microdc2 -c /root/.microdc2/config

root 1912 33.3 0.1 3296 784 pts/0 S+ 18:31 0:00 grep micro

то есть, запущен он от рута и верный конфиг (/root/.microdc2/config)

 

но при этом в логе:

tail -f /var/log/microdc.log

19.08.2010 18:31:45 Automatically reconnecting to hub

19.08.2010 18:31:45 Connecting to hub on 0.0.0.0:0.

19.08.2010 18:31:45 Connected to hub from 0.0.0.0:0.

19.08.2010 18:31:45 Cannot receive from hub - Transport endpoint is not connected

19.08.2010 18:31:45 Shutting down hub connection.

19.08.2010 18:31:55 Automatically reconnecting to hub

19.08.2010 18:31:55 Connecting to hub on 0.0.0.0:0.

19.08.2010 18:31:55 Connected to hub from 0.0.0.0:0.

19.08.2010 18:31:55 Cannot receive from hub - Transport endpoint is not connected

19.08.2010 18:31:55 Shutting down hub connection.

19.08.2010 18:32:05 Automatically reconnecting to hub

19.08.2010 18:32:05 Connecting to hub on 0.0.0.0:0.

19.08.2010 18:32:05 Connected to hub from 0.0.0.0:0.

19.08.2010 18:32:05 Cannot receive from hub - Transport endpoint is not connected

19.08.2010 18:32:05 Shutting down hub connection.

 

как запустить strace не пойму, ведь конфиг читается при старте сервера....

Share this post


Link to post
Share on other sites

microdc нужно передавать корректные значения home директории.

 

Вот как оно у нас работает (debian lenny):

 

files:/etc/init.d# cat microdc2r1
#!/bin/bash

#!/bin/sh
# Start/stop the microdc2 client and daemonize it %).
#
### BEGIN INIT INFO
# Provides:          microdc2r1
# Required-Start:    $syslog $networking
# Required-Stop:     $syslog $networking
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
### END INIT INFO

. /lib/lsb/init-functions

export HOME=/opt/microdc2/r1

case $1 in
start)
  if [ -x /usr/local/bin/microdc2 ]; then
      echo  "Starting MicroDC2 RAID #1"
      cd $HOME
      /usr/bin/screen -d -m /usr/local/bin/microdc2r1 -c $HOME/config
  fi
;;

stop)
  echo  "Stopping MicroDC2 RAID #1"
  kill -9 `pidof SCREEN`
  screen -wipe
;;

restart)
  $0 stop
  sleep 5
  $0 start
;;

*)
  log_action_msg "usage: $0 {start|stop|restart}"
;;

 

Таким образом можно запускать несколько дц-ботов с раздачами на одной машине, разложив их конфиги в разные папки.

Работает второй год, сбоев не замечено. Рестарт раз в неделю делает logrotate после бекапа логов ботов.

Edited by Mallorn

Share this post


Link to post
Share on other sites

я у себя сделал вот так (ОС FreeBSD 7):

в /etc/rc.local добавил

 

screen -S dcpp -d -m su - dcpp -c /usr/local/bin/microdc2

 

предварительно естественно создав пользователя dcpp.

Share this post


Link to post
Share on other sites

Спасибо за ответы!

 

пробовал различные варианты, но ни один из них не сработал...:

1. запуск от пользователя : su hoochie -c 'screen -S microdc2 -d -m /usr/local/bin/microdc2 -c /home/hoochie/microdc2/config'

2. screen -d -m su -l hoochie /usr/local/bin/microdc2 -c /home/hoochie/microdc2/config

3. /usr/bin/screen -d -m /usr/local/bin/microdc2 -c /root/.microdc2/config

 

во всех трех вариантах если стартовать руками то работает(или по крону) но при старте системы не запускается(((

подскажите как я могу воспользоаться strace?

Share this post


Link to post
Share on other sites

что касается strace

добавил перед командой запуска strace -o /123

перезагрузил сервер, получил вывод strace. Он во вложении. Помогите расшифровать что не так?

в файлах, которые открывает конфигурационного файла не вижу... но его также в этом выводе не вижу, если запускаю вручную

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this