我想用PHP而不是终端启动Hadoop守护进程。
当我启动-dfs.sh时,效果很好。
我使用的PHP代码是
<?php
echo shell_exec('/usr/local/hadoop3/sbin/stop-dfs.sh');
?>以上代码的输出如下
在本地主机上启动namenodes,启动datanodes。启动二级namenodes chbpc-VirtualBox。
但是,当我在浏览器中输入url http://localhost:9870/dfshealth.html#tab-overview (检查我的Hadoop的状态)时,它实际上没有启动,尽管有上面的输出。
发布于 2020-02-19 07:36:31
答案
<?php
echo shell_exec('/usr/local/hadoop3/sbin/stop-dfs.sh > /dev/null &');
?>描述
当您使用shell_exec运行守护进程时,您应该从这个进程中分离出来以完成您的shell_exec命令,但是您应该保持守护进程处于进度状态。
& -提供这样的操作。
另外,您可能正在使用自定义日志文件/dev/null,而停止-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-logPS
您使用stop-dfs.sh脚本名启动您的hadoop,也可能您将脚本名与start.sh混淆了。
https://stackoverflow.com/questions/60295091
复制相似问题