LINUX.ORG.RU

Проблемы с transmission


0

2

Доброго времени суток всем кто читает этот пост! Решил установить себе transmission-daemon, установил, остановил командой /etc/init.d/transmission-daemon stop,поправил конфиг в папке /etc/transmission-daemon/settings.json настроив в нём rpc изменил права доступа к файлу настроек. Перезагрузил комп и после перезагрузки всё заработало. Поработав немного решил перезагрузить комп командой init 6. После перезагрузки не смог подсоединиться к веб интерфейсу. войдя в систему увидел что демон запущен а на порте 9091 не висит не какого лисенера. И далее при последующих перезагрузках интерфейс не работает! Хотя файл настроек при этом не изменён. У меня чувство, что демон подгружает от куда-то дефолтный конфиг но найти его я не могу! Кто сталкивался с подобной проблемой прошу подскажите решение. Работаю на Debian.

изменил права доступа к файлу настроек

А у демона вообще есть права на чтение конфига?

CYB3R ★★★★★
()

Чем черт не шутит, посмотрите что у вас в

/var/lib/transmission-daemon/info

творится. У меня там все хранится и линк на

/etc/transmission-daemon/settings.json

тоже там. P/S/У меня на убунте это вертится, но вы вроде про место спрашивали....

Waldo-de-Kard ★★
()
Ответ на: комментарий от CYB3R

Да я думаю есть! команда из под root: /etc/init.d/transmission-daemon start; запускает демон и он работает правильно; Была идея прилепить костыль что то типа отложенного запуска однократно при запуске системы скажем на минуту но это костыль и это не хорошо да и готового инструмента как это сделать я не нашёл.

glonium
() автор топика
Ответ на: комментарий от Waldo-de-Kard

У меня тоже линк но правлю то я файл по этому линку!

glonium
() автор топика

Если конфиг вообще удалить, что будет? Запустится или ругнётся?

CYB3R ★★★★★
()
Последнее исправление: CYB3R (всего исправлений: 1)

У меня чувство, что демон подгружает от куда-то дефолтный конфиг

А процесс то висит с этим дефолтным конифигом, чудо? Если нет, то может ты тупо в runlevel забыл его добавить?

anonymous
()

изменил права доступа к файлу настроек

Не обратил внимания на эту строчку вначале. Вы точно знали, что делали? Мне там ничего менять не приходилось.

Waldo-de-Kard ★★
()
Ответ на: комментарий от anonymous

Сравнил с помощью /proc строку запуска при загрузке системы файл конфига правильный но не работает веб интерфейс, хотя процесс висит, может порт 9091 нужно где открыть?

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

Определил что веб интерфейс перестаёт работать после того как перезагрузиш комп без останова демона или просто завершить процесс с помощью killall transmission-daemon и перезапустить комп

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

Ну значит у тебя кривая система инициализации или init-скрипт/unit. Остается pid-файл и ей кажется что демон запущен. Плохой, негодный дистр.

anonymous
()
Ответ на: комментарий от glonium

Проблема решена! Действительно по умолчанию из репов почему то ставился скрипт косячный в init.d. Пересобрал transmission последней версии из исходников и настроил по статье http://habrahabr.ru/post/87287/, со скриптом https://trac.transmissionbt.com/wiki/Scripts/initd и всё заработало! Всем спасибо за помощь!

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

Да рано обрадовался перезапусти систему при помощи init 6 и опять веб морда не стартовала! Лисенера нет на порту 9091. А сам торент запущен! Что к чему?

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

Зачем искать приключений? Это всё делается командой halt, ещё должен быть симлинк reboot. Если хочется приключений, тогда страдай.

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

ачем искать приключений? Это всё делается командой halt, ещё >должен быть симлинк reboot. Если хочется приключений, тогда >страдай.

а разница в чём? Причину то надо найти всё равно. ачем искать приключений? Это всё делается командой halt, ещё должен быть симлинк reboot. Если хочется приключений, тогда страдай.еня не радует такая нестабильная работа!

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

кстати стоит только один раз перезагрузится с помощью init 6 следующие перезагрузки «нормальным» методом картина не меняется!

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

так /etc/transmission-daemon/settings.json или /home/transmission/.config/transmission-daemon/settings.json? у меня демон читает конфиг из /var/lib/transmission/config/settings.json, раньше было /var/transmission/config/settings.json.

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

Я не знаю, как работают init-скрипты в дебиане. Этот вопрос исключительно для локализации проблемы с правами доступа, но вряд ли имеет какое бы то ни было значение.

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

