Use trap ' ' INT
antes de executar python para informar ao shell para ignorar SIGINT e trap - INT
para restaurar o comportamento padrão:
memcache_start
mongodb_start
trap ' ' INT
python fg
trap - INT
memcache_stop
mongodb_stop
Após a linha trap ' ' INT
, o shell é instruído a ignorar SIGINT, mas python
não é afetado por isso. Então, quando você apertar Ctrl + C , python
fecha normalmente, mas o shell continua, executando os demais comandos de limpeza do seu script. O segundo comando, trap - INT
não é estritamente necessário, ele permite que você use Ctrl + C novamente para parar o processo de limpeza. Ou seja, se você enviar SIGINT para memcache_stop
, o shell não tentará executar mongodb_stop
e simplesmente sairá.
Aqui é um artigo detalhado descrevendo como o SIGINT / SIGQUIT é tratado pelos shells.