LINUX.ORG.RU

Проблема запуска PHP скрипта в redhat


0

1

Каким то странным образом работает запуск PHP скрипта в background'е в redhat. Появляется один процесс, сразу же выходит, появляется какой то второй но он ничё не пишет в логи. Может быть имеет значение - на том компе работаю через ssh. Дома в gentoo linux всё работает нормально. Всю жизнь работаю с gentoo, redhat недолюбливаю, наверно потому что не понимаю. Ну вот что это за глюки:

# php down.php
Processing 00000
Processing 00001
Processing 00002
Processing 00003
Processing 00004
Processing 00005
Processing 00006
Processing 00007
Processing 00008
^C
# php down.php >log 2>log &
[1] 15152
#

[1]+  Stopped                 php down.php > log 2> log
# ps auxw | grep php
root     15152  0.2  1.1 225388  6004 pts/0    T    12:21   0:00 php down.php
root     15199  0.0  0.1 103292   844 pts/0    S+   12:22   0:00 grep php
# kill -KILL 15152
# cat log
[1]+  Killed                  php down.php > log 2> log
# cat log
#
#
# uname -a
Linux scrappy2012 2.6.32-71.el6.x86_64 #1 SMP Fri May 20 03:51:51 BST 2011 x86_64 x86_64 x86_64 GNU/Linux
# gcc -v
Using built-in specs.
Target: x86_64-redhat-linux
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-languages=c,c++,objc,obj-c++,java,fortran,ada --enable-java-awt=gtk --disable-dssi --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-1.5.0.0/jre --enable-libgcj-multifile --enable-java-maintainer-mode --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --disable-libjava-multilib --with-ppl --with-cloog --with-tune=generic --with-arch_32=i686 --build=x86_64-redhat-linux
Thread model: posix
gcc version 4.4.6 20110731 (Red Hat 4.4.6-3) (GCC)
# php -v
PHP 5.3.3 (cli) (built: Feb  2 2012 23:47:49)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
#

Запускал с правами root что бы продемонстрировать что это не проблема прав доступа к чему либо. В не root аккаунте такая же точно история. Что за глюк? Как бороться?


Попробовал запустить скрипт и /bin/sh, получил новую информацию:

[code][1]+ Stopped(SIGTTOU) php down.php > log 2> log[/code]

Отсюда видим что процесс получает сигнал SIGTTOU, идём в wikipedia:

http://en.wikipedia.org/wiki/SIGTTOU

Но спрашивается какого дьявола он получает этот сигнал если вывод редиректится в файл 'log'?

psp13
() автор топика

> log 2> log

странная запись. не буду утверждать, что неверная, но я обычно делаю 2>&1 > log

aol ★★★★★
()
Ответ на: комментарий от Chumka

В нём из I/O есть только echo "..."; Если заменить на file_put_contents('log', ...) аналогичная ситуация. Мутный какой то этот redhat.

psp13
() автор топика
Ответ на: комментарий от psp13

Поглядел, php5.3 вызывает ioctl() на нулевой дескриптор (input), что порождает сигнал SIGTTOU. С одной стороны логично, с другой не очень.

Вообщем лечить так:
php down.php </dev/null >log 2>log &

Chumka ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.