İşlem kimliği içeren bir dosya güvenilir değil, bir işlemin çalışıp çalışmadığını belirleyin. İşlem için verilen son işlem kimliğini bulmak yalnızca güvenilir bir kaynaktır.
İşlem kimliğine sahip olduğunuzda, işlem gerçekten çalışıyorsa daha fazla denetim yapmanız gerekir.
İşte bir örnek:
#!/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 güzel bir komuttur, ancak çalışan birden çok örneğiniz olduğunda sorun yaşarsınız. Örneğin liman TCP / 22 çalışan düzenli bir sshd varsa ve ararken TCP / 2222, o zaman pgrep iki süreç kimlikleri teslim edecek bağlantı noktasında çalışan başka sshd olduğunda sshd Normal sshd içinde / var olan pid varken ... /run/sshd.pid ve diğeri /var/run/sshd-other.pid içindeki pid'e sahip olabilir ve işlemleri açıkça ayırt edebilirsiniz.
Ben yok sadece kullanmanızı tavsiye ps ile bir veya birden fazla borulardan Borulama grep ve grep -v biraz kullanmak gibi ... ilgini çekmiyor tüm diğer şeyler filtre çalışıyor
find . | grep myfile
bir dosya çıkarsa bunu anlamak için.