У меня огромная головная боль, которая заставляет некоторые кнопки на моем веб-сервере останавливать / запускать / перезапускать службу ElasticSearch при необходимости.
Я много искал в интернете и не нашел ничего похожего на мою проблему.
Вот оболочка, которую я пытаюсь выполнить:
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 файлов, которые я написал:
#!/bin/bash
systemctl start elasticsearch
#!/bin/bash
systemctl restart elasticsearch
#!/bin/bash
systemctl stop elasticsearch
Я уже изменил все разрешения для запуска оболочки (например, chmod 755 и т. Д.).
Теперь вот трипая часть: когда я отлаживал выполнение оболочки, я пытался echo
«Hello World», чтобы я мог быть уверен, что мой php-скрипт работал нормально (так как systemctl start/restart/stop elasticsearch
ничего не выводит)
И все работало нормально. Я получил ответ «Hello World» из сценария на тосте, когда нажал кнопку. Но ничего больше из трех приведенных выше сценариев (я отслеживал состояние службы через Kibana).
Есть идеи?