Прийнята відповідь є правильною, але не визначає, як виконати "безпечне" відключення 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?