定期的にソケットの状態を観察したいので、コマンドを介してソケットの状態を確認する必要があります。
現在、すべてのリスニングソケットをリストしss
ますgrep
。
ss -l | grep -q /run/php/php7.0-fpm.sock
ソケットの状態を確認するより良い方法はありますか?
ベストアンサー1
接続を試み、接続を切断する前に何も渡さず、何も受け入れない場合は、いくつかの情報を取得できます。
socat -u OPEN:/dev/null UNIX-CONNECT:/run/php/php7.0-fpm.sock
少なくとも4つの可能な結果があります。
ソケットが存在しない場合、エラーは、
No such file or directory
終了状態はです1
。ソケットへの書き込みアクセス権がない場合、エラーは、
Permission denied
終了ステータスはです1
。この場合、プロセスが受信中かどうかは不明です。ソケットへの書き込みアクセス権があり、受信プロセスがない場合、エラーは、
Connection refused
終了ステータスはです1
。ソケットへの書き込み権限があり、プロセスがリッスンしている場合は接続が確立されます。このコマンドは何も送信せず(たとえば
cat /dev/null
)、何も受信しようとしないため、-u
ほとんどすぐに終了します。終了ステータスはです0
。短いですが、まだ接続が行われています。リスニングプロセスは、1つの接続のみを許可し、サービスを実行した後に終了するか、一度に1つずつ接続を許可するように構成できます。この場合、プロービング接続が最大化されます。これは望ましくありません。しかし、実際には、ほとんどのリスニングプロセスが複数の接続をサービスし、切断されたクライアントを無慈悲に処理できると期待しています。
メモ:
- 終了ステータスを生成する状況を区別するには、stderrを解析する必要があります
1
。 - プロセスは、自分が聞いているという事実をどのプロセスにも知らせません。