Вопрос Автоматически запускать скрипт Bash при открытии графической программы


Я хочу начать сценарий оболочки автоматически, когда я начинаю, например, LibreOffice.

Проблема в том, что я не знаю, как это сделать. Где я могу построить триггер, чтобы запустить скрипт.

Есть ли папка / файл, в который я могу создать триггер?

Было бы здорово, если бы мне не пришлось создавать полную «новую» версию LibreOffice для запуска нескольких строк shell-скрипта.


2
2018-03-23 18:48


происхождения


Поверните свои требования: напишите сценарий bash, который делает то, что вам нужно тогда скрипт запускает LibreOffice. - glenn jackman
Я не хочу запускать программу, не графическую, вот в чем проблема. Другим способом было бы легко. - LittleByBlue
На это уже был дан ответ, но я согласен с @glennjackman. Принятый ответ постоянно проверяет, работает ли что-то. Я вижу несколько проблем с этим. Вместо этого сделайте, как предполагает Гленн, затем создайте .desktop чтобы вы могли запустить его из графического интерфейса. - Sparhawk


ответы:


Это, наверное, самый простой способ сделать то, что вы хотите.

#!/usr/bin/env bash

# Define the program to waitfor.
program_to_watch=soffice.bin

my_commands() {
echo "This is where your first command goes."
echo "This is where your second command goes."
}

clear
echo "waitfor program script"
echo "Author: Kris Beazley"
echo "Apache 2.0 License"
echo ""
echo "$(date): Waiting for $program_to_watch to start."

while true
 do
  sleep 1
  if [[ $(ps -A | grep $program_to_watch) && -z $var ]]
    then
    var=true
    echo "$(date): $program_to_watch started."
    echo "$(date): Asking \"my_commands\" to start, and going back to sleep."
    echo "$(date): $(my_commands)"
  fi
  if [[ ! $(ps -A | grep $program_to_watch) && -n $var ]]
    then
    unset var
    echo "$(date): $program_to_watch closed."
    echo "$(date): Going back to sleep."
  fi
 done

Просто скопируйте это в текстовый файл и установите в исполняемый файл, но убедитесь, что строка #! / usr / bin / env bash не имеет пустых строк перед ним.

Чтобы установить исполняемый тип:

chmod +x myscript.sh 

2
2018-03-23 21:19



Ничего себе, отлично работает! Извините, что я не могу вас проголосовать. - LittleByBlue
одна проблема с littele: ваш код работает ... но мой код нет! В '/ bin / env bash нет интерпретатора нет интерпретатора, - LittleByBlue
Вы можете использовать #! / Bin / bash или, если бы бинарная база bash была просто указана на нее. Я удивлен, что #! / Bin / env bash не работает. - Kris
@Kris Это должно быть /usr/bin/env, а не /bin/env, (Я отредактировал ответ.) - Sparhawk
@Sparhawk: '/ usr / bin / env' тоже не работает. Программа запускается, но ничего не делает, и я не могу убить ее с помощью 'ctrl c' - LittleByBlue