Чтение ввода из фонового процесса

На самом деле это единственный раздел про unix на этом форуме

Модераторы: /dev/random, Модераторы разделов

Meztik
Сообщения: 1
ОС: SLES 9

Чтение ввода из фонового процесса

Сообщение Meztik »

Добрый день!

Вопрос такой: есть скрипт, выполняемый в bash, который производит некоторые действия с БД. В процессе его работы БД может заблокировать кто-то другой и скрипт повисает, ожидая освобождения ресурса. Чтобы он висел не просто так, перед началом выполения каких-либо операций я из главного скрипта запускаю еще один работающий в фоне (с "&"). Этот фоновый скрипт периодически проверяет БД на блокировки, и если они возникают печатает соответствующее предупреждение.

А вопрос такой, допустим пользователь не хочет ждать завершения, для этого из фонового процесса я печатаю ему что-то типа "для выхода введите exit, иначе...", но вот считать с клавиатуры ничего не могу!

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

В общем ищу способы как выйти из данной ситуации, буду благодарен за любые предложения.
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4824
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: Чтение ввода из фонового процесса

Сообщение SLEDopit »

посмотрите в сторону screen или tmux. ваш скрипт можно запускать в них и в любой момент обратиться к нему.
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
Аватара пользователя
korisk
Сообщения: 205
ОС: Xubuntu

Re: Чтение ввода из фонового процесса

Сообщение korisk »

Meztik писал(а):
01.02.2011 12:50
Добрый день!

Вопрос такой: есть скрипт, выполняемый в bash, который производит некоторые действия с БД. В процессе его работы БД может заблокировать кто-то другой и скрипт повисает, ожидая освобождения ресурса. Чтобы он висел не просто так, перед началом выполения каких-либо операций я из главного скрипта запускаю еще один работающий в фоне (с "&"). Этот фоновый скрипт периодически проверяет БД на блокировки, и если они возникают печатает соответствующее предупреждение.

А вопрос такой, допустим пользователь не хочет ждать завершения, для этого из фонового процесса я печатаю ему что-то типа "для выхода введите exit, иначе...", но вот считать с клавиатуры ничего не могу!

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

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


попробовать именованный канал или сокет?
Registerd Linux user #486684 at http://counter.li.org/
Спасибо сказали: