[英]Run python script multiple times as a background process with different configuration
運行后,我使用 php 在 Linux 上通過 web 運行 python 腳本,並獲得進程 ID
<!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,然后再次運行它,我會得到新的進程 ID,新消息每秒為 Hi2,並且不再有 Hi 消息。
我需要它單獨運行並獲取兩條消息,並在需要時殺死其中一個。 我需要它能夠以不同的配置運行該 python sctipt 的無限數量的實例,我不需要構建新腳本。
domain/run.php?message=Hi
域/run.php?message=Hi2
這應該打印 Hi, Hi2, Hi, Hi2
domain/run.php?message=Hi
域/run.php?message=Hi2
域/run.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)
但它保持不變,最后一次調用覆蓋了前一次調用
你應該使用sys.argv
。 作為文件cloudemir.py
的示例:
import sys
print(sys.argv[0])
然后你可以調用它:
python cloudemir.py Hi # First time
python cloudemir.py Hi2 # Second time
這樣, cloudemir.py
之后的名稱將作為參數輸入到 python 程序中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.