Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

Почему скрипт зависает, если запускать в фоновом режиме?

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Unix
Предыдущая тема :: Следующая тема  
Автор Сообщение
Ирина_М
Гость





СообщениеДобавлено: Вт Окт 19 2004 20:33    Заголовок сообщения: Почему скрипт зависает, если запускать в фоновом режиме? Ответить с цитатой

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

Может быть кто-то знает причины, по которым это может быть.. сожалению, сам скрипт сейчас не могу привести - он на работе..
Вернуться к началу
ryabinkin



Зарегистрирован: 01.12.2003
Сообщения: 152
Откуда: Moscow

СообщениеДобавлено: Ср Окт 20 2004 09:17    Заголовок сообщения: Ответить с цитатой

Обычно такое происходит, если запустить в фоновый режим процесс, пишущий что-то на консоль.
Вы не указали ОС, но на Линуксе это происходит так
Всякий процесс, запущенный в фоне имеет ассоциацию файлового дескриптора 1 с устройством /dev/null. (а процесс переднего плана имеет ассоциацию этого дескриптора с текущей консолью, т.е. все, что он пишет в файловый дескриптор 1 отображается на консоли, тогда как вывод от фонового процесса прото сбрасывается). Т.е. все должно работать корректно, за исключением того, что Вы не увидите, что выводит процесс
Далее начинаются мои предположения.
Возможно, процесс что-то пытается вывести на стандартную консоль ошибок (файловый дескриптор 2). Тогда он получит сигнал (забыл какой Smile ) и блокируется.
Вобщем, требуется больше информации.
_________________
Из двух спорящих виноват тот, кто умнее.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Ирина_М
Гость





СообщениеДобавлено: Ср Окт 20 2004 11:17    Заголовок сообщения: Ответить с цитатой

У меня стоит Фряха...

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

#!/bin/csh
test -e test.pid
set a = $?
echo $a
if ($a != 0) then
echo "file ne exists"
( tail -f drwebd.log > log1 ) &
echo $! > test.pid #/var/tmp/test.pid
exit
endif

более того. виснет даже это:
#!/bin/csh
test -e test.pid
echo "file ne exists"
( tail -f drwebd.log > log1 ) &
echo $! > test.pid #/var/tmp/test.pid
exit
Вернуться к началу
ryabinkin



Зарегистрирован: 01.12.2003
Сообщения: 152
Откуда: Moscow

СообщениеДобавлено: Ср Окт 20 2004 11:27    Заголовок сообщения: Ответить с цитатой

Попробуйте так
./ваш_скрипт > report 2>&1 &
так заработает?
_________________
Из двух спорящих виноват тот, кто умнее.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
butcher



Зарегистрирован: 18.04.2003
Сообщения: 467
Откуда: Киров

СообщениеДобавлено: Ср Окт 20 2004 11:29    Заголовок сообщения: Ответить с цитатой

Попробуйте перенаправить потоки вывода и ошибок в /dev/null или ещё куда..
_________________
Нет ничего невозможного...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Ирина_М
Гость





СообщениеДобавлено: Ср Окт 20 2004 11:45    Заголовок сообщения: Ответить с цитатой

Работает так:
(./скрипт > report ) &

Если делать, как вы сказали, говорит mbigoud ... redirect.

о работае все равно не так. Он хоть и не виснет, но не убивает процессы, не удаляет файлы, которые должен.


"Попробуйте перенаправить потоки вывода и ошибок в /dev/null или ещё куда.."

Если б я знала, как это делать))) Я си шелл 3ий день изучаю((
Вернуться к началу
Ирина_М
Гость





СообщениеДобавлено: Ср Окт 20 2004 11:49    Заголовок сообщения: Ответить с цитатой

Плюс, если его запускать посто в фоновом режиме, то он не убивает процессы, которые должен убивать...
Вернуться к началу
Ирина_М
Гость





СообщениеДобавлено: Ср Окт 20 2004 11:52    Заголовок сообщения: Ответить с цитатой

Вот привожу полный скрипт.. те скрипты, которые вызываются в нем, написаны на перле и работаю нормально и в фоновом и в обычном режимах. rwebd.log - тот файл постоянно пишется и увеличивается.

#!/bin/csh
test -e test.pid
set a = $?
echo $a
if ($a != 0) then
echo "file ne exists"
( tail -f drwebd.log > log1 ) &
echo $! > test.pid #/var/tmp/test.pid
exit
endif

if ( $a == 0 ) then
echo "file exists"

./timescript
set u = `cat timeofch`
set t = `date +%s`
set p = `expr $t - $u`
echo "raznitsa vo vremeni = $p"

if ( $p > 10 ) then
rm test.pid
( tail -f drwebd.log > log1 ) &
echo $! > test.pid #/var/tmp/test.pid
exit
endif


set b = `cat test.pid`
ps -ax | grep $b > test1.pid
set t = `cat test1.pid`
if ( "$t" == "" ) then
echo "process ne exists"
rm test.pid
( tail -f drwebd.log > log1 ) &
echo $! > test.pid #/var/tmp/test.pid
exit
endif

echo "process exists,timeOk"
kill `cat test.pid` #/var/tmp/test.pid`
cat log1 > log2
( tail -f drwebd.log > log1 ) &
echo $! > test.pid #/var/tmp/test.pid
./virusstat #name of virusstat script
endif
Вернуться к началу
Ирина_М
Гость





СообщениеДобавлено: Ср Окт 20 2004 11:59    Заголовок сообщения: Ответить с цитатой

Слушайте..Наверное, я совсем тормоз...
Действительно, если запускать так:
( ./script > 22 ) &

То вроде всё нормально заработало... Надеюсь, админа это устроит...
Вернуться к началу
ryabinkin



Зарегистрирован: 01.12.2003
Сообщения: 152
Откуда: Moscow

СообщениеДобавлено: Ср Окт 20 2004 12:16    Заголовок сообщения: Ответить с цитатой

Хорошо, что работает.
Я, если честно, не люблю csh
уж лучше стандартный sh
или даже bash
_________________
Из двух спорящих виноват тот, кто умнее.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Ирина_М
Гость





СообщениеДобавлено: Ср Окт 20 2004 12:41    Заголовок сообщения: Ответить с цитатой

Спасибо за помощь...
Только теперь мне надо сделать, чтобы после выполнения всего этого, на экран выдавался кусок файла..Опять же, если делаю просто катом, то всё виснет... Уже пытаюсь вспомнить, как запустить файл с помощью перла...
Вернуться к началу
Ирина_М
Гость





СообщениеДобавлено: Ср Окт 20 2004 13:04    Заголовок сообщения: Ответить с цитатой

Еще нужен хелп!!)))

Пишу опять же, что после скрипта мне надо всё вывести на монитор.. делаю так:
cat ... > &1

так этот урод создает мне файл с именем 1 и туда всё кидает(((
Вернуться к началу
butcher



Зарегистрирован: 18.04.2003
Сообщения: 467
Откуда: Киров

СообщениеДобавлено: Чт Окт 21 2004 07:50    Заголовок сообщения: Ответить с цитатой

а что, просто cat имя_файла уже отменили?
Вообще, какой смысл перенаправлять вывод в файл и уходить в фон, если после завершения необходимо выводить результ?
_________________
Нет ничего невозможного...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Ирина_М
Гость





СообщениеДобавлено: Чт Окт 21 2004 14:51    Заголовок сообщения: Ответить с цитатой

butcher , ответ в теме моей следующей..называется Еще нужен хелп))
Вернуться к началу
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Unix Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...