запускать rtorrent при перезагрузке

Вопрос или проблема

Как заставить rtorrent запускаться после перезагрузки?

Я пробовал запустить

systemctl reenable rtorrent

и перезагрузить машину, но процессы rtorrent не запущены.

Я могу запустить его с помощью следующей команды screen:

screen -d -m -S rtorrent rtorrent

Вот мои зависимости

systemctl list-dependencies rtorrent
rtorrent.service
● ├─system.slice
● └─basic.target
●   ├─paths.target
●   │ └─acpid.path
●   ├─slices.target
●   │ ├─-.slice
●   │ └─system.slice
●   ├─sockets.target
●   │ ├─acpid.socket
●   │ ├─avahi-daemon.socket
●   │ ├─dbus.socket
●   │ ├─docker.socket
●   │ ├─systemd-initctl.socket
●   │ ├─systemd-journald-dev-log.socket
●   │ ├─systemd-journald.socket
●   │ ├─systemd-shutdownd.socket
●   │ ├─systemd-udevd-control.socket
●   │ └─systemd-udevd-kernel.socket
●   ├─sysinit.target
●   │ ├─debian-fixup.service
●   │ ├─dev-hugepages.mount
●   │ ├─dev-mqueue.mount
●   │ ├─kmod-static-nodes.service
●   │ ├─networking.service
●   │ ├─plymouth-read-write.service
●   │ ├─plymouth-start.service
●   │ ├─proc-sys-fs-binfmt_misc.automount
●   │ ├─sys-fs-fuse-connections.mount
●   │ ├─sys-kernel-config.mount
●   │ ├─sys-kernel-debug.mount
●   │ ├─systemd-ask-password-console.path
●   │ ├─systemd-binfmt.service
●   │ ├─systemd-journal-flush.service
●   │ ├─systemd-journald.service
●   │ ├─systemd-modules-load.service
●   │ ├─systemd-random-seed.service
●   │ ├─systemd-sysctl.service
●   │ ├─systemd-tmpfiles-setup-dev.service
●   │ ├─systemd-tmpfiles-setup.service
●   │ ├─systemd-udev-trigger.service
●   │ ├─systemd-udevd.service
●   │ ├─systemd-update-utmp.service
●   │ ├─udev-finish.service
●   │ ├─cryptsetup.target
●   │ ├─local-fs.target
●   │ │ ├─-.mount
●   │ │ ├─boot.mount
●   │ │ ├─systemd-fsck-root.service
●   │ │ └─systemd-remount-fs.service
●   │ └─swap.target
●   │   ├─dev-disk-by\x2duuid-a2ba1307\x2dc5ae\x2d4e84\x2d87d9\x2dca704d4103fe.swap
●   │   └─dev-disk-by\x2duuid-a2ba1307\x2dc5ae\x2d4e84\x2d87d9\x2dca704d4103fe.swap
●   └─timers.target
●     └─systemd-tmpfiles-clean.timer

Я использую Debian GNU/Linux 8.7 (jessie)

which rtorrent
/usr/local/bin/rtorrent

Я отредактировал файл /etc/systemd/user/rt.service следующим образом:

[Unit]
Description=rTorrent
After=network.target

[Service]
Type=forking
KillMode=none
ExecStart=/usr/bin/screen -d -m -fa -S rtorrent /usr/local/bin/rtorrent
ExecStop=/usr/bin/killall -w -s 2 /usr/local/bin/rtorrent
WorkingDirectory=%h

[Install]
WantedBy=default.target

Когда я запускаю эту команду, я получаю ошибку.

systemctl --user start rt
Не удалось получить соединение D-Bus: Соединение отвергнуто

libpam-systemd установлен:

apt-get install libpam-systemd
Чтение списков пакетов... Готово
Формирование дерева зависимостей
Чтение состояния информации... Готово
libpam-systemd уже является самой новой версией.
0 обновлено, 0 ново установлено, 0 для удаления и 1 не обновлено.

и я перезагрузил машину

uptime
18:26:03, работает 5 минут, 1 пользователь, средняя загрузка: 0.06, 0.22, 0.13

В пакетах Debian нет файла службы/юнита systemd для rtorrent. Вам нужно создать свой собственный файл юнита. Примеры можно найти здесь: https://wiki.archlinux.org/index.php/RTorrent#Additional_tips

Я ничего не знаю о rTorrent, но согласно информации, предоставленной в вашем вопросе, вы должны смочь создать службу для Systemd. Я протестировал это на своей системе (Arch Linux), и это сработало.

Сначала вам нужно создать файл *.service. Я добавил пример такого файла ниже. Где создать этот файл, зависит от ваших потребностей. Если вы хотите запускать rTorrent при загрузке, вам следует создать файл в /etc/systemd/system/. Если вы хотите запускать rTorrent при входе в систему, вам следует создать его в /etc/systemd/user/ (для каждого пользователя) или ~/.config/systemd/user/ (только для вас).

