Yanıtlar:
Çoğu insan httpd'sini (Apache, Nginx, etc) bir init sistemiyle çalıştırır. Bir paketten yüklediyseniz bu kesinlikle kesinlikle durum. Neredeyse tüm bu init sistemlerinin çalışıyorsa çalışacak bir yöntemi vardır. Benim durumumda, bir SysV tarzı init betiği gönderen ve şöyle bir status
argüman kabul eden nginx kullanıyorum :
$ /etc/init.d/nginx status
* nginx is running
Açıkçası, farklı bir httpd, script veya init sistemi kullanıyorsanız, biraz farklı bir sözdizimine sahip olacaksınız ancak httpd'yi kendiniz başlatmıyorsanız (dünyanın en kötü fikri gibi), muhtemelen durumu sorgulamanıza izin veren iyi yönetilen bir başlangıç betiği kullanıyor olabilirsiniz.
slm'ın cevabı bu tür init sorgulaması hakkında daha fazla bilgiye sahip ancak buna güvenme sorunu yalnızca bir işlem hala çalışıyorsa size söyler. Httpd’nizin ana işlemi çalışıyor olabilir , ancak bir şekilde kilitlendi. Basit init testlerini atlamak ve davranış testlerine geçmek çok mantıklıdır.
Httpds hakkında bildiğimiz bir şey dinliyorlar. Genellikle bağlantı noktasında *:80
, ancak sizinki değilse, kodu aşağıdaki kodu uyarlayabilirsiniz. Burada doğru bağlantıyı dinleyip dinlemediğini görmek awk
için çıktısını alıyorum netstat
.
$ sudo netstat -ntlp | awk '$4=="0.0.0.0:80"'
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 2079/nginx
Doğru httpd'nin çalıştığından emin olmak için hangi işlemin çalıştığını da kontrol edebiliriz . Her türlü kontrolü yapabiliriz. Ne kadar paranoyak olmak istediğine bağlı :)
Ama bu bile sadece bir httpd yansımasıdır. Gerçekten denemek ister misin? Hadi test edelim .
$ wget --spider -S "http://localhost" 2>&1 | awk '/HTTP\// {print $2}'
200
Ben sadece cevap koduna bakıyorum (200 "A-Tamam!" Anlamına geliyor) fakat yine de, doğru bir şekilde üretildiğinden emin olmak için çıktıyı test edip test edebiliriz.
Ama bu bile o kadar ayrıntılı değil. Kontrol ediyorsun localhost
ve rapor ediyor 200, yanlış bir şey yok mu? Kunduzlar httpd'yi (ancak sistemin geri kalanını değil) besleyen ağ kablosu üzerinden çiğnenmişse? Sonra ne?! Gerçekte moralsizken çalışma süresini rapor ediyorsunuz. Çok az şey yanlış durum verilerinden daha profesyonel gözüküyor.
Öyleyse harici bir sunucuyla konuşalım (ideal olarak tamamen farklı bir bağlantıda, uzaktaki başka bir galaksideki) ve sunucumuzu sorgulamasını isteyelim:
$ ssh tank 'wget --spider -S "http://bert" 2>&1' | awk '/HTTP\// {print $2}'
200
Bu noktada, bildirilen herhangi bir sorun uygulama içi sorunlardır (kendi hata işleme ve raporlama işlemlerine sahip olabilirler veya müşterinin sonundadırlar).
Bu testlerin bir kombinasyonu, sorunun da nerede olduğunu tespit etmenize yardımcı olabilir.
Services komutunu evrensel olarak çoğu Linux dağıtımında kullanabilirsiniz.
$ service <service> status
$ service httpd status
httpd (pid 23569) is running...
Bu aynı komut, bireysel olarak çalışan tüm servisler için veya tüm servislerin durumunu bulmak için kullanılabilir.
$ service --status-all
python is stopped
automount (pid 22457) is running...
Avahi daemon is not running
Avahi DNS daemon is not running
crond (pid 23577) is running...
gpm is stopped
hald is stopped
httpd (pid 23569) is running...
...
Daha tipik hizmet yönetimi çerçevelerinden birini kullanıyorsanız, her birinin içindeki hizmetleri listelemek için aşağıdaki yöntemleri kullanabilirsiniz.
sysvinit
$ ls -l /etc/init.d/ | head -10
total 220
-rwxr-xr-x 1 root root 1422 Jan 13 2009 ajaxterm
-rwxr-xr-x 1 root root 3052 Apr 20 2012 autofs
-rwxr-xr-x 1 root root 1877 Apr 13 2011 avahi-daemon
-rwxr-xr-x 1 root root 1824 Apr 13 2011 avahi-dnsconfd
-rwxr-xr-x 1 root root 1926 Feb 22 2012 crond
-rwxr-xr-x 1 root root 14291 Dec 19 2011 functions
-rwxr-xr-x 1 root root 1778 Jan 6 2007 gpm
-rwxr-xr-x 1 root root 1586 Mar 5 2011 haldaemon
-rwxr-xr-x 1 root root 5742 Dec 19 2011 halt
systemd
$ systemctl list-unit-files --type=service | head -10
UNIT FILE STATE
abrt-ccpp.service enabled
abrt-oops.service enabled
abrt-pstoreoops.service disabled
abrt-vmcore.service enabled
abrt-xorg.service enabled
abrtd.service enabled
accounts-daemon.service enabled
alsa-restore.service static
alsa-state.service static
sonradan görme
$ initctl list | head -10
avahi-daemon start/running, process 1090
mountall-net stop/waiting
nmbd start/running, process 2045
passwd stop/waiting
rc stop/waiting
rsyslog start/running, process 1088
tty4 start/running, process 1211
udev start/running, process 483
upstart-udev-bridge start/running, process 480
ureadahead-other stop/waiting