Модераторы: powerfox, ZeeLax
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> & останавливает скрипт вместо отправки в фон 
:(
    Опции темы
02077461
Дата 15.7.2010, 16:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 183
Регистрация: 13.7.2005

Репутация: нет
Всего: 0



Собственно все просто: есть простой скрипт 

Код

php -r 'sleep(2); echo "Done...\n\n";' &


Т.е. он должен запуститься, провисеть 2 секунды, написать "Done..." и отвалиться. 
Но вместо этого у меня на машине (Ubuntu 9.что-то там) от останавливается как будто я запустил просто команду, а потом нажал Ctrl+Z. При этом jobs выдает такой список (скрипты другие запускал):
Код

nord@nord-laptop:~/projects/transactions$ jobs 
[1]   Stopped                 ./symfony task:b 
[2]   Stopped                 ./symfony task:b 
[3]   Stopped                 ./symfony task:b 
[4]   Stopped                 php symfony task:b
[5]   Stopped                 ./run.sh          
[6]   Stopped                 ./run.sh          
[7]   Stopped                 ./run.sh          
[8]-  Stopped                 ./symfony         
[9]+  Stopped                 ./run.sh > /tmp/symfony.log


Собственно вопрос: почему амперсанд работает так странно?
PM   Вверх
nickless
Дата 15.7.2010, 22:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гентозавр
****


Профиль
Группа: Участник Клуба
Сообщений: 2976
Регистрация: 29.8.2005
Где: Germany

Репутация: 41
Всего: 181



Какой $SHELL?

Добавлено через 40 секунд
ЗЫ У меня не на убунте в bash и zsh всё работает как надо.


--------------------
user posted image

Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies
- Linus Torvalds
PM MAIL   Вверх
02077461
Дата 15.7.2010, 22:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 183
Регистрация: 13.7.2005

Репутация: нет
Всего: 0



bash

Я уже не знаю что думать. скрипт
sleep 3 && echo "Done..." &
срабатывает как надо. А вот php почему-то в фоне стопится. 
PM   Вверх
nickless
Дата 15.7.2010, 22:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гентозавр
****


Профиль
Группа: Участник Клуба
Сообщений: 2976
Регистрация: 29.8.2005
Где: Germany

Репутация: 41
Всего: 181



Странно, попробуй вот что, другой язык (не шелл), например perl:
Код

perl -e 'sleep 3; printf "done\n"' &

и другой терминал, лучше что-то попроще, например xterm или прямо в консоли.

Добавлено через 2 минуты и 10 секунд
Да, может это еще зависит от конфигурации bash, т.е. файлы /etc/bash* и ~/.bash*


--------------------
user posted image

Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies
- Linus Torvalds
PM MAIL   Вверх
02077461
Дата 30.8.2010, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 183
Регистрация: 13.7.2005

Репутация: нет
Всего: 0



Извините, что долго не отвечал. 
вот что очень интересно:
Код

nord@nord-laptop:~$ perl -e 'sleep 3; printf "done\n"' &
[1] 30716
nord@nord-laptop:~$
nord@nord-laptop:~$ done

[1]+  Готово            perl -e 'sleep 3; printf "done\n"'
nord@nord-laptop:~$ php -r 'sleep(3); echo "done\n"' &
[1] 30717
nord@nord-laptop:~$

[1]+  Остановлено  php -r 'sleep(3); echo "done\n"'
nord@nord-laptop:~$
nord@nord-laptop:~$
nord@nord-laptop:~$ jobs
[1]+  Остановлено  php -r 'sleep(3); echo "done\n"'
nord@nord-laptop:~$
nord@nord-laptop:~$


Т.е. perl скрипт выполнился, а php сразу "[1]+  Остановлено "

Добавлено через 1 минуту и 47 секунд
Цитата(nickless @  15.7.2010,  22:33 Найти цитируемый пост)
Добавлено через 2 минуты и 10 секунд
Да, может это еще зависит от конфигурации bash, т.е. файлы /etc/bash* и ~/.bash* 

.bashrc прикрепил в аттач.

Присоединённый файл ( Кол-во скачиваний: 2 )
Присоединённый файл  .bashrc 3,14 Kb
PM   Вверх
IgorIV
Дата 30.8.2010, 19:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 642
Регистрация: 7.9.2009

Репутация: нет
Всего: 8



02077461, потому что скрипт надо правильно писать, где последняя точка с запятой?
PM MAIL   Вверх
02077461
Дата 31.8.2010, 09:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 183
Регистрация: 13.7.2005

Репутация: нет
Всего: 0



IgorIV, поставил, ничего не поменялось.

Добавлено через 1 минуту и 43 секунды
Кстати, та же строка на других дистрах работает отлично, а на убунте (предпоследней и последней) такие вот чудеса. На Ubuntu forums так же ответить ничего не смогли.
PM   Вверх
bilbobagginz
Дата 31.8.2010, 10:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Naughtius Maximus
****


Профиль
Группа: Экс. модератор
Сообщений: 8813
Регистрация: 2.3.2004
Где: Israel

Репутация: 113
Всего: 317



02077461
сделай копи-пэйст того, что ты запускаешь СЮДА.
не вручную, а мышкой, или на худой конец ссылку на картинкой со сркиншотом.

Это сообщение отредактировал(а) bilbobagginz - 31.8.2010, 10:46


--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
02077461
Дата 31.8.2010, 13:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 183
Регистрация: 13.7.2005

Репутация: нет
Всего: 0



Цитата(bilbobagginz @ 31.8.2010,  10:45)
02077461
сделай копи-пэйст того, что ты запускаешь СЮДА.
не вручную, а мышкой, или на худой конец ссылку на картинкой со сркиншотом.


Посмотри предпоследнее мое сообщение. Это копипаст из консоли.
PM   Вверх
IgorIV
Дата 31.8.2010, 19:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 642
Регистрация: 7.9.2009

Репутация: нет
Всего: 8



02077461, включай в php.ini журналирование и смотри его.
PM MAIL   Вверх
bilbobagginz
Дата 31.8.2010, 20:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Naughtius Maximus
****


Профиль
Группа: Экс. модератор
Сообщений: 8813
Регистрация: 2.3.2004
Где: Israel

Репутация: 113
Всего: 317



я немного посмотрел. дело вот какое - есть сигнал SIGTTOU.
он передается процессу, когда его посылают в bg, т.е. запускают в &.
если сигнал не обрабатывается, обработчик по умолчанию  дублирует посылку сигнала SIGSTOP.

насколько я понимаю по какой-то причине (возможно REPL, т.е. libedit ) в убунту не обрабатывает сам SIGTTOU => получает по морде SIGSTOPом.

судя по перловой доке перл умеет сам обрабатывать этот сигнал.




--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
02077461
Дата 1.9.2010, 09:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 183
Регистрация: 13.7.2005

Репутация: нет
Всего: 0



bilbobagginz, С перлом то все окей, с PHP проблема. Но спасибо за наводку. 

Я тут проверил: и на PHP и на PERL kill -SIGTTOU действуют одинаково -- останавливают процесс в фоне. 
При этом перл, как я раньше говорил, отрабатывает в фоне нормально когда его запускаю с амперсандом. 

Это сообщение отредактировал(а) 02077461 - 1.9.2010, 09:30
PM   Вверх
bilbobagginz
Дата 1.9.2010, 10:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Naughtius Maximus
****


Профиль
Группа: Экс. модератор
Сообщений: 8813
Регистрация: 2.3.2004
Где: Israel

Репутация: 113
Всего: 317



02077461
насколько я понимаю, Perl обрабатывает SIGTTOU по-особенному именно в случаях, когда его запускают из оболочки, с &.
я не смотрел код, но предполагаю, что при запуске интерпретатор смотрит на коммандную строку отца своего (по PPID-у), 
распарсивает ее, и если видит амперсанд, устанавливает свой обработчик сигнала.

я не к тому, что php так делает, а как-раз наоборот - что php так не должен делать.

и еще есть разница.

в Debian Stable (5.0.5) версия bash - 3.2
в Ubuntu 10.04 версия bash 4.2

надо и это проанализировать.





--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
02077461
Дата 1.9.2010, 11:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 183
Регистрация: 13.7.2005

Репутация: нет
Всего: 0



bilbobagginz, большое спасибо! Посмотрю еще на этот момент!
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Linux/UNIX: Oбщие вопросы"
nickless
Imple
nerezus

В тему здесь вопросы общие - не привязанные к определенному ПО или дистрибутиву BSD/Linux/UNIX.
Например вопросы о выборе ОС для определенных задач (но если Вы просто хотите узнать "Какой дистрибутив лучше", то для этого есть Клуб юнуксоидов).
Общие вопросы по shell-программированию тоже лучше задавать здесь.


  • Вопросы мобильной разработки тут
  • Вы должны соблюдать правила форума.
  • Помните: какой вопрос, такой и ответ. Прежде чем задать вопрос прочитайте вот эту статью на форуме CIT.
  • Оскорблять запрещается.
  • Религиозные войны в Религиозных войнах.
  • Общение "просто так" в Клубе юнуксоидов. В отличие от многих других разделов, здесь разрешается сдержанно оффтопить и юморить в тему.

За интересные статьи, находки, решения, программы и просто реальную помощь будут ставиться + в репу).


В данный момент этот раздел модерируют nerezus, nickless, powerfox, pythonwin, Imple и ZeeLax. Если вы хотите помочь нам, пишите в ПМ и мы обсудим.


Спасибо. И use UNIX or die; С уважением, nerezus, nickless, powerfox, pythonwin, Imple, ZeeLax.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | *NIX системы: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0886 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.