একটি প্রক্রিয়া আইডিযুক্ত ফাইল নির্ভরযোগ্য নয় কোনও প্রক্রিয়া চলছে কিনা তা নির্ধারণ করে না। প্রক্রিয়াটির জন্য সর্বশেষ প্রদত্ত প্রক্রিয়া আইডি বের করার জন্য এটি কেবল একটি নির্ভরযোগ্য উত্স।
আপনার যখন প্রক্রিয়া আইডি থাকে, তখন প্রক্রিয়াটি সত্যই চলমান থাকে তবে আপনাকে আরও চেক করতে হবে।
এখানে একটি উদাহরণ:
#!/usr/bin/env sh
file="/var/run/sshd.pid"
processid=$(cat /var/run/sshd.pid)
if [ ! -f ${file} ]; then
echo "File does not exists: ${file}"
exit 1
fi
if [ ! -r ${file} ]; then
echo "Insufficient file persmissons: ${file}"
exit 1
fi
psoutput=$(ps -p ${processid} -o comm=)
if [ $? == 0 ];then
if [ ${psoutput} == "sshd" ]; then
echo "sshd process is realy running with process id ${processid}"
exit 0
else
echo "given process id ${processid} is not sshd: ${psoutput}"
exit 1
fi
else
echo "there is no process runing with process id ${processid}"
exit 0
fi
pgrep হ'ল একটি দুর্দান্ত আদেশ, তবে আপনি যখন সমস্যায় পড়বেন, তখন আপনার একাধিক ঘটনা চলবে। উদাহরণস্বরূপ, আপনি বন্দর বিভিন্ন TCP / 22 চলমান একটি নিয়মিত sshd কমান্ড আছে এবং আপনি বন্দর চলমান বিভিন্ন TCP / 2222, তারপর pgrep দুই প্রক্রিয়া আইডি যখন অনুসন্ধানের জন্য প্রদান করা হবে আরেকটি sshd কমান্ড আছে sshd কমান্ড ... যখন স্বাভাবিক sshd কমান্ড / var তার PID আছে /run/sshd.pid এবং অন্যটির /var/run/sshd-other.pid তে এর পিড থাকতে পারে আপনি প্রক্রিয়াগুলি পরিষ্কারভাবে আলাদা করতে পারবেন।
আমি কেবল পিএস ব্যবহার করার পরামর্শ দিচ্ছি না , গ্রেপ এবং গ্রেপ-ভি দিয়ে এক বা একাধিক পাইপ দিয়ে পাইপিং করা অন্য সমস্ত জিনিস যা আপনার আগ্রহী না তা ফিল্টার করার চেষ্টা করছে ... এটি ব্যবহার করার মতো কিছুটা
find . | grep myfile
যদি কোন ফাইল প্রস্থান করে, তা বের করতে।