LINUX.ORG.RU

[debian][rtorrent as daemon] понятно все, кроме одного...


0

0

Решил пускать rtorrent как демон. Нагуглил init-скрипт для его, screen'а, запуска. Скрипт запускается, все работает (да, я пускаю rtorrent не из-под своего пользователя). Только вот не получается сделать «screen -r torrent»...

Собственно скрипт вот:

#!/bin/bash

RTUSER=rtorrent
 
RTORRENT=/usr/bin/rtorrent
KILL=/bin/kill
SCREEN=/usr/bin/screen
 
PIDFILE=/var/run/rtorrent.pid
 
start_rt()
{
    echo -n "Starting rtorrent... "
    start-stop-daemon --start --background --pidfile $PIDFILE --make-pidfile --chuid $RTUSER --exec $SCREEN -- -DmUS torrent $RTORRENT
    if [ $? -eq 0 ]; then
        echo "success!"
    else
        echo "fail!"
    fi
}
 
stop_rt()
{
    echo -n "Stopping rtorrent... "
    start-stop-daemon --stop --pidfile $PIDFILE
    if [ $? -eq 0 ]; then
        echo "The process stopped successfully"
    else
        echo "The process failed to stop"
    fi
}
 
status_rt()
{
    echo -n "Status: "
    PID=`cat $PIDFILE`
 
    $KILL -0 $PID
    if [ $? -eq 0 ]; then
        echo "started"
        return 0
    else
        echo "stopped"
        return 1
    fi
 
}
 
restart_rt_if_needeed()
{
    status_rt
    if [ $? -ne 0 ]; then
        echo "Rtorrent is not running. Restart needed"
        stop_rt
        start_rt
    else
        echo "Restart is not needed"
    fi
}
 
case "$1" in
    start)
        start_rt
    ;;
    stop)
        stop_rt
    ;;
    restart)
        stop_rt
        start_rt
    ;;
    restart_if_needed)
        restart_rt_if_needeed
    ;;
    status)
        status_rt
    ;;
    *)
        echo "Usage: {start|stop|restart|status|restart_if_needed}"
    ;;
esac

[scholz@bunker] ~$ screen -r rtorrent/torrent Must run suid root for multiuser support.

Какое может быть решение в данной ситуации? :)


Re: [debian][rtorrent as daemon] понятно все, кроме одного...

[code]start-stop-daemon --start --background --make-pidfile --pidfile /var/run/rtorrent.pid \
    --chuid mdm --exec /usr/bin/screen -- -dmS rtorrent /usr/bin/rtorrent[/code]

так ведь, собственно, та же строка, что и у меня в скрипте :)

наверняка я что-то пропустил, и не вижу что :)

scholz ()

Re: [debian][rtorrent as daemon] понятно все, кроме одного...

А просто screen -r?

anton_jugatsu ★★★★ ()

Re: [debian][rtorrent as daemon] понятно все, кроме одного...

Ничего не показывает. Оно же видет только текущие сессии пользователя, а в скрипте скрин пускается от другого пользователя. Начал гуглить по поводу multiuser сессий скрина, но везде написанно, что надо вводить команду непосредственно в самом скрине, и я не нашел как это сделать в .screenrc. Вобщем рад буду если кто подскажет :)

scholz ()

Re: [debian][rtorrent as daemon] понятно все, кроме одного...

А почему бы просто не запустить screen следующим способом, например (как сделано у меня -- Arch на сервере):

su - jugatsu -c 'screen -dm /usr/bin/rtorrent -s /home/jugatsu/downloads/session' &> /dev/null

это выдержка из демона...

То есть при помощи su.

anton_jugatsu ★★★★ ()

Re: [debian][rtorrent as daemon] понятно все, кроме одного...

Еще не пробовал, но вопрос еще задам: нормально ли, без лишних движений, ты подключаешься к сессии другого пользователя? Если да - есть ли какие-то особые настройки .screenrc для пользователя jugatsu? Ведь у меня все запускается, только не дает доступа к сессии другого пользователя screen'а.

И второе - ты делал это сам, или средствами дистрибутива (может в арче искаропки есть такая возможность). :)

scholz ()

Re: [debian][rtorrent as daemon] понятно все, кроме одного...

Вроде-как в темах кажется, что чуть ли не каждый пускает rtorrent как демон, и вроде-как у них все работает... Но поделиться опытом некому... Очень странно :)

Но спасибо всем ответившим - буду продолжать копать.

scholz ()

Re: [debian][rtorrent as daemon] понятно все, кроме одного...

Ну почему же не может :)

Вот мой демон: http://paste.ubuntu.com/193585/

Пускается, соответственно sudo /etc/rc.d/rtorrent start|stop|restart от пользователя jugatsu (т.е. меня). Также прописан в автозагрузку:

DAEMONS=(syslog-ng network netfs crond sshd iptables portmap nfslock nfsd rtorrent lighttpd)

Дистрибутив Archlinux.

anton_jugatsu ★★★★ ()

Re: [debian][rtorrent as daemon] понятно все, кроме одного...

> jugatsu (т.е. меня)

тогда понятно :)

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

Для этого, оказалось, надо сделать multiuser сессию screen'а, а в эту степь мне пока что лень копать :)

Просто как всегда надеялся на готовое решение, которого, видать, пока нету, или оно есть, но скрывается :)

Если у меня таки руки дойдут - постараюсь обязательно запостить решение.

scholz ()

Re: [debian][rtorrent as daemon] понятно все, кроме одного...

> Просто как всегда надеялся на готовое решение, которого, видать, пока нету, или оно есть, но скрывается :)

> Если у меня таки руки дойдут - постараюсь обязательно запостить решение

А если вот так попробовать:

sudo chmod +s /usr/bin/screen

sudo chmod 755 /var/run/screen

anton_jugatsu ★★★★ ()

Re: [debian][rtorrent as daemon] понятно все, кроме одного...

Решение было найдено здесь http://www.pixelbeat.org/docs/screen/

> For security reasons, screen by default is installed so that other users within the system can not attach to your screen sessions. To allow this to be changed one must set screen to run SUID root by doing the following (once):

> sudo chmod +s /usr/bin/screen

> sudo chmod 755 /var/run/screen

anton_jugatsu ★★★★ ()

Re: [debian][rtorrent as daemon] понятно все, кроме одного...

:)

Это я видел. Только чтобы разрешить определенному пользователю подключаться к терминалу необходимо ввести команду непосредственно в screen'е (^A:multiuser on). Но как это автоматизировать - пока что не нашел :)

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