apache と systemctl ステータス

apache と systemctl ステータス

当社では SUSE Linux Enterprise を使用しています。
これで最初の SLES 12 マシンを入手しました (これは systemd が使用される SLES の最初のバージョンです)。

「開始」、「停止」、「再起動」は機能しているが、「ステータス」はもうカバーされていないと誰かが言っているリンクを見つけました。

http://comments.gmane.org/gmane.comp.sysutils.systemd.devel/3050

-- ExecStatus のようなものですか?
いいえ、ありません。systemd 自体にそれを統合する必要はほとんどないので、独立したツールを提供するのが最善です。

つまり、この人は「systemctl status someservice」はもうカバーされていないと言っているようなので、別のツールを使う必要があるようです。

しかし、 と入力するとsystemctl status apache2、次のように動作します。

systemctl status apache2
apache2.service - The Apache Webserver
   Loaded: loaded (/usr/lib/systemd/system/apache2.service; disabled)
   Active: inactive (dead)

「systemclt status apache」がまだ機能している状態をどうやって実現したのでしょうか?

答え1

systemd には、基本的なものを処理するいくつかのモニター タイプがあります。一般的なモニターは、「systemd によって開始されたプロセスがまだ実行中かどうか」です。これは、構成データ、ログ行などとともに、systemctl によって報告される情報です。

$ systemctl status httpd
* httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
   Active: active (running) since Fri 2016-06-03 09:27:28 EDT; 2 weeks 3 days ago
     Docs: man:httpd(8)
           man:apachectl(8)
  Process: 484 ExecReload=/usr/sbin/httpd $OPTIONS -k graceful (code=exited, status=0/SUCCESS)
 Main PID: 784 (httpd)
   Status: "Total requests: 0; Current requests/sec: 0; Current traffic:   0 B/sec"
   CGroup: /system.slice/httpd.service
           |- 532 /usr/sbin/httpd -DFOREGROUND
           |- 533 /usr/sbin/httpd -DFOREGROUND
           |- 534 /usr/sbin/httpd -DFOREGROUND
           |- 535 /usr/sbin/httpd -DFOREGROUND
           |- 536 /usr/sbin/httpd -DFOREGROUND
           |- 784 /usr/sbin/httpd -DFOREGROUND
           `-2677 /usr/sbin/httpd -DFOREGROUND

Jun 17 03:49:13 SERVER systemd[1]: Reloaded The Apache HTTP Server.
Jun 19 03:17:03 SERVER systemd[1]: Reloaded The Apache HTTP Server.
Warning: Journal has been rotated since unit was started. Log output is incomplete or unavailable.
Hint: Some lines were ellipsized, use -l to show in full.

systemd が処理できないのは複雑なことです (「アプリケーションがデータベースと通信して、良い結果を提供できるか」)。従来の init スクリプトでは、「status」呼び出しでほぼ何でもできます。systemd では組み込みタスクに制限されます。

関連情報