回答:
ほとんどの人は、initシステムを介してhttpd(Apache、Nginxなど)を実行します。パッケージからインストールした場合、ほぼ確実にそうなります。これらのinitシステムのほとんどすべてに、実行中のメソッドが機能することがあります。私の場合、SysVスタイルの初期化スクリプトを出荷しstatus
、次のように引数を受け入れるnginxを使用しています。
$ /etc/init.d/nginx status
* nginx is running
異なるhttpd、スクリプト、またはinitシステムを実行している場合、明らかに構文が少し異なりますが、httpdを手動で起動する(世界で最悪のアイデアのように感じる)場合を除き、おそらく、状態を照会できる素敵な管理された起動スクリプトを使用しています。
slmの答えには、この種のinitクエリについての詳細が含まれていますが、信頼の問題は、プロセスがまだ実行されているかどうかを実際に伝えるだけです。httpdのメインプロセスは実行されている可能性がありますが、何らかの方法でデッドロックが発生しています。単純な初期化テストをスキップして、動作テストに進むことは非常に理にかなっています。
httpdsについて知っていることの1つは、彼らが聞くことです。通常はport *:80
にありますが、そうでない場合は、コードに続くコードを適応させることができます。ここでは、正しいポートでリッスンしているかどうかを確認awk
するために、出力を行っ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
また、どのプロセスが実行されているかをチェックして、正しい httpdが実行されていることを確認することもできます。あらゆる種類のチェックを行うことができます。あなたがどのくらい妄想的になりたいかに依存します:)
しかし、それでもhttpdの反映にすぎません。本当にテストしたいですか?それではテストしましょう。
$ wget --spider -S "http://localhost" 2>&1 | awk '/HTTP\// {print $2}'
200
応答コードを見ているだけです(200は "A-Okay!"を意味します)でも、出力を掘り下げて実際にテストし、出力が正しく生成されていることを確認できます。
しかし、これでもそれほど徹底的ではありません。あなたはチェックしていてlocalhost
、それは200を報告しています、何も間違っていませんか?ビーバーがhttpdを提供するネットワークケーブル(システムの残りの部分ではない)を噛んだ場合はどうなりますか?じゃあ何?!実際にダウンしているときにアップタイムを報告しています。誤ったステータスデータよりも専門的ではないものはほとんどありません。
それでは、外部サーバー(理想的には完全に異なる接続、遠く、遠くの別の銀河)に話しかけ、サーバーに照会するように依頼しましょう。
$ ssh tank 'wget --spider -S "http://bert" 2>&1' | awk '/HTTP\// {print $2}'
200
この時点までに報告された問題は、アプリ内の問題(独自のエラー-handlingおよび-reportingを持つか、クライアント側で発生する可能性があります)のいずれかです。
これらのテストの組み合わせは、問題がどこにあるかを特定するのに役立ちます。
ほとんどのLinuxディストリビューションでは、servicesコマンドを普遍的に使用できます。
$ service <service> status
$ service httpd status
httpd (pid 23569) is running...
この同じコマンドを、個別に実行されているすべてのサービスに使用したり、すべてのサービスのステータスを検索したりできます。
$ 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...
...
より一般的なサービス管理フレームワークのいずれかを使用している場合、次の方法を使用して各サービス内のサービスをリストできます。
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
システム化
$ 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
新興企業
$ 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