Eсть:
Linux + apache + php(без fork'а) + shell-скрипт родительский + shell-скрипт дочернийЗадача:
средствами\командами shell отвязать дочерний скрипт от родительского.Детали задачи:
1. User загружает в браузере php-страницу (web-страницу).
2. php запускает sh скрипт (родительский).
3. sh скрипт (родительский) порождает дочерний sh скрипт,
который выполняется ооооченннь дооолго (больше, чем разрешено в apache, и чем хватит терп User ждать результата).
4. User\apache закрывает\убивает php скрипт и, соотв-но, родительский sh скрипт.5. Дочерний скрипт выполняется, и есть признак его выполнения -- файл статуса, по которому User из браузера, обратившись к php мониторит процесс.
ВОПРОС:
Как СРЕДСТВАМИ/КОМАНДАМИ shell "отвязать" дочерний sh скрипт от родительского, чтобы родительский скрипт убить, а дочерний остался выполняться?
>ВОПРОС:
>Как СРЕДСТВАМИ/КОМАНДАМИ shell "отвязать" дочерний sh скрипт от родительского, чтобы родительский скрипт
>убить, а дочерний остался выполняться?Одна строка... man sh рекомендуется к прочтению
cat parent.sh
#!/bin/sh
nohup child.sh &
закрытие/редирект потоков добавьте сами
>
>>ВОПРОС:
>>Как СРЕДСТВАМИ/КОМАНДАМИ shell "отвязать" дочерний sh скрипт от родительского, чтобы родительский скрипт
>>убить, а дочерний остался выполняться?
>
>Одна строка... man sh рекомендуется к прочтению
>
>cat parent.sh
>#!/bin/sh
>nohup child.sh &
>
>
>закрытие/редирект потоков добавьте самиОгромное спасибо за рекомендации,
...только 4. User\apache закрывает\убивает php скрипт и, соотв-но, родительский sh скрипт И ДОЧЕРНИЙ sh ТОЖЕ убивает.
т. к. процессы не отделены др от др. Осталась взаимосвязь процессов -- лидером группы остался родительский процесс.Может быть Вам приходилось реализовывать fork (отделение дочернего процесса от родительского, а не только запуск процесса ф фоне) в sh | bash ?
ВОПРОС ОСТАЕТСЯ:Как КОРРЕКТНО ОТДЕЛИТЬ дочерний процесс от родительского в sh ?
Как в процессе сменить PPID ? Что нужно сделать в окружении родителького процесса?
Интересует реализация fork и действия над PID и PPID ОБОИХ ПРОЦЕССОВ в sh.
>...только 4. User\apache закрывает\убивает php скрипт и, соотв-но, родительский sh скрипт И ДОЧЕРНИЙ sh ТОЖЕ убивает.[serge@lx-sles tmp]$ cat ./parent.sh
#!/bin/shnohup /tmp/child.sh > /dev/null 2>&1 &
sleep 60;
[serge@lx-sles tmp]$ cat ./child.sh
#!/bin/bashwhile [ 1 ]
do
date;
sleep 5
done-------------------------
[serge@lx-sles tmp]$ ./parent.sh
Ctrl+c
[serge@lx-sles tmp]$ ps axf
1570 pts/5 S 0:00 /bin/bash /tmp/child.sh
1576 pts/5 S 0:00 \_ sleep 5