উত্তর:
আপনার নিজস্ব বাশ ফাংশন তৈরি করুন এবং এটি আপনারতে রাখুন ~/.bashrc
:
check_upstart_service(){
status $1 | grep -q "^$1 start" > /dev/null
return $?
}
আউটপুট পার্সিংয়ের উপায়টি আমি সত্যিই অপছন্দ করি, তবে আমি আর একটি সুস্পষ্ট উপায় দেখতে পাচ্ছি না। এবং এক্ষেত্রে আউটপুটটি <service name> start
খুব নির্ভরযোগ্য যেমন এটি আপস্টার্ট ডকুমেন্টেশনে উল্লিখিত হয়েছে ।
এখন আপনি এটি এর মতো ব্যবহার করতে পারেন:
if check_upstart_service ssh; then echo "running"; else echo "stopped"; fi
স্ট্রিংয়ের উপর ভিত্তি করে ব্যাশে রয়েছে :
job='your_job_name'
job_status=$(status ${job})
if [[ ${job_status} == *running* ]]
then
# do whatever you need
else
# do whatever you need
fi
আমার প্রথম প্রেরণা ছিল কোডিয়ালরোবট সরবরাহ করা কোডের বিভিন্নতা ব্যবহার করা
job='your_job_name'
dbus-send --system --print-reply --dest=com.ubuntu.Upstart \
/com/ubuntu/Upstart/jobs/${job}/_ \
org.freedesktop.DBus.Properties.Get string:'' string:state
যা কিছু ফিরে আসবে
পদ্ধতি রিটার্ন প্রেরক =: 1.0 -> গন্তব্য =: 1.94 উত্তর_সারিয়াল = 2 ভেরিয়েন্ট স্ট্রিং "চলমান"
এবং উপরের সমাধানটি ব্যবহার করে ফিরে আসা স্ট্রিংয়ে "চলমান" রয়েছে কিনা তা পরীক্ষা করে দেখুন। তবে যে চাকরিটি ডিবিএস কল চলছে না সেই অবস্থাটি প্রত্যাশার সাথে "প্রতীক্ষায়" ফিরে আসার পরিবর্তে স্থিতি 1 দিয়ে প্রস্থান করবে।
status ${job}
যখন এই জাতীয় কোনও কাজ না হয় তবে ক্ষেত্রেটি বাদ দিয়ে স্থিতি 1 দিয়ে কখনই প্রস্থান করতে পারবেন না।
আপনি সেই নির্দিষ্ট পরিষেবার স্থিতিটি জিজ্ঞাসা করতে DBUS ব্যবহার করবেন।
$ job=myjob
$ dbus-send --system --print-reply --dest=com.ubuntu.Upstart /com/ubuntu/Upstart/jobs/${job}/_ org.freedesktop.DBus.Properties.GetAll string:''
http://upstart.ubuntu.com/cookbook/#get-status-of-job-via-d-bus
মনে রাখবেন যে আপনি যদি নিজের আপস্টার্ট কাজটি লিখে থাকেন তবে আপনার পরিবর্তে আপস্টার্ট ইভেন্ট বা প্যাকেজ নির্ভরতা ব্যবহার করা উচিত।
দেখে মনে হচ্ছে আপসস্টার্ট স্ট্যাটাস কমান্ডটি লিনাক্স স্ট্যান্ডার্ড বেস প্রকল্পের সূচনা স্ক্রিপ্টের সাথে সম্মতি জানায়, এর অর্থ আপনি 0 এর একটি প্রস্থান কোড ধরে নিতে পারেন মানে প্রোগ্রামটি চলছে, 1-3 এর একটি বহির্গমন কোড মানে এটি চলছে, এবং যে কোনও অন্যান্য প্রস্থান কোড মানে একটি অনির্ধারিত স্থিতি।
দেখুন: http://refspecs.linuxbase.org/LSB_3.0.0/LSB-PDA/LSB-PDA/iniscrptact.html
status $1 2> /dev/null | grep -q "^$1 start" > /dev/null 2> /dev/null
এটি নিস্তব্ধ তা নিশ্চিত করার জন্য এটিকে সংশোধন করতে চাইতে পারেন ।