Obtenha o script para se matar. Por exemplo, tenha algo parecido com isso no início do seu script:
kill_myself () {
while sleep 1
do
if [[ -f /tmp/kill-myself ]]
then
rm /tmp/kill-myself
kill -- -
fi
done
}
kill_myself $$ &
Agora, quando chegar a hora:
touch /tmp/kill-myself
Você pode personalizar isso, para que cada instância do script tenha seu próprio arquivo de eliminação, que você registraria em algum lugar. Então você usará esse arquivo para matar aquela instância específica do script.
Outra maneira: você provavelmente poderia usar pgrep
/ pkill
para correspondência mais precisa. Eles podem ler de um arquivo pid, combinar com o nome do comando e argumentos, etc.
Algo parecido com o seguinte apenas matará processos que tenham o mesmo nome do seu script (supondo que você o tenha chamado como script-name
ou /path/to/script-name
):
pkill -g "$previous_groupid" script-name
Isso não funcionará se você usar bash script-name
. Ou apenas para matar o comando rsync
, que provavelmente deve fazer com que seu script saia depois disso:
pkill -g "$previous_groupid" rsync