Para uma abordagem mais geral para matar processos ...
Este comando deve mostrar o processo
pgrep -f runcommand.sh
Em seguida, recorte e cole o ID do processo
kill PROCESSID
ou, se você for um pouco mais corajoso usando canos
pgrep -f runcommand.sh | xargs -I{} kill {}
Se você não tem pgrep (por algum motivo), então você pode substituir o comando pgrep com essa monstruosidade:
ps aux | grep "[r]uncommand.sh" | sed 's/\s\+/ /g' | cut -f 2 -d ' '
A parte "[r] uncommand.sh" apenas garante que o grep não encontre seu próprio ID de processo também.
Se o comando kill não encerrar o processo, talvez seja necessário enviar um sinal "SIGKILL". Para isso basta adicionar -9
ao comando kill.
Dado seu caso de uso específico - talvez o shell script tenha um manipulador SIGHUP que mata o processo mame (já que ele deve ter o ID do processo) deixando o script em execução e o gatilho do arduino precisa enviar um SIGHUP ao script (através deste mecanismo, kill pode enviar SIGHUP com -1
), que pode então retornar a um loop esperando pelo sinal de moeda.