当社では 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 では組み込みタスクに制限されます。