1

Я хочу запускать свой скрипт всякий раз, когда запускается какая-то другая программа (например, Просмотрщик документов). Как я могу это сделать?

1 ответ1

1

С помощью скрипта-обёртки.

  1. Переместите или переименуйте инструмент, чтобы он не был доступен стандартным $PATH с его обычным именем.
  2. Создайте скрипт-обертку, который запускает ваш скрипт (в фоновом режиме, если необходимо), затем выполняет exec -s для реального инструмента (или наоборот: запускает реальный инструмент в фоновом режиме и exec -s для вашего скрипта, но это может иметь неприятные последствия, если другая программа вызывает обертку и придерживается своего PID, думая, что это инструмент).
  3. Разместите скрипт-обертку там, где был инструмент, настройте права доступа и т.д. Пусть он подражает реальному инструменту.

Пример:

#!/bin/sh

/path/to/your/script &
exec /new/path/to/the/real/tool ${1+"$@"}

Заметки:

  • ${1+"$@"} хак объясняется здесь. Вы, вероятно, будет в порядке с обычным "$@" .
  • Ваш скрипт будет запускать тот, кто запускает оболочку. Это может или не может быть то, что вы хотите.
  • В приведенном выше примере ваш сценарий является дочерним для оболочки, которая затем заменяется инструментом. Ваш сценарий может узнать PID своего родителя, подождать, пока readlink /proc/<ppid>/exe вернет реальное местоположение инструмента, затем взаимодействовать с инструментом с помощью сигналов или чего-то еще.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .