A resposta aceita está correta, mas não especifica como executar um encerramento "seguro" do rtorrentserviço com um systemctlscript de serviço.
A maioria das respostas ou scripts existentes "mata" a sessão da tela ou o rtorrentpróprio processo. Ao fazer isso, eles enviam um sinal SIGINT (2)ou SIGQUIT (3)que interrompe / mata o rtorrentprocesso. A desvantagem é que normalmente o arquivo de bloqueio de rtorrentnão é excluído porque rtorrentnão foi desligado corretamente. Conseqüentemente, o próximo início de rtorrentfalha por causa do arquivo de bloqueio persistente.
Olhando o código fonte dosrtorrent programas que ele espera a SIGTERM (15). Portanto, considerando um systemctlscript de serviço, o comando stop pode se parecer com:
ExecStop=/usr/bin/kill -s 15 \`pidof rtorrent`
Se pidofnão estiver disponível, você também pode usar algo como:
ps -A | grep "rtorrent" | awk '{print $1}'
ps listar os processos atuais
grep extrai os detalhes do processo rtorrent
awk seleciona o pid e o exibe em stdout
Caso precise aguardar a conclusão do desligamento, você pode usá-lo killall -w. Observe que:
killallpode esperar para sempre se o sinal foi ignorado, não teve efeito ou se o processo permanecer no estado de zumbi (fonte man killall:).
sudo service start rtorrent?