সাধারণভাবে, সহজ পদ্ধতির সাথে চেষ্টা করা ps
এবং grep
প্রদত্ত প্রক্রিয়াটি চলছে কিনা তা নির্ধারণ করার চেষ্টা করা খারাপ ধারণা ।
আপনি এটির pgrep
জন্য ব্যবহার করা আরও ভাল হবে :
if pgrep "varnish" >/dev/null; then
echo "Varnish in running"
else
echo "Varnish is not running"
fi
জন্য ম্যানুয়াল দেখুন pgrep
। কিছু সিস্টেমে (সম্ভবত লিনাক্সে নেই), আপনি একটি -q
পতাকা পাবেন যা একই পতাকার সাথে মিলে যায় grep
যার জন্য পুনঃনির্দেশের প্রয়োজন থেকে মুক্তি পেয়ে যায় /dev/null
। একটি -f
পতাকা রয়েছে যা কেবলমাত্র প্রক্রিয়া নামের পরিবর্তে সম্পূর্ণ কমান্ড লাইনে ম্যাচটি সম্পাদন করে। তোলা যায় ব্যবহার করে একটি নির্দিষ্ট ব্যবহারকারীর একাত্মতার প্রক্রিয়াগুলিতে ম্যাচ সীমিত হতে পারে -u
।
ইনস্টল করা pgrep
আপনাকে এতে অ্যাক্সেসও দেয় pkill
যা আপনাকে তাদের নামের উপর ভিত্তি করে প্রক্রিয়াগুলি সিগন্যাল করার অনুমতি দেয়।
এছাড়াও, যদি এটি কোনও পরিষেবা ডেমন হয় এবং যদি আপনার ইউনিক্স সিস্টেমে তথ্যের জন্য এটি জিজ্ঞাসা করার কোনও উপায় থাকে (যেমন, এটি চালু এবং চলছে কিনা) তবে এটি এটি পরীক্ষা করার সঠিক উপায়।
লিনাক্সে, আপনার ওপেনবিএসডি-তে আছে systemctl
( systemctl is-active --quiet varnish
এটি চলমান থাকলে 0 ফিরে আসবে) rcctl
, ইত্যাদি etc.
এখন আপনার স্ক্রিপ্টে:
আপনার স্ক্রিপ্টে, আপনি আউটপুট পার্স করে ps ax
। এই আউটপুটটিতে নিজেই স্ক্রিপ্টের নাম থাকবে, এতে check_varnish_pro.sh
অবশ্যই স্ট্রিং রয়েছে varnish
। এটি আপনাকে একটি মিথ্যা ইতিবাচক দেয়। আপনি যদি পরীক্ষার সময় -q
পতাকা ছাড়াই এটি চালিত করে থাকেন তবে আপনি এটি স্পষ্ট করতে পারতেন grep
।
#!/bin/bash
ps ax | grep '[v]arnish'
এটি চালানো:
$ ./check_varnish_pro.sh
31004 p1 SN+ 0:00.04 /bin/bash ./check_varnish_pro.sh
আরেকটি সমস্যা হ'ল যদিও আপনি প্যাটার্নটি ব্যবহার করে grep
প্রক্রিয়াটি grep
নিজের দ্বারা সনাক্ত করা থেকে "আড়াল" করার চেষ্টা করছেন [v]
। যদি আপনি কোনও ডিরেক্টরিতে স্ক্রিপ্ট বা কমান্ড লাইনটি চালিত করতে চান তবে এর মধ্যে একটি ফাইল বা ডিরেক্টরি রয়েছে varnish
(যে ক্ষেত্রে আপনি আবার একটি মিথ্যা ধনাত্মক পাবেন) fail এটি হ'ল কারণ প্যাটার্নটি অনুপযুক্ত এবং শেল এটির সাথে ফাইলের নাম গ্লোববিং করবে।
দেখা:
bash-4.4$ set -x
bash-4.4$ ps ax | grep [v]arnish
+ ps ax
+ grep '[v]arnish'
bash-4.4$ touch varnish
+ touch varnish
bash-4.4$ ps ax | grep [v]arnish
+ ps ax
+ grep varnish
91829 p2 SN+p 0:00.02 grep varnish
ফাইলের উপস্থিতি varnish
শেলটি [v]arnish
ফাইলের সাথে প্রতিস্থাপন করবে varnish
এবং আপনি প্রক্রিয়া সারণীতে ( grep
প্রক্রিয়া) প্যাটার্নটিতে হিট পাবেন ।