スーパーバイザーと永遠はもはや必要ありません。 システム化

この記事は、Debian 8 jessieに含まれているsystemdについてのものです。 Debianを使用しているので、私はDebianについて書いています。 私はsystemdがファンだからといって書いているわけではありませんが、いくつかのことが本当に嬉しいです。



それでは、なぜ監督され、永遠に不要になったのでしょうか?



スーパーバイザーとnodejsで書かれた類似物のタスクは永遠です:デーモン化されていないものを悪魔化し、落ちたときにレイズすることです。 現在、これらのタスクは通常のsystemdによって実行されます。 何がそんなに良いの? 少なくとも、追加のツールは必要ありません(ちなみに、この2つだけではありません)。そのような問題を解決するための通常のシステムツールがあります。



たとえば、クラッシュや強制終了が発生した場合に起動するようにsshdを設定するのは非常に簡単です。 sshdの.serviceファイルを見つける必要があります。 これを行うには、次を実行します。

root@lynx:~# systemctl status ssh ● ssh.service - OpenBSD Secure Shell server Loaded: loaded (/lib/systemd/system/ssh.service; enabled) Active: active (running) since Fri 2015-10-09 20:09:29 UTC; 55s ago Main PID: 26884 (sshd) CGroup: /system.slice/ssh.service └─26884 /usr/sbin/sshd -D Oct 09 20:09:29 lynx sshd[26884]: Server listening on 0.0.0.0 port 22. Oct 09 20:09:29 lynx sshd[26884]: Server listening on :: port 22.
      
      





実際、/ lib / systemd / system / ssh.serviceが必要なファイルです。 デフォルトのコンテンツは次のとおりです。

 [Unit] Description=OpenBSD Secure Shell server After=network.target auditd.service ConditionPathExists=!/etc/ssh/sshd_not_to_be_run [Service] EnvironmentFile=-/etc/default/ssh ExecStart=/usr/sbin/sshd -D $SSHD_OPTS ExecReload=/bin/kill -HUP $MAINPID KillMode=process Restart=on-failure [Install] WantedBy=multi-user.target Alias=sshd.service
      
      





[サービス]セクションには特別な[再起動]オプションがあり、どの場合にサービスを自動的に再起動するかを示しています。 そこに書くことができます:

 Restart=always
      
      





そして、クラッシュしたり、離陸しようとしないと、sshdが再起動します。 ファイルの変更を有効にするには、以下を行う必要があります。

 root@lynx:~# systemctl daemon-reload root@lynx:~# systemctl restart ssh
      
      





次に、サービスが機能していることを確認します。

 root@lynx:~# systemctl status ssh ● ssh.service - OpenBSD Secure Shell server Loaded: loaded (/lib/systemd/system/ssh.service; enabled) Active: active (running) since Fri 2015-10-09 20:09:29 UTC; 3min 58s ago Main PID: 26884 (sshd) CGroup: /system.slice/ssh.service └─26884 /usr/sbin/sshd -D Oct 09 20:09:29 lynx sshd[26884]: Server listening on 0.0.0.0 port 22. Oct 09 20:09:29 lynx sshd[26884]: Server listening on :: port 22.
      
      





sshdを強制終了して、再び開始する方法を見てみましょう。

 root@lynx:~# killall sshd root@lynx:~# systemctl status ssh ● ssh.service - OpenBSD Secure Shell server Loaded: loaded (/lib/systemd/system/ssh.service; enabled) Active: active (running) since Fri 2015-10-09 20:13:47 UTC; 1s ago Main PID: 14123 (sshd) CGroup: /system.slice/ssh.service └─14123 /usr/sbin/sshd -D Oct 09 20:13:47 lynx sshd[14123]: Server listening on 0.0.0.0 port 22. Oct 09 20:13:47 lynx sshd[14123]: Server listening on :: port 22.
      
      







ご覧のとおり、PIDは異なります。これは、sshdが実際に停止し、systemdが再び起動したことを意味します。



おめでとうございます! これで、killでsshdを強制終了できなくなり、sshdを強制終了してもsshを介してサーバーにアクセスできるようになります。



All Articles