Страница 1 из 1

Хотелось бы понять что не так в скрипте sh

Добавлено: 20 июл 2019, 22:53
madesta
Предысторией вопроса является желание "мягкого" старта autokey-gtk, то есть с задержкой. Желание задержки обусловлено тем, что при простом "Automatically start Autoley at login" в настройках программы временами появляется сообщение, что autokey-gtk запущен, pid процесса имеется, но программа не отвечает. Соответственно, "горячие" клавиши на различные операции не работают.

Для уточнения системы: Linux Mint 18.3 xfce 64 bit

Первоначальное решение с записью в автостарте (Сеансы и запуск - Автозапуск) /home/minter/scripts/autokey.sh

Код: Выделить всё

#!/bin/bash
sleep 65
autokey-gtk
sleep 10
exit
привело лишь к частичному успеху. Всё отрабатывается, но команда exit не проходит. Процесс autokey.sh остаётся активным.
autokey-sh-exist.png
Пришлось сделать второй скрипт, также запускаемый с задержкой: sh -c "sleep 75 && /home/minter/scripts/autokey-stop.sh"

Код: Выделить всё

#!/bin/bash
OUTPUT="$(pgrep autokey.sh)"
kill -15 ${OUTPUT}
exit
и в autokey.sh убрать команды sleep 10 и exit. Только тогда после отработки всех команд "лишние" процессы исчезают и остаётся только процесс autokey-gtk, что и является решением этой частной задачи.

Не могу ответить на 2 вопроса.

1. Почему не проходит команда exit в первоначальной версии autokey.sh

2. Почему pidof autokey.sh не возвращает номера pid и чтобы его найти необходима команда pgrep autokey.sh

Может кто из знающих подскажет?

Хотелось бы понять что не так в скрипте sh

Добавлено: 20 июл 2019, 23:24
slant
madesta писал(а):
20 июл 2019, 22:53
1. Почему не проходит команда exit в первоначальной версии autokey.sh
Потому что скрипт запуская autokey-gtk, ждет его завершения перед исполнением следующей строчки. Чтобы такого не было, попробуйте строчку поменять так: autokey-gtk &
madesta писал(а):
20 июл 2019, 22:53
2. Почему pidof autokey.sh не возвращает номера pid и чтобы его найти необходима команда pgrep autokey.sh
Потому что это скрипт а не программа. pidof вернет pid'ы только полноценных программ которые выполняются в самой системе, а скрипты таковыми не являются. Их исполняет командный интерпретатор (bash или sh скорее всего) - вот для них то pid'ы и будут возвращены, если запросить.

P.S. Есть еще такая команда: killall - ей можно скормить просто имя (а не pid) программы которую нужно прибить (или сигналом дернуть).

Хотелось бы понять что не так в скрипте sh

Добавлено: 20 июл 2019, 23:28
Dja
По поводу второго вопроса. autokey.sh - всего лишь имя скрипта, а не команда. А команда скорее всего выглядит /bin/bash или что-то вроде того. Откройте htop и найдите по pgrep pidы и гляньте как выглядят команды.
По первому вопросу.
taoist писал(а):Чтоб понять про exit надо понять про autokey-gtk

Хотелось бы понять что не так в скрипте sh

Добавлено: 20 июл 2019, 23:37
madesta
Всем откликнувшимся спасибо. Slant полностью раскрыл суть обоих вопросов. Его предложение о добавлении символа & и приведении команды autokey-gtk к виду autokey-gtk & привело к дальнейшей отработке команды sleep 10 && exit и закрытию процесса autokey.sh Тему, на усмотрение модератора, можно закрывать.

Хотелось бы понять что не так в скрипте sh

Добавлено: 21 июл 2019, 09:33
rogoznik
:close: