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

1461
Damian

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

Я пытался бежать

systemctl reenable rtorrent 

и перезагрузите компьютер, но нет запущенного процесса.

Я могу запустить его, используя следующую экранную команду:

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 (Джесси)

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 Failed to get D-Bus connection: Connection refused 

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

apt-get install libpam-systemd Reading package lists... Done Building dependency tree Reading state information... Done libpam-systemd is already the newest version. 0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded. 

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

uptime 18:26:03 up 5 min, 1 user, load average: 0.06, 0.22, 0.13 
0

2 ответа на вопрос

0
Lutz Reinhardt

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

Я создал файл /etc/systemd/user/rt.service, но затем получаю сообщение об ошибке: «systemctl --user enable rt» «Не удалось получить соединение по D-Bus: соединение отклонено» Damian 7 лет назад 0
Вам нужен пакет `libpam-systemd` ... Возможно, необходима перезагрузка ... Lutz Reinhardt 7 лет назад 0
Был установлен, перезагрузился в любом случае. Все та же проблема Damian 7 лет назад 0
0
JojOatXGME

Я ничего не знаю о 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 

как корень. Если вы сохранили его в /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=<insert some username here> WorkingDirectory=~  [Install] WantedBy=multi-user.target 

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

Похожие вопросы