Executando meu script sempre que outro programa é iniciado

1

Eu quero executar meu script sempre que algum outro programa começar a ser executado (ex. Document Viewer). Como posso fazer isso?

    
por mpto 01.08.2018 / 16:13

1 resposta

1

Com um script de wrapper.

  1. Mova ou renomeie a ferramenta para que ela não seja alcançada pelo padrão $PATH com seu nome usual.
  2. 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 e exec -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).
  3. 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.
por 01.08.2018 / 16:57

Tags