Автозапуск rTorrent [РЕШЕНО]

Здравствуйте товарищи гентушники.

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

Раньше стоял осел (mldonkey), использовал я его как torrent клиент, но вскоре открыл для себя сабжевое чудо и перешел на него.

Запускаю я rtorrent в screen, и в дальнейшем по ssh управляю. Но вот возникла одна проблема, тачка заводится сама при подаче сетевого напряжения, и ослик естественно загружался сам, т.к. имеет свой ран-скрипт. А rtorrent так не умеет :(

Первая мысль была заводить screen+rtorrent из local.start, но к сожалению и к моему стыду, я не знаю как изменить UID на простого пользователя, а от рута такие вещи пускать - стремно.

Позже я нашел другой вариант, который мне больше всего понравился, это использовать скрипт для запуска от Q3 CPMA dedicated server, естественно переделать его под rtorrent. Привожу код этого скрипта:

#!/sbin/runscript
# Copyright 1999-2004 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/games-fps/quake3-bin/files/q3ded.rc,v 1.1 2005/10/25 00:38:03 vapier Exp $

depend() {
        need net
}

start() {
        ebegin "Starting Quake3 CPMA dedicated server"
        cd ~
        screen -A -m -d -S q3cpma-ded /usr/games/bin/q3cpma-ded ${cpma_OPTS}
        eend $?
}

stop() {
        ebegin "Stopping Quake3 CPMA dedicated server"
        local pid=`screen -list | grep q3cpma-ded | awk -F . '{print $1}' | sed -e s/.//`
        if [ -z "${pid}" ] ; then
                eend 1 "Lost screen session"
        fi
        kill ${pid}
}

status() {
        screen -list | grep q3cpma-ded
}

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

Народ, кто может подсказать как изменить UID для screen или ткнуть в документ где описано как писать гентовые инит-скрипты c возможностью задания произвольного UID?

--Заранее спасибо--

Используй su

Используй su <имя пользователя> <что запускаем>

пробавал я так,

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

su -c

su -c

Используй

В общем

В общем повозился я и есть пложительный результат, скрипты я пишу плохо, так что нет пока проверки состояния при останове и тп.

Но для тех, кому это нужно решил запостить. Жду конструктивную критику, а не вопросы и предпочтения - "зачем оно надо?", "юзай другой клиент" и тд.

Делается все с помощью двух фалйов в /etc/ini.d/ и /etc/conf.d, создаем в каждой из этих директорий файл, например rtorrent, при этом файл должен иметь одинаковое имя в обеих дирах (!!!)

Для /etc/init.d/rtorrent - права 755, владелец и группа - root.
Для /etc/conf.d/rtorrent - права 644, владелец и группа так же - root.

Файл переменных, задаем тут пути к программам, пользователя и диру, где валяется файл настроек (.rtorrent.rc):

# screen and rtorrent autoload configuration

# Owner of screen session and rtorrent process
USER="user"

# Home dir with .rtorrent.rc
HOME_DIR="/home/user"

# Screen options for starting rtorrent
SCREEN_OPTS="-dmS rtorrent /usr/bin/rtorrent"

# Path to *.pid file
PIDFILE="/var/run/screen.pid"

# Path to 'screen' binary
SCREEN_BIN="/usr/bin/screen"

# Path to 'rtorrent' binary
RTORRENT_BIN="/usr/bin/rtorrent"

И сам инит-скрипт:

#!/sbin/runscript
# Copyright 1999-2004 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2


depend() {
        need net
}

start() {
        ebegin "Starting screen & rtorrent"
        env HOME=${HOME_DIR} start-stop-daemon --start --background --make-pidfile --pidfile ${PIDFILE} \
        --chuid ${USER} --exec ${SCREEN_BIN} -- ${SCREEN_OPTS}
        eend $?
}

stop() {
        ebegin "Stopping screen & rtorrent"
        start-stop-daemon --stop --quiet --exec ${RTORRENT_BIN}
        eend $?
}

restart() {
        ebegin "Restarting screen & rtorrent"
        svc_stop
        sleep 2
        svc_start
        eend $?
}

В дальнейшем планирую повесить проверку на запущенный процесс при стопе, а так же при старте, если оно уже запущено ручками и настроить логирование.

Работает вся эта бодяга следующим образом: тачка заводится, запускается screen от заданного пользователя с rtorrent внутри, т.к. указана домашняя дира этого юзера - проблем не возникает, rtorrent читает свой файл конфигурации и поехал.

Восстановить сессию screen можно только от того юзера, от которого мы запускаем. Я управляю по ssh, залогиневшись на тачку под этим юзером и делаю screen -r. Если в открытой сессии нажать ctrl+q (выход из rtorrent'a), процесс screen тоже завершится, что в принципе удобно.

Так же надо не забыть добавить в автозапуск наш скрипт:
rc-update add rtorrent default

Модераторы, можете тему закрывать.

вставь [РЕШЕНО]

вставь [РЕШЕНО] в тему первого поста...

малатца

Это скорее предпочтения, нежели критика, и тем не менее
1. имена скриновской сессии и новому демону я бы дал всё-таки более говорящие. Через месяц сам не разберёшься во всех этих rtorrent'ах.
2. мне кажется, будет полезным (с учётом первого)

echo "alias rtorrent=stty stop undef; stty start undef; screen -r rtorrent-session" >> ~/.bashrc

3. уже в качестве критики (пусть мелочной): после всего неплохо бы закрыть запущенный rtorrent и выполнить

rc-config start rtorrentd

В качестве завершающей точки.

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

до rtorrent недоходит CTRL+S

vad написал(а):
# Screen options for starting rtorrent
SCREEN_OPTS="-dmS rtorrent /usr/bin/rtorrent"

и у вас работает CTRL+S||CTRL+q в rtorrent?

http://www.gentoo.ru/node/120

А повесьте feature

А повесьте feature request в багзилу с этими init.d и conf.d файлами приложенными. Их, конечно, по умолчанию врядли будут устанавливать в /etc/init.d conf.d соответсвенно, но в /usr/share/doc/rtorrent-ver/ думаю можно положить и elog соответсвующий написать... Я, конечно, не maintainer, но кто знает. Может быть maintainer согласиться...

Хоть автор и

Хоть автор и просил не предлагать альтернативных клиентов, всё таки рискну обратить его внимание на вот этого зверька: http://bitflu.workaround.ch , если верить всему что заявлено то он без костылей и извращений умеет всё что надо и даже больше.

Не выходит

Не выходит каменный цветок. ;)

Ни первым способом.

gentoo-server ~ # nano -w /etc/conf.d/rtorrent
gentoo-server ~ # nano -w /etc/init.d/rtorrent
gentoo-server ~ # rc-update add rtorrent default
* rtorrent not executable; skipping

Ни программой другой.

gentoo-server ~ # emerge -s bitflu
Searching...
[ Results for search key : bitflu ]
[ Applications found : 0 ]

Моя мечта:
#emerge комьютер с генту

Хм...

K_A_V написал(а):
Моя мечта:
#emerge комьютер с генту

Так ведь так не интересно, а иначе зачем бы мы все выбрали Генту?! Ведь есть на то Кубунту, Убунту, и еще много-много дистров, де все из коробки воркает! ;)
А Генту... Тут думать над... =)