кстати вот лог файл [23:03:53.600] Transmission 2.52 (13304) started (session.c:718) [23:03:53.600] Couldn't read «/var/lib/transmission-daemon/info/stats.json»: No such file or directory (utils.c:445) [23:03:53.600] Couldn't read «/var/lib/transmission-daemon/info/stats.benc»: No such file or directory (utils.c:445) [23:03:53.600] Cache Maximum cache size set to 4.00 MiB (256 blocks) (cache.c:249) [23:03:53.600] RPC Server Adding address to whitelist: 127.0.0.* (rpc-server.c:803) [23:03:53.600] RPC Server Adding address to whitelist: 192.168.1.* (rpc-server.c:803) [23:03:53.600] RPC Server Serving RPC and Web requests on port 127.0.0.1:9091/transmission/ (rpc-server.c:997) [23:03:53.600] getaddrinfo: address family for nodename not supported (trevent.c:218) [23:03:53.600] RPC Server Whitelist enabled (rpc-server.c:1001) [23:03:53.600] RPC Server Password required (rpc-server.c:1004) [23:03:53.600] Bound socket 10 to port 51413 on 0.0.0.0 (net.c:371) [23:03:53.600] Bound socket 11 to port 51413 on :: (net.c:371) [23:03:53.600] Port Forwarding Stopped (port-forwarding.c:181) [23:03:53.600] UDP Failed to set receive buffer: requested 4194304, got 262142 (tr-udp.c:75) [23:03:53.600] UDP Please add the line «net.core.rmem_max = 4194304» to /etc/sysctl.conf (tr-udp.c:80) [23:03:53.600] UDP Failed to set send buffer: requested 1048576, got 262142 (tr-udp.c:86) [23:03:53.600] UDP Please add the line «net.core.wmem_max = 1048576» to /etc/sysctl.conf (tr-udp.c:91) [23:03:53.600] DHT Initializing DHT (tr-dht.c:276) [23:03:53.600] DHT Reusing old id (tr-dht.c:305) [23:03:53.600] DHT Bootstrapping from 57 IPv4 nodes (tr-dht.c:153) [23:03:53.600] DHT DHT initialized (tr-dht.c:330) [23:03:53.600] Using settings from «/var/lib/transmission-daemon/info» (daemon.c:488) [23:03:53.600] Saved «/etc/transmission-daemon/settings.json» (bencode.c:1731) [23:03:53.600] transmission-daemon requiring authentication (daemon.c:508) [23:10:20.756] DHT Finished bootstrapping (tr-dht.c:258)

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

Прошу прощение за такую помойку, меня впрочем насторожило сообщение, которого нет при номальной загрузке [23:03:53.600] getaddrinfo: address family for nodename not supported (trevent.c:218)

anonymous
()
Ответ на: комментарий от pkurg

Да как настроить трансмиссию я знаю, мало того она от рута запускается на ура командой /etc/init.d/transmission-daemon start, но вот при запуске системы (после перезагрузке командой init 6) не стартует веб интерфейс, netstat -tanp не видит лисенера на порту 9091! а при нормальном запуске при помощи /etc/init.d/transmission-daemon start всё запускается и лисинер висит на этом порту!

anonymous
()
Ответ на: комментарий от pkurg

Вот написал скрипт на python который запускает transmission через некоторое время (200 сек) после старта системы помогло работает!

#!/usr/bin/python

### BEGIN INIT INFO
# Provides:          my_daemon
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Example initscript
# Description:       This file should be used to construct scripts to be
#                    placed in /etc/init.d.
### END INIT INFO

#vars
log_path='/var/log/transmission_starter/'
delay_time=200
transmission_config_path='/etc/transmission-daemon/'
transmission_path='transmission-daemon'

import time
import os
import sys
import logging
import subprocess


logging.basicConfig(format = u'%(levelname)-8s [%(asctime)s] %(message)s', level = logging.DEBUG, filename = os.path.normpath(log_path+'transmission_starter.log'))

logging.info('script is started!')

class Daemon:
        """
        A generic daemon class.
       
        Usage: subclass the Daemon class and override the run() method
        """
        def __init__(self):
                self.stdin = '/dev/null'
                self.stdout = '/dev/null'
                self.stderr = '/dev/null'
                self.pidfile = '/dev/null'
       
        def daemonize(self):
\                try:
                        pid = os.fork()
                        if pid > 0:
                                # exit first parent
                                sys.exit(0)
                except OSError, e:
			logging.critical('fork 1 is failed!')
                        sys.stderr.write("fork #1 failed: %d (%s)\n" % (e.errno, e.strerror))
                        sys.exit(1)
       
                # decouple from parent environment
                os.chdir("/")
                os.setsid()
                os.umask(0)
       
                # do second fork
                try:
                        pid = os.fork()
                        if pid > 0:
                                # exit from second parent
                                sys.exit(0)
                except OSError, e:
						logging.critical('fork 2 is failed!')
                        sys.stderr.write("fork #2 failed: %d (%s)\n" % (e.errno, e.strerror))
                        sys.exit(1)
       
                # redirect standard file descriptors
                sys.stdout.flush()
                sys.stderr.flush()
                si = file(self.stdin, 'r')
                so = file(self.stdout, 'a+')
                se = file(self.stderr, 'a+', 0)
                os.dup2(si.fileno(), sys.stdin.fileno())
                os.dup2(so.fileno(), sys.stdout.fileno())
                os.dup2(se.fileno(), sys.stderr.fileno())
               
        def start(self):
                """
                Start the daemon
                """
                # Start the daemon
                self.daemonize()
                self.run()
 
        def stop(self):
			logging.info('Stopping transmission-daemon')
			PIPE = subprocess.PIPE
			p = subprocess.Popen(['killall transmission-daemon'], shell=True, stdin=PIPE, stdout=PIPE,
     				   stderr=subprocess.STDOUT, close_fds=True, cwd='/home/')
			outmsg=p.stdout.read()		
			if (outmsg!='') :
				logging.warning('transmission not started!')
        def restart(self):
			return
        def run(self):
			logging.info('Start delay')
			time.sleep(delay_time)
			logging.info('Delay is finished')
			logging.info('Startting transmission-daemon')
			PIPE = subprocess.PIPE
			p = subprocess.Popen([transmission_path+' -g '+transmission_config_path], shell=True, stdin=PIPE, stdout=PIPE,
     				   stderr=subprocess.STDOUT, close_fds=True, cwd='/home/')
			outmsg=p.stdout.read()		
			if (outmsg!='') :
				logging.warning(outmsg)

		


daemon = Daemon()
if len(sys.argv) == 2:
	if 'start' == sys.argv[1]:
		daemon.start()
	elif 'stop' == sys.argv[1]:
		daemon.stop()
	elif 'restart' == sys.argv[1]:
		daemon.restart()
	else:
		print "Unknown command"
		sys.exit(2)
	sys.exit(0)
else:
	print "usage: %s start|stop|restart" % sys.argv[0]
	sys.exit(2)

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