क्रॉन जॉब जो गेम को पुनरारंभ करता है


2

इसलिए मैं एक गेम होस्ट कर रहा हूँ जो बहुत ही मनमौजी है और लिनक्स पर बहुत क्रैश कर सकता है, मैंने इस क्रोनजॉब को स्क्रीन को रीस्टार्ट करने के लिए बनाया है और गेम को फेल होना चाहिए:

#!/bin/bash
for t in {1..12} do
  if [ -z "$(ps -C game | grep game)" ]
  then
    /usr/bin/screen -d -m -S ss13 /usr/local/bin/game /home/gamefolder/game/game.dmb 1336
  fi
  sleep 5 
done

गेम सर्वर शुरू करने के लिए क्रोन जॉब ठीक काम करता है, हालांकि स्क्रीन का नाम मौजूद नहीं होना चाहिए, लेकिन अगर गेम चल रहा है और क्रोंजॉब काम नहीं करता है और गेम फिर से शुरू नहीं होता है।

हालाँकि खेल पहले से ही स्क्रीन नाम ss13 में चल रहा है और स्क्रीन ही दुर्घटना नहीं करता है, बस खेल। तो मुझे लगता है कि ऐसा क्या होता है कि जब गेम क्रैश होता है तो यह गेम के साथ एक नई स्क्रीन बनाने की कोशिश करता है, लेकिन जाहिर तौर पर ऐसा नहीं हो सकता। क्या ऐसा करने का कोई बेहतर तरीका है? अभी भी यहाँ एक बहुत नोक।

जवाबों:


2

यह वास्तव में एक नौकरी नहीं है cron, मैं कुछ सुझाव देना चाहूंगा जैसे कि screenसत्र के अंदर चल रहा है :

while :; do
  /usr/local/bin/game /home/gamefolder/game/game.dmb 1336
done

:के लिए एक आशुलिपि है true

ऊपर यह माना जाता है कि यह गेम डोनेमाइज़ नहीं करता है। उस मामले में उपयोग करें:

while :; do
  if [ -z "$(ps -C game | grep game)" ]; then
    /usr/local/bin/game /home/gamefolder/game/game.dmb 1336
  fi
  sleep 5
done

मुझे नहीं पता था कि आप एक स्क्रीन सत्र में ऐसा कर सकते हैं, मेरी अयोग्यता के माध्यम से दिखा रहा है। मैं इसे वैसे भी आज़माऊँगा।
मैट

screenबस एक वियोज्य टर्मिनल है। एक स्क्रिप्ट में ऊपर कोड डालें और इसे भीतर निष्पादित करें screen, जैसे/usr/bin/screen -d -m -S ss13 SCRIPT_NAME
Thor

0

मैं स्क्रीन का उपयोग करने से परिचित हूं, लेकिन मैं वास्तव में निश्चित नहीं हूं कि आप यहां क्या करने की कोशिश कर रहे हैं। यदि आप सर्वर को ऑटो रिस्टार्ट करना चाहते हैं, तो इसके लिए आपको वास्तव में स्क्रीन की आवश्यकता नहीं है। शायद आप ऐसी स्क्रिप्ट पसंद करेंगे जो क्रैश के तुरंत बाद फिर से शुरू हो जाए (बजाय 5 सेकंड बाद)।

#!/bin/bash
for t in {1..12}
do
    /usr/local/bin/game /home/gamefolder /game/game.dmb 1336
done

क्षमा करें, मैं अपने आप को समझाने में बहुत अच्छा नहीं हूं, लेकिन मैं खेल को स्क्रीन पर चलाने की कोशिश कर रहा हूं, क्योंकि खेल अक्सर दुर्घटनाग्रस्त होने के बाद मैंने एक क्रोनजोब बनाने की कोशिश की जो गेम को एक नई स्क्रीन में फिर से शुरू करता है, हालांकि यह स्क्रीन के रूप में काम नहीं करेगा। यह पहले से मौजूद गेम को बनाने की कोशिश करता है जो चल रहा था।
मैट

जिस भाग को आप स्क्रीन में चलाना चाहते हैं, उससे पहले -X लगाने का प्रयास करें: -X "/ usr / लोकल / बिन / गेम / होम / गेमफॉल्डर /गेम / गेमबंडब 1336"
सेपरो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.