После создания этого файла вы должны смочь его запустить. Я предположу, что вы назвали файл rtorrent.service, так что служба называется rtorrent. Если вы сохранили файл в /etc/systemd/system/, вы можете запустить приложение, выполнив

# systemctl start rtorrent

от имени root. Если вы сохранили его в /etc/systemd/user/ или ~/.config/systemd/user/, вам нужно вызвать

$ systemctl --user start rtorrent

от имени локального пользователя. Когда это будет работать, вы можете заменить start на enable, чтобы приложение запускалось при перезагрузке/входе в систему.

Согласно этому сообщению на форуме, вам нужно установить libpam-systemd, прежде чем вы сможете использовать пользовательские службы в Debian. Возможно, вам также потребуется перезагрузить систему.


Я думаю, что ваш файл службы должен в основном выглядеть так же, как мой пример ниже. Вам нужно удалить User=..., если вы создали пользовательскую службу.

[Unit]
Description=rTorrent
After=network.target auditd.service

[Service]
Type=forking
ExecStart=/usr/bin/screen -dmS rtorrent /bin/bash -c \
    'echo "$$$$" > %h/.rtorrent.pid && exec /usr/local/bin/rtorrent'

ExecStop=/bin/bash -c '/bin/kill -15 "$$(cat %h/.rtorrent.pid)"'
ExecStop=/bin/bash -c 'while /bin/kill -0 "$$(cat %h/.rtorrent.pid)"; do /bin/sleep 0.1; done'
ExecStopPost=bin/rm %h/.rtorrent.pid

Restart=on-failure
User=<вставьте имя пользователя здесь>
WorkingDirectory=~

[Install]
WantedBy=multi-user.target

Вам нужно запустить systemctl [--user] daemon-reload после изменения файла. В моем примере выше я сохраняю PID rtorrent в ~/.rtorrent.pid перед его запуском. Чтобы остановить приложение, я отправляю SIGTERM (15) на rTorrent (используя PID из ~/.rtorrent.pid) и жду, пока процесс остановится.

Ответ или решение

Чтобы настроить автоматический запуск rTorrent после перезагрузки системы на Debian GNU/Linux 8.7 (Jessie), потребуется создать и правильно настроить Systemd service unit файл. Давайте подробно разберем шаги, необходимые для этого процесса.

Шаг 1: Создание файла службы

  1. Определите место для сохранения файла службы. В вашем случае, если вы хотите, чтобы rTorrent запускался при каждом старте системы, создайте файл в /etc/systemd/system/. Если вы хотите, чтобы он запускался при входе конкретного пользователя, создайте файл в ~/.config/systemd/user/.

  2. Создайте файл службы. Откройте текстовый редактор с правами администратора и создайте файл, назовем его rtorrent.service:

    sudo nano /etc/systemd/system/rtorrent.service
  3. Вставьте следующий код в файл:

    [Unit]
    Description=rTorrent
    After=network.target
    
    [Service]
    Type=forking
    ExecStart=/usr/bin/screen -dmS rtorrent /usr/local/bin/rtorrent
    ExecStop=/usr/bin/killall -w -s 2 /usr/local/bin/rtorrent
    WorkingDirectory=%h
    
    [Install]
    WantedBy=multi-user.target

    В этом файле ExecStart использует команду screen для запуска rTorrent в фоновом режиме. Мы уверены, что рабочая директория (%h) верна (это домашняя директория пользователя, который запускает службу).

Шаг 2: Загрузка конфигурации службы

После создания файла вам необходимо перезагрузить конфигурацию системы системы для применения изменений:

sudo systemctl daemon-reload

Шаг 3: Включение и запуск службы

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

sudo systemctl enable rtorrent.service

Чтобы немедленно запустить службу, выполните:

sudo systemctl start rtorrent.service

Проверьте статус службы, чтобы убедиться, что все работает корректно:

sudo systemctl status rtorrent.service

Шаг 4: Исправление ошибок D-Bus

Если вы столкнетесь с ошибкой Failed to get D-Bus connection: Connection refused, это может указывать на то, что служба не была настроена как пользовательская. Убедитесь, что у вас установлен libpam-systemd:

sudo apt-get install libpam-systemd

Если вы используете пользовательскую службу, выполняйте команду systemctl --user вместо systemctl и убедитесь, что вы запустили сессию systemd, добавив --user в команды.

Полезные рекомендации

  1. Логи: Если существуют проблемы с запуском, просмотрите логи с помощью journalctl -u rtorrent.service для диагностики.

  2. Права доступа: Убедитесь, что у rTorrent достаточно прав на доступ к своей рабочей директории и файлам конфигурации.

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

Заключение

Следуя вышеуказанным шагам, вы сможете настроить автоматический запуск rTorrent после перезагрузки Debian системы. Правильная настройка службы позволит вам избежать ручного запуска и упростить управление вашим торрент-клиентом, что сделает его использование более комфортным.

Оцените материал
Добавить комментарий

Капча загружается...