Я хочу запускать свой скрипт всякий раз, когда запускается какая-то другая программа (например, Просмотрщик документов). Как я могу это сделать?
1
1 ответ
1
С помощью скрипта-обёртки.
- Переместите или переименуйте инструмент, чтобы он не был доступен стандартным
$PATH
с его обычным именем. - Создайте скрипт-обертку, который запускает ваш скрипт (в фоновом режиме, если необходимо), затем выполняет
exec
-s для реального инструмента (или наоборот: запускает реальный инструмент в фоновом режиме иexec
-s для вашего скрипта, но это может иметь неприятные последствия, если другая программа вызывает обертку и придерживается своего PID, думая, что это инструмент). - Разместите скрипт-обертку там, где был инструмент, настройте права доступа и т.д. Пусть он подражает реальному инструменту.
Пример:
#!/bin/sh
/path/to/your/script &
exec /new/path/to/the/real/tool ${1+"$@"}
Заметки:
${1+"$@"}
хак объясняется здесь. Вы, вероятно, будет в порядке с обычным"$@"
.- Ваш скрипт будет запускать тот, кто запускает оболочку. Это может или не может быть то, что вы хотите.
- В приведенном выше примере ваш сценарий является дочерним для оболочки, которая затем заменяется инструментом. Ваш сценарий может узнать PID своего родителя, подождать, пока
readlink /proc/<ppid>/exe
вернет реальное местоположение инструмента, затем взаимодействовать с инструментом с помощью сигналов или чего-то еще.