не могу второй раз отправить в фон скрипт

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модератор: SLEDopit

Ответить
v4567
Сообщения: 162
ОС: Devuan

не могу второй раз отправить в фон скрипт

Сообщение v4567 »

Есть скрипт, в нём устанавливаю свои обработчики сигналов, в частности сигнал Ctrl+z отправки в фон.

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

trap 'fynk ; kill -TSTP $$' SIGTSTP

В функции fynk возвращаю сигналы обратно в систему, командой:

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

trap - SIGTSTP

Как видно после выполнения функции fynk и в результате возврата сигнала в систему, выполняется команда:

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

kill -TSTP $$

которая опять посылает сигнал отправки в фон нашему скрипту (без этой команды после отправки в фон командная строка не возвращается).

В фон скрипт отправляется отлицно и после командная строка работает нормально.
Возвращается из фона скрипт то же нормально. Естественно после возврата из фона я опять устанавливаю свои обработчики сигналов.
Второй раз скрипт уже не отправляется в фон.
Почему не могу понять, ведь обработчики сигналов я опять установил свои.

Добавлено через 28 минут
Например вот такой скрипт во второй раз в фон не отправляется:

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

#!/bin/bash


fynk1()
{

 trap - SIGTSTP
 return 0

}

IzFona()
{

 trap 'fynk1 ; kill -TSTP $$' SIGTSTP
 trap 'IzFona' SIGCONT
 echo "2222222222222"
 return 0

}

IzFona

while true
 do
   sleep 0
done

Почему то он не убивается и по ctrl+c.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: не могу второй раз отправить в фон скрипт

Сообщение Bizdelnick »

Попробуйте заменить sleep 0 на :.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
v4567
Сообщения: 162
ОС: Devuan

Re: не могу второй раз отправить в фон скрипт

Сообщение v4567 »

Попробуйте заменить sleep 0 на :.


Да помогло. Вы бы не могли объяснить почему при sleep 0 не работает, а при : работает.
Если я буду знать причину, то смогу поправить в своём скрипте. У меня в скрипте конечно стоит не sleep 0 там команды и т.д.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: не могу второй раз отправить в фон скрипт

Сообщение Bizdelnick »

Потому что Вы останавливаете sleep, но не скрипт, в котором сигнал перехватывается. В результате скрипт зависает.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
v4567
Сообщения: 162
ОС: Devuan

Re: не могу второй раз отправить в фон скрипт

Сообщение v4567 »

Потому что Вы останавливаете sleep, но не скрипт, в котором сигнал перехватывается. В результате скрипт зависает.


Первый раз срабатывает, причём не было такого что бы первый раз не сработал и не было такого что бы когда нибудь во второй раз сработал.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: не могу второй раз отправить в фон скрипт

Сообщение Bizdelnick »

А у меня для Вашего примера ни разу не срабатывает. Возможно зависит от версии bash (я и dash пробовал с тем же результатом).
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Ответить