Launch modules as subprocesses in the background, and detach

前端 未结 3 2071
借酒劲吻你
借酒劲吻你 2021-01-25 07:57

In bash, I can do the following:

for f in subdir/*.sh; do
    nohup \"$f\" \"$@\" &> /dev/null &
done

in other words, i

相关标签:
3条回答
  • 2021-01-25 08:45

    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.

    0 讨论(0)
  • 2021-01-25 08:49

    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.

    0 讨论(0)
  • 2021-01-25 08:52

    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.

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