【问题标题】:How to start a service in background and using subprocess and storing the logs in a file如何在后台启动服务并使用子进程并将日志存储在文件中
【发布时间】:2014-01-09 04:57:58
【问题描述】:

是否可以在不使用 screen 命令的情况下执行一个无限进程的 shell 命令并并排查看其日志。推荐使用Subprocess

例如:

env = os.environ.copy()
proc = subprocess.Popen(
cmds,
shell=False,
stdin=subprocess.PIPE,
bufsize=0,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
env=env)

其中cmds 是一个无限运行的进程(一个服务)。

【问题讨论】:

    标签: python linux subprocess


    【解决方案1】:

    像这样:

    $CommandThatProduceOutputs 1>/path/to/your/log/file  2>&1   &
    

    然后此过程将取消背景,所有 STD 和 ERR 流将登录到指定的log 文件。

    更多详情请访问我的博客linux-shell-redirect

    【讨论】:

    • 这意味着在我的例子中,cmds 是一个列表,比如: cmds ['python', 'somefile.py','1>/path/logfile/, '2>&1', ' &' ]
    • 你想说什么?
    • 我的意思是,我的 cmds 是什么,我正在传递子程序(在我的情况下,cmds 是一个列表 cmds = ["python","p.py", "--debug"])
    • 我认为你可以使用循环来实现这一点,python 很容易应付它
    猜你喜欢
    • 2019-02-05
    • 1970-01-01
    • 2013-11-28
    • 2017-08-06
    • 1970-01-01
    • 2020-08-18
    • 2016-02-21
    • 2018-06-06
    • 2015-05-20
    相关资源
    最近更新 更多