A resposta aceita está correta, mas não especifica como executar um desligamento "seguro" do serviço rtorrent com um script systemctl service.
A maioria das respostas ou scripts existentes "matam" a sessão de tela ou o processo rtorrent em si. Ao fazer isso, eles enviam um sinal SIGINT (2) ( 1 ) ou SIGQUIT (3) que interrompe / mata o rtorrent processo. A desvantagem é que normalmente o arquivo de bloqueio de rtorrent não é excluído porque rtorrent não foi encerrado corretamente. Consequentemente, o próximo início de rtorrent falharia devido ao arquivo de bloqueio persistente.
Veja o código-fonte de rtorrent ( 2 ) que espera um SIGTERM (15) . Portanto, considerando um script systemctl service, o comando stop poderia se parecer com:
$ ExecStop=/usr/bin/kill -s 15 \'pidof rtorrent'
Se pidof não estiver disponível, você também pode usar algo como:
$ ps -A | grep "rtorrent" | awk '{print }'
-
ps listam os processos atuais
-
grep extrai as particularidades do processo rtorrent
-
awk seleciona o pid e o exibe para stdout
Caso você precise esperar até que o desligamento seja concluído, você pode usar killall -w . Note que:
killall pode esperar para sempre se o sinal for ignorado, não tiver efeito,
ou se o processo permanecer no estado zumbi (fonte: man killall ).