我很头疼,正在使我的Web服务器上的某些按钮在需要时停止/启动/重新启动我的ElasticSearch服务。 我在互联网上查找了很多东西,却没有发现类似我的问题的东西。
这是我要执行的shell:
if(isset($_POST["name"])){
$name = $_POST["name"];
//the script to check the service status of ElasticSearch (which works fine btw)
$status = shell_exec("systemctl status elasticsearch");
//I use a simple regex to get from the above script's output if the status of the service is "running" or not
preg_match("/\bactive\s+\K\S+/", $status, $result);
switch ($name){
case "start":
$shell = shell_exec("sh ../../../../scripts/startElasticsearch.sh");
echo $shell;
if($result[0] == "(running)"){
echo "Node started successfully.";
}
break;
case "restart":
$shell = shell_exec("sh ../../../../scripts/restartElasticsearch.sh");
echo $shell;
if($result[0] == "(running)"){
echo "Node restarted successfully.";
}
break;
case "stop":
$shell = shell_exec("sh ../../../../scripts/stopElasticsearch.sh");
echo $shell;
if($result[0] !== "(running)"){
echo "Node stopped successfully.";
}
break;
}
}
这是我编写的3个.sh文件的shell脚本:
#!/bin/bash
systemctl start elasticsearch
#!/bin/bash
systemctl restart elasticsearch
#!/bin/bash
systemctl stop elasticsearch
我已经更改了执行shell的所有权限(例如chmod 755等)。
现在这是一个令人毛骨悚然的部分:当我调试shell的执行时,我尝试echo
一个“ Hello World”,因此我可以确定我的php脚本运行正常(由于{ {1}}不输出任何内容)
而且一切正常。单击按钮时,我从烤面包片上得到了“ Hello World”答案。但是上面3个脚本中没有其他内容(我当时正在通过Kibana监视服务状态)。
有什么想法吗?