Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php ssh echo$!显示的不是真实的pid_Php_Linux_Bash_Ssh - Fatal编程技术网

php ssh echo$!显示的不是真实的pid

php ssh echo$!显示的不是真实的pid,php,linux,bash,ssh,Php,Linux,Bash,Ssh,经过多次尝试后,我们未能获得pid编号 代码: 是显示另一个数字而不是实数pid 如果从bash中输入,工作正常,并显示pid。 我不明白哪里错了 从php中显示以下pid: #!/bin/bash echo "Current pid: $$" echo "Current process: $(ps -f $$)" ppid=$(ps -o ppid= -p $$) echo "Parent pid: $ppid" echo "Paren process: $(ps -f $ppid)" g

经过多次尝试后,我们未能获得pid编号

代码:

是显示另一个数字而不是实数pid

如果从bash中输入,工作正常,并显示pid。 我不明白哪里错了

从php中显示以下pid:

#!/bin/bash
echo "Current pid: $$"
echo "Current process: $(ps -f $$)"

ppid=$(ps -o ppid= -p $$)
echo "Parent pid: $ppid"
echo "Paren process: $(ps -f $ppid)"

gppid=$(ps -o ppid= -p $ppid)
echo "Grand Parent pid: $gppid"
echo "Grand Paren process: $(ps -f $gppid)"
( [0] => 9397 )

实际pid为7452

编辑: 桌面访问web服务器(服务器1)并在服务器2 sopcast播放机内启动服务器1。服务器2是一个服务器1,用于在web服务器json中显示

编辑2:


pid number是从web服务器(而不是运行通过ssh发送的命令的服务器2)输出的ppid的编号。

此时,不清楚您想要哪个pid。下面是我以前是怎么想出来的:

来自pids.sh

Current pid: 611
Current process: UID        PID  PPID  C STIME TTY      STAT   TIME CMD
root       611 31197  0 06:41 pts/1    S+     0:00 /bin/bash ./pids.sh
Parent pid: 31197
Paren process: UID        PID  PPID  C STIME TTY      STAT   TIME CMD
root     31197 31195  0 04:55 pts/1    Ss     0:00 -bash
Grand Parent pid: 31195
Grand Paren process: UID        PID  PPID  C STIME TTY      STAT   TIME CMD
root     31195  1216  0 04:55 ?        Ss     0:00 sshd: root@pts/1
//pids.sh
另外,linux命令pstree也有帮助。

目前,还不清楚您想要哪个pid。下面是我以前是怎么想出来的:

来自pids.sh

Current pid: 611
Current process: UID        PID  PPID  C STIME TTY      STAT   TIME CMD
root       611 31197  0 06:41 pts/1    S+     0:00 /bin/bash ./pids.sh
Parent pid: 31197
Paren process: UID        PID  PPID  C STIME TTY      STAT   TIME CMD
root     31197 31195  0 04:55 pts/1    Ss     0:00 -bash
Grand Parent pid: 31195
Grand Paren process: UID        PID  PPID  C STIME TTY      STAT   TIME CMD
root     31195  1216  0 04:55 ?        Ss     0:00 sshd: root@pts/1
//pids.sh
另外,linux命令pstree也有帮助。

您是否正确地转义$以便PHP不认为它是一个变量<代码>回声\$在“真实”进程id和“非真实”进程id之间有什么区别?这里“真实”的真正含义是什么?请记住,ssh连接肯定会创建另一个shell环境,从而创建另一个进程。与php的
exec
命令相同。Brandon add this\is not change id pid notwork@arkascha如果不放这个“>/dev/null”是一个无限文本抱歉,但我不明白你最后的评论是想说什么…你是否正确地转义$以便PHP不认为它是一个变量<代码>回声\$在“真实”进程id和“非真实”进程id之间有什么区别?这里“真实”的真正含义是什么?请记住,ssh连接肯定会创建另一个shell环境,从而创建另一个进程。与php的
exec
命令相同。Brandon add this\is not change id pid notwork@arkascha如果不把这个“>/dev/null”显示为一个无限文本对不起,但我不明白你最后的评论是想说什么…没有帮助。应用程序1访问连接远程服务器2的web服务器(服务器1)并启动sopcast player。但是在服务器1的php中,服务器2的pid没有帮助。应用程序1访问连接远程服务器2的web服务器(服务器1)并启动sopcast player。但在php中,服务器1显示的是服务器2的pid
#!/bin/bash
echo "Current pid: $$"
echo "Current process: $(ps -f $$)"

ppid=$(ps -o ppid= -p $$)
echo "Parent pid: $ppid"
echo "Paren process: $(ps -f $ppid)"

gppid=$(ps -o ppid= -p $ppid)
echo "Grand Parent pid: $gppid"
echo "Grand Paren process: $(ps -f $gppid)"
Current pid: 611
Current process: UID        PID  PPID  C STIME TTY      STAT   TIME CMD
root       611 31197  0 06:41 pts/1    S+     0:00 /bin/bash ./pids.sh
Parent pid: 31197
Paren process: UID        PID  PPID  C STIME TTY      STAT   TIME CMD
root     31197 31195  0 04:55 pts/1    Ss     0:00 -bash
Grand Parent pid: 31195
Grand Paren process: UID        PID  PPID  C STIME TTY      STAT   TIME CMD
root     31195  1216  0 04:55 ?        Ss     0:00 sshd: root@pts/1