অ্যাপ্লিকেশন স্ক্রিপ্টটি ক্র্যাশ হয়ে গেলে আবার চালাবেন?


18

আমার কিছু অ্যাপ্লিকেশন রয়েছে যা আমার ল্যাপটপে সর্বদা চালানো দরকার।

আমি এই অ্যাপ্লিকেশনগুলি শুরু করতে ব্যাশ স্ক্রিপ্ট ব্যবহার করি। আমার স্ক্রিপ্টে আমার একটি লুপ রয়েছে যা এর সাথে একই দেখাচ্ছে:

while true;
do
    xterm
done

এটি একটি অ্যাপ্লিকেশন চালায় ( xtermএই ক্ষেত্রে) এবং যদি অ্যাপ্লিকেশনটি ক্র্যাশ হয় তবে লুপটি আবার এটি শুরু করে।

এটির একটি অসুবিধা আছে যে এই লুপ থেকে কোনও "পরিষ্কার" প্রস্থান নেই। সুতরাং ব্যবহারকারীর উদ্দেশ্য বন্ধ করার পরেও xterm, লুপটি আবার এটি শুরু করে।

বাশ স্ক্রিপ্ট থেকে কোনও অ্যাপ্লিকেশন শুরু করার , স্ক্রিপ্টটি ক্র্যাশ হয়ে গেলে এটি পুনরায় চালানোর জন্য বা ব্যবহারকারী সঠিকভাবে এটি বন্ধ করে দিলে কিছুই না করার জন্য কী কোনও অ্যাপ্লিকেশন শুরু করার উপায় আছে ?

উত্তর:


30

এটা চেষ্টা কর:

while true; do xterm && break; done

অ্যাপ্লিকেশনগুলিতে প্রস্থান স্থিতি কোড রয়েছে যাতে কোনও কিছু সূক্ষ্ম প্রস্থান করলে শূন্য ফিরে আসে ... এবং যদি কিছু ভুল হয়ে যায় তবে এটি অন্য নম্বরটি ছুঁড়ে দেয়। এটি লোককে হুক ইন করতে এবং সঠিক সমস্যাটি সন্ধান করতে দেয়। অন্য উত্তরটি এটিই করছে।

&&পূর্ববর্তী কমান্ডটি শূন্য-স্থিতির প্রস্থান ছিল এবং এটি যদি হয় তবে লুপটি ভেঙ্গে যায় just যদি এটি ক্রাশ হয়, এটি 0 ব্যতীত অন্য কিছু ফেলে দেবে এবং && ...ধারাটি ট্রিগার করবে না; এটি কেবল চারপাশে লুপ করে চলে যাবে xterm


6
এটি বেশ মার্জিত।
অলি

হুম .. পাশাপাশি অন্য উপায়:while xterm; do true; done
মুড়ু

1
@ মুরু: এটি আমার পক্ষে কাজ করে:while ! xterm; do :; done
সাইরাস

1
@ সাইরাস আহ, হ্যাঁ ভুলে গেছি !
মুড়ু

আমি একটি দানব তৈরি করেছি। আমি কীভাবে এটি হত্যা করব?
টনি রুথ 20

6

এই whileঅবস্থায় আপনি পরীক্ষা করতে পারবেন যে প্রস্থান স্থিতি xtermসফল হয়েছিল কি না এই জাতীয় কিছু দিয়ে:

result=1
while [ $result -ne 0 ]; do
    xterm
    result=$?
done

$? ভেরিয়েবল শেষ নির্বাহিত কমান্ডের প্রস্থান স্থিতি রাখে।


0

আমি আপনাকে ব্যবহার করার পরামর্শ দেব।

এক্সটার্ম পর্যন্ত; প্রতিধ্বনি "প্রোগ্রামটি status স্ট্যাটাস দিয়ে শেষ হয়েছে?" ; সম্পন্ন

এটি যদি আপনার প্রোগ্রামটিকে হত্যা করা হয় তবে এটি পুনরায় চালাবে।


0

এটি চালানোর জন্য খুব সহজ এবং সহজে প্রোগ্রাম বা স্ক্রিপ্ট যুক্ত করার জন্য সুপারভাইজার ব্যবহার করার চেষ্টা করুন । ন্যূনতম আপনার প্রয়োজন হতে পারে যদি এবং হয়ত মধ্যে programx-ধারা কনফিগার করার জন্য।commandexitcodes

ডিফল্ট exitcodes0,2 হয় তাই এর অর্থ:

সুপারভাইজার প্রক্রিয়াটি পুনরায় আরম্ভ করবে যদি এটি এই তালিকাতে সংজ্ঞায়িত না হয় এমন একটি প্রস্থান কোডের সাথে প্রস্থান করে

সাধারণভাবে এটি যা আপনি চান: স্ক্রিপ্ট ক্র্যাশ হলে এটি পুনরায় চালনা করুন বা ব্যবহারকারী সঠিকভাবে এটি বন্ধ করে দিলে কিছুই করেন না (অথবা স্ক্রিপ্টটি সফলভাবে সম্পন্ন হয়েছে)

প্রথমে সহজ কনফিগারেশন ব্যবহার করে দেখুন:

[program:you_app_name]
command=/path/to/you/app

আরও নমনীয়তার জন্য কনফিগারেশন ফাইল ডকুমেন্টেশন দেখুন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.