私はLinuxが初めてで、Amazon Lightsailインスタンス(Ubuntu 16.04 LTS)を使用して自分自身をテストしています。
私が出会った多くのガイドを調べてみると、サービスを開始/停止/再起動/リロード/ステータスチェックするためにさまざまなコマンドを使用している人々がいます。具体的にはこれら。
Sudo systemctl status Apache2.service
Sudo /bin/systemctl status Apache2.service
Sudo /etc/init.d/Apache2 status
Sudo service Apache2 status
上記のすべてのコマンドが機能します。
Monitでinit.dを使用すると、ステータスオプションを使用するときに問題が発生しました(ステータスは、サービスが実際にオンラインだったときにオフラインになり、Monitによって再起動されます)。 Monitのコードをinid.dから/ bin/systemctlに変更して修正しました。
Init.dを使用すると、他の人が何が起こったのかに関する詳細な情報が得られるようです。他のコマンドのいずれかを使用する必要がある場合、何が行われたかに関する詳細情報を表示させることは可能ですか?
ubuntu@ip-172-26-12-245:~$ Sudo systemctl restart pure-ftpd.service
ubuntu@ip-172-26-12-245:~$ Sudo /bin/systemctl restart pure-ftpd.service
ubuntu@ip-172-26-12-245:~$ Sudo /etc/init.d/pure-ftpd restart
[ ok ] Restarting pure-ftpd (via systemctl): pure-ftpd.service.
ubuntu@ip-172-26-12-245:~$ Sudo service pure-ftpd restart
ubuntu@ip-172-26-12-245:~$
この質問を読んで返信するために時間を割いてくれたすべての人に事前に感謝したいと思います。
開始するには、SysVInit
からSystemD
に移行するまでの歴史と闘争があります。しかし、1つの答えですべてを解こうとするのではなく、履歴の詳細とトピックに関する特定の記事については、Googleベンチャーを参照してください。
http://www.tecmint.com/systemd-replaces-init-in-linux/
しかし、要約すると、それは遅くて困難な移行でした。一部のレガシー機能はそのまま維持されました(init.d
など)。サービスコントロールにsystemctl
を使用するオプションがある場合は、それを使用することをお勧めします。 Linuxの予測可能な将来であり、最終的には古いSysVInit
メソッドは完全に非推奨と見なされ、削除されます。
具体的にリストしたそれぞれをカバーするには:
Sudo systemctl status Apache2.service
これは、サービスを処理する新しいSystemD
アプローチです。 Linuxのアプリケーションは、他のシステムではなくsystemdメソッドを使用するように設計されています。
Sudo /bin/systemctl status Apache2.service
これは前のコマンドと同じです。この場合の唯一の違いは、コマンドを見つけるためにシェルの$PATH
環境変数に依存せず、コマンドへのパスを含めることでコマンドを明示的にリストすることです。
Sudo /etc/init.d/Apache2 status
これは、サービスを呼び出す元のSysVInit
メソッドです。 Initスクリプトはサービス用に作成され、このディレクトリに配置されます。このメソッドはまだ多くの人が使用していますが、service
はSysVInit
のサービスを呼び出すこのメソッドに代わるコマンドでした。 SystemD
を備えた新しいシステムには、このためのレガシー機能がいくつかありますが、ほとんどの新しいプログラムにはこれが含まれておらず、古いアプリケーションの初期化スクリプトがすべて動作するわけではありません。
Sudo service Apache2 status
これは、サービスのSysVInit
システムで使用される主要なツールでした。場合によっては/etc/init.d/
スクリプトにリンクしているだけですが、別の場合には他の場所に保存されているinitスクリプトにリンクしています。これは、サービス依存関係処理へのスムーズな移行を提供することを目的としていました。
最後に、コマンドからより多くの情報を取得する方法を知りたいということに言及します。一部の情報は他の情報よりも多くの情報を提供するためです。これはほとんどの場合、アプリケーションと、それらがinitまたはサービスファイルをどのように設計したかによって決まります。原則として、黙って完了した場合は成功しました。ただし、start
、stop
、またはrestart
を検証するには、status
サブコマンドを使用して、その動作を確認できます。古いinitスクリプトでstatus
コマンドが間違っていると述べました。それはアプリケーション開発者が見なければならないバグです。ただし、initスクリプトはサービスを処理する非推奨の方法になっているため、initスクリプトオプションを完全に削除するまでバグを無視するだけです。 systemctl status
は常に正しく動作するはずです。そうでなければ、アプリケーション開発者にバグを記録する必要があります。