通过SSH运行后台服务的Python脚本
小结:我正在用ssh连接到远程服务器,并在那里执行一个fork1.py脚本,如下所示。但问题是我希望进程在后台执行,这样我就可以启动多个服务。 我知道我们可以使用nohup等,但它们不起作用。即使在最后使用&时,进程也会启动,但在脚本终止时会终止 代码如下:通过SSH运行后台服务的Python脚本,python,linux,ssh,subprocess,Python,Linux,Ssh,Subprocess,小结:我正在用ssh连接到远程服务器,并在那里执行一个fork1.py脚本,如下所示。但问题是我希望进程在后台执行,这样我就可以启动多个服务。 我知道我们可以使用nohup等,但它们不起作用。即使在最后使用&时,进程也会启动,但在脚本终止时会终止 代码如下: import os import sys import commands from var import key_loc import subprocess import pipes import shlex def check(stat
import os
import sys
import commands
from var import key_loc
import subprocess
import pipes
import shlex
def check(status):
if status != 0:
print 'Error! '
quit()
else:
print 'Success :) '
file1=open('/home/modiuser/status.txt','a')
file1.write("Success :)\n")
if(sys.argv[1]=="ES"):
os.chdir('/home/modiuser/elasticsearch-0.90.0/bin/')
proc1=subprocess.Popen(shlex.split("nohup ./elasticsearch -p /home/modiuser/es.pid"))
if(sys.argv[1]=="REDIS"):
os.chdir('/home/modiuser/redis-2.6.13/src')
proc2=subprocess.Popen(shlex.split("./redis_ss -p /home/modiuser/redis.pid"))
if(sys.argv[1]=="PARSER"):
proc3=subprocess.Popen(shlex.split("nohup java -jar logstash-1.1.12-flatjar.jar agent -f parser.conf"))
file1=open('/home/modiuser/pid.txt','a')
file1.write("PARSER-"+str(proc3.pid)+"\n")
file1.write(str(proc3.poll()))
file1.close()
if(sys.argv[1]=="SHIPPER_TCP"):
proc4=subprocess.Popen(shlex.split("nohup java -jar logstash-1.1.12-flatjar.jar agent -f shipper_TCP.conf"))
file1=open('/home/modiuser/pid.txt','a')
file1.write("SHIPPER_TCP-"+str(proc4.pid)+"\n")
file1.close()
我哪里做错了?试试看
import os
os.system('python program1.py &') #this one runs in the background
os.system('python program2.py') #this one runs in the foreground
你需要守护进程。这与python或ssh无关,Linux就是这样工作的。向下滚动一点。我想这可能就是你想要的。你的意思是说我不应该使用fork,而应该使用os.system?