Execute Subprocess in Background

后端 未结 2 383
盖世英雄少女心
盖世英雄少女心 2020-12-30 06:01

I have a python script which takes an input, formats it into a command which calls another script on the server, and then executes using subprocess:

import s         


        
相关标签:
2条回答
  • 2020-12-30 06:27

    & is a shell feature. If you want it to work with subprocess, you must specify shell=True like:

    subprocess.call(command, shell=True)
    

    This will allow you to run command in background.

    Notes:

    1. Since shell=True, the above uses command, not command_list.

    2. Using shell=True enables all of the shell's features. Don't do this unless command including thingy comes from sources that you trust.

    Safer Alternative

    This alternative still lets you run the command in background but is safe because it uses the default shell=False:

    p = subprocess.Popen(command_list)
    

    After this statement is executed, the command will run in background. If you want to be sure that it has completed, run p.wait().

    0 讨论(0)
  • 2020-12-30 06:27

    If you want to execute it in Background I recommend you to use nohup output that would normally go to the terminal goes to a file called nohup.out

    import subprocess
    
    subprocess.Popen("nohup usr/local/bin/otherscript.pl {0} >/dev/null 2>&1 &", shell=True)
    

    >/dev/null 2>&1 & will not create output and will redirect to background

    0 讨论(0)
提交回复
热议问题