0

概要: リモート サーバー上で実行されるスクリプトを使用して、コマンド ラインからさまざまなサービスを開始する必要があります。このスクリプトは、各サービスのサブプロセスを作成し、PID をなんらかの形式で保存します。

このスクリプトでは、各プロセスをバックグラウンドで実行することはできません。最初の 2 つ、つまり es と redis を除いて、他のものはフォアグラウンドで実行され、次のコマンドを実行するために端末を返しません。

どこが間違っていますか?スクリプトは次のとおりです。

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"))
    os.system('nohup ./elasticsearch -p /home/modiuser/es.pid > /dev/null 2>&1 &')
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"))
    os.system('nohup ./redis_ss -p /home/modiuser/redis.pid > /dev/null 2>&1 &')
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.close()
    os.wait(proc3.pid)
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()
if(sys.argv[1]=="SHIPPER"):
    proc5=subprocess.Popen(shlex.split("nohup java -jar logstash-1.1.12-flatjar.jar agent -f shipper_test.conf"))
    file1=open('/home/modiuser/pid.txt','a')
    file1.write("SHIPPER-"+str(proc5.pid)+"\n")
    file1.close()
4

0 に答える 0