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
).