Принятый ответ является правильным, но не указывает, как выполнить «безопасное» отключение rtorrent
службы с помощьюsystemctl
служебного сценария.
Большинство существующих ответов или сценариев «убивают» либо сеанс экрана, либо сам rtorrent
процесс. При этом они посылают SIGINT (2)
или SIGQUIT (3)
сигнал, который останавливает / убивает rtorrent
процесс. Недостатком является то, что обычно файл блокировки rtorrent
не удаляется, потому что rtorrent
он не был закрыт должным образом. Следовательно, следующий стартrtorrent
не будет выполнен из-за постоянной блокировки файла.
Взглянув на исходный кодrtorrent
показывает, что он ожидает SIGTERM (15)
. Следовательно, с учетом systemctl
служебного скрипта команда stop может выглядеть так:
ExecStop=/usr/bin/kill -s 15 \`pidof rtorrent`
Если pidof
нет в наличии, вы также можете использовать что-то вроде:
ps -A | grep "rtorrent" | awk '{print $1}'
ps
список текущих процессов
grep
извлекает подробные сведения о процессе
awk
выбирает pid и выводит его на стандартный вывод
В случае, если вам нужно дождаться завершения выключения, вы можете использовать killall -w
. Обратите внимание, что:
killall
может ждать вечно, если сигнал был проигнорирован, не имел никакого эффекта, или если процесс остается в состоянии зомби (source:) man killall
.
sudo service start rtorrent
?