以不同配置作为后台进程多次运行python脚本

以不同配置作为后台进程多次运行python脚本,python,linux,Python,Linux,运行之后,我使用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

运行之后,我使用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> 
但它保持不变,最后一次调用覆盖了上一次调用。您应该使用sys.argv。作为cloudemir.py文件的示例:

导入系统 printsys.argv[0] 然后你可以用以下方式来称呼它:

python cloudemir.py Hi # First time
python cloudemir.py Hi2 # Second time

这样,cloudemir.py之后的名称将作为参数输入python程序。

这是一个很好的改进方案,但仍然只打印一条消息。argv[0]打印程序名,agr[1]打印消息。我需要两条消息都运行,而不是一条替换另一条。你是说你希望你的python脚本记住它收到的所有消息,直到它被杀死?我想我要问的是,你怎么知道,一个python实例将处理多少条消息?domain/run.php?message=Hi domain/run.php?message=Hi2也许您需要一个domain/run.php?clear_state=True或类似的东西?我想,因为我在后台运行脚本,每次运行它都是新实例并单独运行。可能吗?是的,exec将返回一个新实例,您可以将内容存储在某个文件中,然后读取该文件。。。但是,除非您在python脚本中添加一些选项以清除该文件,否则将给出所有消息。
proc = subprocess.Popen("nohup python cloudemir.py "+content+" > /dev/null 2>&1 &", shell=True)
python cloudemir.py Hi # First time
python cloudemir.py Hi2 # Second time