2013-07-15 1 views
1

Есть ли способ, чтобы выполнить Баш скрипт, когда я нажимаю программу как NetBeans или DropBox на Ubuntu и выполнить Баш скрипт при выходе егоКак запустить Баш скрипт, когда программа открыта в Liunx

Моя идея создать Баш сценарий на cronjob @reboot проверить каждую секунду, если программа существует в текущих процессах

#!/bin/bash 
NameOfprogram="NetBeans" 
while [[ true ]]; do 
    countOfprocess=$(ps -ef |grep $NameOfprogram | wc -l) 
    if [[ $countOfprocess -gt 1 ]]; then 
     #execute bash 
    fi 
    sleep 1 
done 

Но я думаю, что эта идея не самая лучшая, есть ли лучший способ добиться этого?

+4

Это звучит как попытка плохого решения для легкой проблемы ... –

+1

'while [[true]]' это проверка, чтобы проверить, является ли строка "true" пустой. Он работает для бесконечного цикла, но показывает некоторую путаницу в том, как '[[' работает. 'while [[false]]' будет иметь одинаковые результаты. 'while true' выполняет встроенный' true'. – jordanm

+0

@ Игнасио Васкес-Абрамс любое лучшее решение ??? – Steve

ответ

2

Лучше всего обернуть исполняемый файл в скрипт. Это означает, что вы поместите скрипт с именем программы на свой путь (возможно, $HOME/bin), и Linux будет использовать это вместо реального исполняемого файла.

Теперь вы можете выполнить реальную программу с помощью:

/usr/bin/NetBeans "[email protected]" 

Так выполнить реальный исполняемый файл, вы просто поставить абсолютный путь перед именем. Нечетные "[email protected]" тоже передают любые аргументы, которые кто-то мог дать сценарию.

Поместите петлю вокруг этого:

while [[ true ]]; do 
    /usr/bin/NetBeans "[email protected]" 
done 

Но есть проблема: Вы не можете выйти из этой программы больше. Как только вы попытаетесь, он перезапустится. Так что, если вы просто хотите, рестарт, когда он выходит из строя:

while [[ true ]]; do 
    /usr/bin/NetBeans "[email protected]" && exit 0 
done 

Пока программа выходит из-за ошибки, то он будет перезапущен. Если вы уйдете, сценарий остановится.

Смежные вопросы