Com um script de wrapper.
- Mova ou renomeie a ferramenta para que ela não seja alcançada pelo padrão
$PATH
com seu nome usual. - Crie um script de wrapper que inicie seu script (em segundo plano, se necessário) e, em seguida,
exec
-s para a ferramenta real (ou vice-versa: lança a ferramenta real em segundo plano eexec
-s no seu script, mas isso pode sair pela culatra se outro programa chama o wrapper e adere ao seu PID pensando que é a ferramenta). - Coloque o script wrapper onde a ferramenta estava, ajuste as permissões, etc. Deixe-o representar a ferramenta real.
Exemplo:
#!/bin/sh
/path/to/your/script &
exec /new/path/to/the/real/tool ${1+"$@"}
Notas:
-
${1+"$@"}
hack é explicado aqui . Você provavelmente estaria bem com o usual"$@"
. - Seu script será executado por quem executar o wrapper. Pode ou não ser o que você quer.
- No exemplo acima, seu script é filho do wrapper, que é substituído pela ferramenta. Seu script pode descobrir o PID de seus pais, esperar até que
readlink /proc/<ppid>/exe
retorne a localização real da ferramenta e, em seguida, interagir com a ferramenta usando sinais ou o que for.