Почему следующий скрипт не продолжает работу после вызова 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()