In bash
, I can do the following:
for f in subdir/*.sh; do
nohup \"$f\" \"$@\" &> /dev/null &
done
in other words, i
It's probably a duplicate of Run a program from python, and have it continue to run after the script is killed and no, ignoring SIGHUP doesn't help, but preexec_fn=os.setpgrp does.
I don't know about any mechanism for it in python, but you may try to use nohup
. You may try to run
nohup python your_script.py arguments
Using os.system
or subprocess.call
.
To emulate nohup
in Python, you could make child processes to ignore SIGHUP
signal:
import signal
def ignore_sighup():
signal.signal(signal.SIGHUP, signal.SIG_IGN)
i.e., to emulate the bash script:
#!/bin/bash
for f in subdir/*.sh; do
nohup "$f" "$@" &> /dev/null &
done
using subprocess
module in Python:
#!/usr/bin/env python3
import sys
from glob import glob
from subprocess import Popen, DEVNULL, STDOUT
for path in glob('subdir/*.sh'):
Popen([path] + sys.argv[1:],
stdout=DEVNULL, stderr=STDOUT, preexec_fn=ignore_sighup)
To create proper daemons, you could use python-daemon package.