Şu anda ilk python programımı yazıyorum (Python 2.6.6'da). Program, kullanıcının ortak komutlarını sağlayan bir sunucu üzerinde çalışan farklı uygulamaları başlatmayı ve durdurmayı kolaylaştırır (Linux sunucusundaki sistem hizmetlerini başlatma ve durdurma gibi).Bir işlemi nasıl başlatıp python'da arka plana nasıl yerleştirebilirim?
Bir uygulamanın başlangıç komut ön planda kalır ve böylece p.communicate() sonsuza bekleyeceği,
p = subprocess.Popen(startCommand, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
output, err = p.communicate()
print(output)
sorundur tatbikata başlatma komut dosyalarını başlıyorum. Zaten startCommand'ın önünde "nohup startCommand &" kullanmayı denedim ama beklendiği gibi çalışmadı. bash komut dosyası benim piton kodundan
#!/bin/bash
LOGFILE="/opt/scripts/bin/logs/SomeServerApplicationStart.log"
nohup /opt/someDir/startSomeServerApplication.sh >${LOGFILE} 2>&1 &
STARTUPOK=$(tail -1 ${LOGFILE} | grep "Server started in RUNNING mode" | wc -l)
COUNTER=0
while [ $STARTUPOK -ne 1 ] && [ $COUNTER -lt 100 ]; do
STARTUPOK=$(tail -1 logs/SomeServerApplicationStart.log | grep "Server started in RUNNING mode" | wc -l)
if ((STARTUPOK)); then
echo "STARTUP OK"
exit 0
fi
sleep 1
COUNTER=$(($COUNTER + 1))
done
echo "STARTUP FAILED"
denir:
Çözüm olarak şimdi uygulamanın başlangıç komut dosyası çağırmak için aşağıdaki bash komut dosyasını kullanın.
yanlış şekilde subprocess.Popen mı ... Bu geçici çözüm mükemmel çalışır ama tüm python yapmayı tercih ediyorum? Görevimi sadece Python'da nasıl aktarabilirim?
muhtemelen bir çift http://stackoverflow.com/questions/1196074/starting- python a-background-process-in-python – daTokenizer
Sadece ihtiyaç duyulduğunda 'iletişim 'kullanın .. sonuçları kontrol etmeniz gerekmez mi? Sadece ondan kaçının ... – klashxx
@klashxx: Sonuçlara ihtiyacım var. Bu benim problemim ... ("RUNNING modunda başlatılan sunucu" için çıkışı kontrol etmek gerekiyor ...) – Ronzo