У меня есть сценарий php-cli, который работает (отдельно) в фоновом режиме.
Есть ли способ присоединиться к его Stdout/Stderr, чтобы увидеть выходные данные приложения?
Вы, вероятно, можете сделать это с помощью gdb
. Я написал о процессе в ответе на неопределенно связанный вопрос.
Мне нравится использовать strace, но он менее пугающий, чем GDB.
strace -s 100000 -e write=1 -e trace=write -p $PID 2>&1 | \
sed 's/^write(1, //;t;d'
dupx - это законченное решение, которое реализует то, к чему обращается @quack:
Dupx - это простая утилита для переназначения файлов уже запущенной программы. Такие оболочки, как Bash, позволяют легко перенаправлять ввод / вывод / ошибку во время запуска программы с помощью>, / tmp / stdout перенаправляет вывод эха в / tmp / stdout. Стандартные оболочки, однако, не предоставляют возможности переотображения (перенаправления) вывода (или ввода, или ошибки) для уже запущенного процесса. Dupx пытается решить эту проблему, используя системный вызов dup (2) изнутри gdb (1). В настоящее время Dupx реализован в виде простой оболочки для сценария GDB.