/Unix komut işlemi çalışıp çalışmadığını belirlemek için Linux?
Eğer belirli bir süreç çalışıyorsa belirleyecek platform bağımsız (/Unix|OS Linux) shell/bash bir komut istiyorum. örneğin mysqld
, httpd
...
En basit yolu bunu yapmak için/komut nedir?
CEVAP
pidof
pgrep
çalışan belirlemek için büyük araçlar olsa da, her ikisi de, ne yazık ki, bazı işletim sistemlerinde kullanılamaz. Güvenli aşağıdaki kullanmak olacaktır kesin başarısız: ps cax | grep command
Gentoo Linux: üzerine çıktı
14484 ? S 0:00 apache2 14667 ? S 0:00 apache2 19620 ? Sl 0:00 apache2 21132 ? Ss 0:04 apache2
OS X çıkış:
42582 ?? Z 0:00.00 (smbclient) 46529 ?? Z 0:00.00 (smbclient) 46539 ?? Z 0:00.00 (smbclient) 46547 ?? Z 0:00.00 (smbclient) 46586 ?? Z 0:00.00 (smbclient) 46594 ?? Z 0:00.00 (smbclient)
Linux ve OS X üzerinde, grep kolay olursa sürecinde bulunan olup olmadığını kontrol etmek için bir çıkış kodu döndürür:
#!/bin/bash
ps cax | grep httpd > /dev/null
if [ $? -eq 0 ]; then
echo "Process is running."
else
echo "Process is not running."
fi
Eğer PID listesi istiyorsanız Ayrıca, kolayca bu da grep:
ps cax | grep httpd | grep -o '^[ ]*[0-9]*'
Aynı işlemi Linux ve OS X: olan
3519 3521 3523 3524
Aşağıdaki çıktı, boş bir dize, çalışan işlemler için bu yaklaşım daha güvenli hale getirmeye çalışıyor:
echo ps cax | grep aasdfasdf | grep -o '^[ ]*[0-9]*'
Bu yaklaşım basit boş bir dize test yazmak için uygundur, o zaman bile keşfetti PID yineleme.
#!/bin/bash
PROCESS=$1
PIDS=`ps cax | grep $PROCESS | grep -o '^[ ]*[0-9]*'`
if [ -z "$PIDS" ]; then
echo "Process not running." 1>&2
exit 1
else
for PID in $PIDS; do
echo $PID
done
fi
Bir dosyaya kaydederek test edebilirsiniz ("adı") çalışan izinleri (x çalışan chmod) çalıştırmak ve bir parametre ile çalıştırma: ./running "httpd"
#!/bin/bash
ps cax | grep httpd
if [ $? -eq 0 ]; then
echo "Process is running."
else
echo "Process is not running."
fi
!! UYARI!
Lütfen unutmayın, sen sadece ayrıştırma çıktı ps ax
bu da demektir ki görüldüğü gibi Linux çıktı, değil sadece eşleşen işlemleri, ama aynı zamanda bağımsız geçti bu program. Ben çok bu yöntem (*19 örneğin* de 'kullanın' süreçleri). maç kullanırken mümkün olduğunca spesifik olmak öneririz Ben çok which
mümkünse tam bir yol karşı kontrol etmek için kullanmanızı tavsiye ederiz.
Referanslar:
SQL Server Yedekleme sürecini belirlem...
Nasıl belirli bir Linux 32 bit veya 64...
JVM uzaktan hata ayıklama işlemi için ...
Nasıl bir süreç toplu bir senaryo üzer...
Maven dosya belirlemek için Maven komu...