SORU
2 ŞUBAT 2012, PERŞEMBE


/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
2 ŞUBAT 2012, PERŞEMBE


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:

http://linux.about.com/od/commands/l/blcmdl1_ps.htm

http://linux.about.com/od/commands/l/blcmdl1_grep.htm

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Jason Rosolowski

    Jason Rosolo

    25 EKİM 2006
  • ShayLoss

    ShayLoss

    5 Kasım 2009
  • Subscribe!!

    Subscribe!!

    3 EKİM 2009