我想用PHP而不是终端启动Hadoop守护程序。
当我执行start-dfs.sh时,效果很好。
我正在使用的PHP代码是
<?php
echo shell_exec('/usr/local/hadoop3/sbin/stop-dfs.sh');
?>
以上代码的输出为
在[localhost]起始datanode上的起始namenode。开始 次要名称节点[chbpc-VirtualBox]。
但是当我在浏览器中键入URL http://localhost:9870/dfshealth.html#tab-overview
(以检查Hadoop的状态)时,尽管上面显示了输出,但实际上它并未启动。
答案 0 :(得分:0)
答案
<?php
echo shell_exec('/usr/local/hadoop3/sbin/stop-dfs.sh > /dev/null &');
?>
说明
使用shell_exec运行守护进程时,应从该进程中分离出来以完成shell_exec命令,但应保持守护进程处于进展状态。
&
-为此提供。
也可以使用自定义日志文件/ dev / null,并且stop-dfs.sh中的所有信息都将重定向到该文件。
我对此解决方案的测试
将此代码段复制到您的bash控制台:
cat <<EOT > daemon.sh
while true; do date; sleep 1; done
EOT
chmod +x daemon.sh
cat <<EOT > daemon-runner.php
<?php
echo shell_exec(__DIR__ . '/daemon.sh > daemon-log &');
EOT
touch daemon-log
php daemon-runner.php
tail -f daemon-log
PS
您使用stop-dfs.sh
脚本名称来启动hadoop,还是将脚本名称与start.sh
混合在一起?