Execute Subprocess in Background

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


& 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().