Я использовал php для запуска python сценария на Linux через веб после запуска, и я получаю идентификатор процесса
<!DOCTYPE html>
<html>
<body>
<?php
echo 'Starting the mapping process';
echo exec('nohup python cloudemir.py '.$_GET[message].' > /dev/null 2>&1 & echo $! &');
?>
</body>
</html>
, который затем используется для прекращения процесса, когда мне не нужно он прекрасно работает
<!DOCTYPE html>
<html>
<body>
<?php
$pid=$_GET['pid'];
echo exec("kill -9 $pid");
?>
</body>
</html>
Используемый мной скрипт python просто публикует одно сообщение через MQTT каждую секунду. Проблема в том, что я не могу изменить содержание сообщения.
Если сообщение «Привет», и я запускаю этот процесс, оно говорит «Привет», «Привет» ... каждую секунду. Если я изменяю сообщение сценария python на Hi2 и запускаю его снова, я получаю новый идентификатор процесса, а новое сообщение - Hi2 каждую секунду, и сообщения Hi больше нет.
Мне нужно, чтобы оно запускалось отдельно и получить оба сообщения и при необходимости убить одно из них. Мне нужно, чтобы он мог запускать неограниченное количество экземпляров этого python sctipt с другой конфигурацией, мне не нужно создавать новые сценарии.
domain / run. php? Message = Hi
домен / запуск. php? Message = Hi2
Это должно вывести Hi, Hi2, Hi, Hi2
домен / запуск. php? Message = Hi
домен / запуск. php? Message = Hi2
домен / запуск. php? Message = Hi3
Это должно вывести Hi, Hi2, Hi3, Hi, Hi2, Hi3
В обоих случаях он печатает только последнее сообщение
Я пытался сделать то же самое без php, но вызывая скрипт из другого python скрипта с
proc = subprocess.Popen("nohup python cloudemir.py "+content+" > /dev/null 2>&1 &", shell=True)
Но он остается прежним, последний вызов перезаписывает предыдущий