Вызов сценария Python в фоновом режиме с зависанием nohup и не будет двигаться дальше - PullRequest
0 голосов
/ 07 января 2019

Почему следующий скрипт не продолжает работу после вызова nohup python3 srvr_script и продолжает печатать операторы Output / Out / Err / Return? Вместо этого он печатает: «nohup: игнорирование ввода и перенаправление stderr в stdout» и дальнейшее движение не происходит. Как я могу сделать это, чтобы запустить скрипт в фоновом режиме и двигаться дальше? Спасибо,

from subprocess import Popen, PIPE
from subprocess import check_output


class MailServer(object):
    @staticmethod
    def start_server():
        # Find out if script 'server_script' already started. 
        srvr_script = "server_script.py"
        ps_process = Popen(["ps", "-ef"], stdout=PIPE)
        grep_script = Popen(["grep", srvr_script], stdin=ps_process.stdout, stdout=PIPE)
        grep_python = Popen(["grep", "python"], stdin=grep_script.stdout, stdout=PIPE)

        if grep_python.returncode == 0:
            print("Server already started! Do nothing.")
        else:
            print("Server not started yet! Start server.")
            try:
                srv_proc = check_output(["nohup", 
                                        "python3", 
                                        srvr_script])
                out, err = srv_proc.communicate()
                print("Output: {}".format(srv_proc))
                print("Out: {}".format(out))
                print("Err: {}".format(err))
                print("Return code: {}".format(srv_proc.returncode))
            except Exception as script_err:
                print("Error: %s" % script_err)


MailServer().start_server()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...