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