有没有办法使python子进程在运行一次脚本后不会终止?

有没有办法使python子进程在运行一次脚本后不会终止?,python,subprocess,Python,Subprocess,考虑以下两个文件 script\u to\u start\u other\u script.py import schedule import time import subprocess def run_again(): subprocess.call(["bash", "-c", "" + " nohup python script_to_be_started.py > /dev/null 2>&1&"]) if __name__== "__

考虑以下两个文件

script\u to\u start\u other\u script.py

import schedule
import time
import subprocess 

def run_again():
    subprocess.call(["bash", "-c", "" + "  nohup python script_to_be_started.py > /dev/null 2>&1&"])  


if __name__== "__main__":

    schedule.every(5).seconds.do(run_again)

    while True:
        schedule.run_pending()
        time.sleep(1)
        pass
import logging
from logging.handlers import TimedRotatingFileHandler

# Init logger
logger = logging.getLogger('test_log')
hdlr = logging.handlers.TimedRotatingFileHandler('./test_log.log', when='h', interval=10)
formatter = logging.Formatter('%(asctime)s %(levelname)s : %(message)s')
hdlr.setFormatter(formatter)
logger.addHandler(hdlr)
logger.setLevel(logging.INFO)
logger.info('Beginning of test_log.py')

import schedule

def run_again():
    logger.info('I am being called')

if __name__== "__main__":
    schedule.every(5).seconds.do(run_again)

    while True:
        logger.info('how many time am I being called')  
        schedule.run_pending()
        time.sleep(1)
        pass
脚本要启动。py

import schedule
import time
import subprocess 

def run_again():
    subprocess.call(["bash", "-c", "" + "  nohup python script_to_be_started.py > /dev/null 2>&1&"])  


if __name__== "__main__":

    schedule.every(5).seconds.do(run_again)

    while True:
        schedule.run_pending()
        time.sleep(1)
        pass
import logging
from logging.handlers import TimedRotatingFileHandler

# Init logger
logger = logging.getLogger('test_log')
hdlr = logging.handlers.TimedRotatingFileHandler('./test_log.log', when='h', interval=10)
formatter = logging.Formatter('%(asctime)s %(levelname)s : %(message)s')
hdlr.setFormatter(formatter)
logger.addHandler(hdlr)
logger.setLevel(logging.INFO)
logger.info('Beginning of test_log.py')

import schedule

def run_again():
    logger.info('I am being called')

if __name__== "__main__":
    schedule.every(5).seconds.do(run_again)

    while True:
        logger.info('how many time am I being called')  
        schedule.run_pending()
        time.sleep(1)
        pass
每当我运行
script\u to\u start\u other\u script.py
script\u to\u be\u start.py将只运行整个脚本一次

logger.info('how many time am I being called')  

即使存在while循环,也只打印一次。有没有办法让脚本继续运行?

我尝试了第一个脚本,它继续运行第二个脚本。试着运行
脚本以便启动.py
,并确保它运行正常。第二个脚本运行到log语句之前的一个原因可能是缺少导入

导入时间

因此,在打印日志消息之后,第二个脚本将由于缺少导入而自动崩溃


我假设您只剥离了日志记录内容,但缺少的时间导入实际上是您代码的一部分

如何读取衍生进程的输出?我使用
import logging
中的记录器,即使在添加缺少的
import
s并初始化记录器之后,您的代码也不会生成输出。你能编辑你的两个脚本,让它们实际运行并重现你的问题吗?是的,让我给你完整的脚本