Не, про Ubuntu я

Не, про Ubuntu я тебе в личку написал.
меня Gentoo устраивает тем, что раз настроенная - продолжает работать и работать.

PIDFILE="/var/run/screen.pid" - соответственно не создан. Я так понимаю создается при успешном запуске.

Все остальное вроде на месте. :(

Моя мечта:
#emerge комьютер с генту

gentoo-server ~ # nano -w

gentoo-server ~ # nano -w /etc/init.d/rtorrent - после этого надо сделать chmod 755 /etc/init.d/rtorrent - без этого естественно он не выполняем о чем вам собственно и сказали.

Да. Именно в

Да. Именно в этом и было все дело. Спасибо что обратили внимание.

Теперь все работает. Надо копать в сторону удобного доступа к управлению. Пока через FTP сделал доступ к папке и указал rtorrent следил за появление torrent файлов в ней.

Моя мечта:
#emerge комьютер с генту

вы мечатете об

вы мечатете об удобном управлении, поглядите в сторону wtorrent

Спасибо, всё

Спасибо, всё отлично работает на домашнем хранилище.

А у меня снова

А у меня снова ничего не работает.

причем напрямую команда
/usr/bin/screen -dmS rtorrent /usr/bin/rtorrent сначала запустилась, потом соответственно перестала работать.

Запускать началось. У директории у одной указанной в настройка rc.rtorrent небыло права доступа. Но следующая проблема. в упор не хочет видеть файлы в директории для автозапуска torrent файлов.

Наверное прийдет ждать когда deluge выйдет новый. :(

Моя мечта:
#emerge комьютер с генту

Вики про

Вики про демонизацию rtorrent'a, настройка веб-морды к нему (wtorrent), скрипты, конфиги... На ru.gentoo-wiki.com :D
____________
Экономь электроэнергию! Выключи NumLock!

/etc/init.d/rtorrent start

/etc/init.d/rtorrent start
* Starting rtorrent ...
/sbin/start-stop-daemon: need at least one of --exec, --pidfile, --user or --name
Try `/sbin/start-stop-daemon --help' for more information.
/etc/init.d/rtorrent: line 15: --env: command not found
/etc/init.d/rtorrent: line 17: --env: command not found
/etc/init.d/rtorrent: line 19: --exec: command not found

Все делал как написано!

/etc/init.d/rtorrent start

K_A_V написал(а):
/etc/init.d/rtorrent start
* Starting rtorrent ...
/sbin/start-stop-daemon: need at least one of --exec, --pidfile, --user or --name
Try `/sbin/start-stop-daemon --help' for more information.
/etc/init.d/rtorrent: line 15: --env: command not found
/etc/init.d/rtorrent: line 17: --env: command not found
/etc/init.d/rtorrent: line 19: --exec: command not found

Все делал как написано!

Удали пустые строки между line 15,17,19

Опять двадцать

Опять двадцать пять.
http://www.gentoo.ru/node/11673

# emerge

# emerge dtach

/etc/conf.d/rtorrent

# /etc/conf.d/rtorrent: config file for /etc/init.d/rtorrent.

# Options to pass to the rtorrent daemon..

# The username/uid to start rtorrent with.
USER="perlovka"

# Path to the dtach binary (needs to be absolute path).
DTACH="/usr/bin/dtach"

# The socket for the rtorrent
SOCKET="/tmp/rtorrent.dtach"

# Path to the rtorrent binary (needs to be absolute path).
RTORRENT="/usr/bin/rtorrent"

TERM="rxvt"

/etc/init.d/rtorrent

#!/sbin/runscript.
# Distributed under the terms of the GNU General Public License v2.

depend() {
          use net
         }

start() {
        ebegin "Starting rtorrent"
        start-stop-daemon -u $USER -e $TERM -Sx $DTACH -- -n $SOCKET /usr/bin/rtorrent
        eend $?
}

stop() {
    ebegin "Stopping rtorrent"
    start-stop-daemon --stop --signal 2 --name rtorrent
    eend $?
}

Запуск демона:

/etc/init.d/rtorrent start

Вызов из-под юзверя:

dtach -a /tmp/rtorrent.dtach

Выход(по умолчанию) - Ctrl+\

Дополнительно:

$ man dtach

____________________________________________
Welcome to irc://irc.freenode.net/gentoo-ru
Registered Linux User #363657
Gentoo Base System 2.0.0 || Fvwm 2.5.26

Почему то не

Почему то не запускается!

# /etc/init.d/rtorrent start
-bash: /etc/init.d/rtorrent: /sbin/runscript.: bad interpreter: No such file or directory

Моя мечта:
#emerge комьютер с генту

А нафига в

А нафига в твоём скрипте стоит точка после /sbin/runscript? ;)
Наверняка её нет в имени файла (т.е. файла с таким именем нет в твоей системе :D).
____________
Экономь электроэнергию! Выключи NumLock!

.

l6xus написал(а):
А нафига в твоём скрипте стоит точка после /sbin/runscript? ;)

А это Erlang :-)

хм

ndrwsh написал(а):
l6xus написал(а):
А нафига в твоём скрипте стоит точка после /sbin/runscript? ;)

А это Erlang :-)

а где тогда фигурные скобки?

На офсайте уже все есть.

На офсайте уже все есть. Смотри последний пункт в разделе CommonTasks:
http://libtorrent.rakshasa.no/wiki/RTorrentCommonTasks#StartingrTorrentonSystemStartup

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".