php - Create Linux Screen session and get its PID -


i'm trying create php wrapper class around linux screen utility. need able start screen session name , pid of screen created.

i cannot assume session name unique can't parse session -ls output find pid.

based on examples , suggestions around internet, have tried following approach using php's exec() function:

screen -d -m -s 'screen_name' 2>&1 & 

the -d parameter tells screen not fork process, has same pid background process.

so, can parse pid output of & background shell operator in format:

[<number>] <pid> 

this command works linux shell (terminates immediately), when run php freezes , browser never loads page.

i have tried executing both php's exec() , shell_exec() , it's same result.

i have tried lots of different combinations last part of command such ones described here.

edit:

if use command:

screen -d -m -s 'screen_name' 1> /dev/null 2> /dev/null & 2>&1 

then php exec() works. starts screen session don't output & background operator. i'm assuming it's because i'm redirecting stdout , stderr /dev/null far know should doing screen command, not & operator.

almost solution:

screen -d -m -s 'screen_name' 1> /dev/null 2> /dev/null & echo $! 

i realized text showing in terminal & background operator wasn't coming command stdout or stderr. it's shell displaying it. added echo $! after & operator print pid of process created last command.

this works in terminal, prints correct pid. when it's executed in php, actual screen pid value 4 more 1 returned echo. it's echo being executed before & operator. there way make wait?

solution:

i wrapping command in sudo, , background operator acting on sudo command instead of screen command. make sure escape command arguments! :)

almost solution:

screen -d -m -s 'screen_name' 1> /dev/null 2> /dev/null & echo $! 

i realized text showing in terminal & background operator wasn't coming command stdout or stderr. it's shell displaying it. added echo $! after & operator print pid of process created last command.

this works in terminal, prints correct pid. when it's executed in php, actual screen pid value 4 more 1 returned echo. it's echo being executed before & operator. there way make wait?

solution:

i wrapping command in sudo, , background operator acting on sudo command instead of screen command. make sure escape command arguments! :)

– bradley odell


Comments

Popular posts from this blog

javascript - Slick Slider width recalculation -

jsf - PrimeFaces Datatable - What is f:facet actually doing? -

angular2 services - Angular 2 RC 4 Http post not firing -