четверг, 2 апреля 2015 г.

Run rtorrent as a service


Requirement

Вы хотите сконфигурировать службу  rtorrent в режиме "невидимка" -"daemon", "автостарт".
rtorrent будет отслеживать Ваши запросы (магнитные ссылки, файлы закачки) и качать Вам данные.

Assumptions
Предположим, что программа rtorrent уже установлена, 
работа  оттестирована в интерактивном режиме.

Pre-requisites
Нам потребуется:
  • User "rtorrent" (and /home/rtorrent);
  • Rtorrent configuration (./rtorrent.config, ./rtorrent.session)  (работающая конфигурация rtorrent в /home/rtorrent).

Constraints
Программа rtorrent является интерактивной.
Чтобы отслеживать Ваши запросы, ей необходима находиться в состоянии "активной сессии", осуществляя вывод на экран. Проще говоря: рторрент в активном экране  - рторрент качает. Вышли Вы из сессии Линукс (прекратил выполнение процесс "консоль", связанный с Вашей, к примеру, сессией ssh) - нет больше рторрента, прекратился (вместе с закачками).

Реализация
To force rtorrent, мы будем обманным путём эмулировать сессию rtorrent  с "виртуальным экраном" в режиме "daemon".  Для этого  необходимо выполнить подготовительный сценарий.
Сценарий состоит из двух шагов:
  • Настроить вспомогательную систему - т.н. "мультиплексор терминалов". В нашем примере мы рассмотрим программный мультиплексор tmux;
  • Включить автозагрузку - выгрузку (авторестарт) сессии rtorrent с мультиплексором tmux.

Для этой цели будем работать с systemd (нашим командным интерфейсом будет systemctl).

Работа

Создадим описание сервиса
$sudo nano /usr/lib/systemd/system/rtorrent.service

[Unit]
Description=rTorrent
tmux session
Requires=network.target local-fs.target
[Service]
Type=forking
ExecStart=/usr/bin/tmux new-session -s rt -d rtorrent
ExecStop=/usr/bin/tmux kill-session -t rt
User=rtorrent
KillMode=none
WorkingDirectory=/home/rtorrent/
Restart=on-failure
[Install]
WantedBy=multi-user.target

Тестируем сервис.

$sudo systemctl  start rtorrent.service

$sudo systemctl  is-active rtorrent-service
active

$sudo systemctl status rtorrent.service

$sudo systemctl stop rtorrent.service

Анализируем результат:

Критерии выполнения задачи:
Рторрент запускается (см скриншот) и обслуживает Ваши запросы.

Now promote the service to auto-start!
$sudo systemctl enable rtorrent.service

Перезагружайте системеу, проверьте статус рторрента.
$sudo systemctl status rtorrent.service

 Мы подняли рторрент

Ссылки

1 tmux.sourceforge.net
2 Arch linux systemd
3 Arch linux rtorrent

Комментариев нет:

Отправить комментарий