Добрый день!
Вопрос такой: есть скрипт, выполняемый в bash, который производит некоторые действия с БД. В процессе его работы БД может заблокировать кто-то другой и скрипт повисает, ожидая освобождения ресурса. Чтобы он висел не просто так, перед началом выполения каких-либо операций я из главного скрипта запускаю еще один работающий в фоне (с "&"). Этот фоновый скрипт периодически проверяет БД на блокировки, и если они возникают печатает соответствующее предупреждение.
А вопрос такой, допустим пользователь не хочет ждать завершения, для этого из фонового процесса я печатаю ему что-то типа "для выхода введите exit, иначе...", но вот считать с клавиатуры ничего не могу!
Перечитал много инфы по теме, выяснил что фоновые процессы не могут читать из стандартного ввода. Но перевести его на первый план тоже не могу, т.к. второй скрипт был запущен не с терминала, а из первого то и команда jobs выводит только первый скрипт...
В общем ищу способы как выйти из данной ситуации, буду благодарен за любые предложения.
Чтение ввода из фонового процесса
Модераторы: /dev/random, Модераторы разделов
-
SLEDopit
- Модератор
- Сообщения: 4824
- Статус: фанат консоли (=
- ОС: GNU/Debian, RHEL
Re: Чтение ввода из фонового процесса
посмотрите в сторону 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.
The more you believe you don't do mistakes, the more bugs are in your code.
-
korisk
- Сообщения: 205
- ОС: Xubuntu
Re: Чтение ввода из фонового процесса
Meztik писал(а): ↑01.02.2011 12:50Добрый день!
Вопрос такой: есть скрипт, выполняемый в bash, который производит некоторые действия с БД. В процессе его работы БД может заблокировать кто-то другой и скрипт повисает, ожидая освобождения ресурса. Чтобы он висел не просто так, перед началом выполения каких-либо операций я из главного скрипта запускаю еще один работающий в фоне (с "&"). Этот фоновый скрипт периодически проверяет БД на блокировки, и если они возникают печатает соответствующее предупреждение.
А вопрос такой, допустим пользователь не хочет ждать завершения, для этого из фонового процесса я печатаю ему что-то типа "для выхода введите exit, иначе...", но вот считать с клавиатуры ничего не могу!
Перечитал много инфы по теме, выяснил что фоновые процессы не могут читать из стандартного ввода. Но перевести его на первый план тоже не могу, т.к. второй скрипт был запущен не с терминала, а из первого то и команда jobs выводит только первый скрипт...
В общем ищу способы как выйти из данной ситуации, буду благодарен за любые предложения.
попробовать именованный канал или сокет?
Registerd Linux user #486684 at http://counter.li.org/