次のようにサービスを再起動することを確認しました。
service sshd restart
次のことと非常に似ています。
pkill -HUP sshd
しかし、pkillは私のSSHセッションを閉じてサービスを再起動すると、そのセッションは開いたままになります。私の質問があります。サービスを再起動すると、pkillコマンドのように実際のHUPが送信されますか?同じ操作を実行している場合、サービスを再起動するとSSHセッションが開いたままになりますが、pkillがそれを閉じるのはなぜですか?
ベストアンサー1
いいえSIGHUP
、おそらくあなたの考え方ではないでしょう。
以前(1970年代)、ターミナルはシリアルラインを介してUNIXシステムに接続されたデバイスでした。当時、大規模な電話接続料を支払うよりも2台目のコンピュータを購入する方が高価でしたので、モデム回線を使用すると、遠く離れた人とコンピュータを共有できました。
マシンジョブが終了したら、実行中のすべてのジョブが停止していることを確認することが非常に必要です。なぜなら、当時のマシンには、今日のマシンが持っているのと同じ量のリソースがなかったからです。モデムが切断された場合は、シリアルラインに接続されているプロセスに信号を送信してこれを行うことを忘れないでください。これは "hang up" シグナルで、その名前は と省略されますSIGHUP
。
ある時点で、誰かがコンピュータのユーザーにいくつかのサービスを提供するためにプロセスを継続的に実行することが時折合理的であることがわかりました。プロセスを継続的に実行するには、プロセスを開始した端末からプロセスを分離する必要があります。これにより、ユーザーが切断され、モデムが切断されても、プロセスは実行されません。殺された。また、プロセスがシリアルラインから切り離されていないと、端末は解放されず、それを使用したい次のユーザーは利用できなくなります。だから、この理由であなたは別れるでしょう。
これで、ある時点で再構成する必要がある長期実行プロセスが作成されました。再起動するか、プロセスに設定ファイルを頻繁にポーリングさせることができます。しかし、どちらもリソースを無駄にします。設定ファイルをいつ読み直すべきかを教えていただければ、より良いでしょう。このシグナルはデーモンには意味がないので、再利用するのはどうでしょうか?はい、そのようなことが起こり、今日のコンベンションが実際にデーモンによって受信されていることがわかりましたSIGHUP
。
しかし、これは単なる慣例であり、一般的な法則ではありません。文書化された主な目的は、SIGHUP
端末が切断されたことを示すことです。したがって、SIGHUP
プロセスがデーモンであっても信号を受信すると、すべてのプログラムのデフォルトの動作はまだ終了します。
したがって、init
実装できないSIGHUP
管理する任意のプロセスに送信できます。はい、ほとんどの場合、再ロード操作は、SIGHUP
initシステムの設定(initスクリプト、システム単位ファイル、upstart設定、またはその他の設定など)を介してデーモンプロセスに送信されます。考えるこれはいつも起こっているので、両方が同じであると言うのも正しくありません。
時々、これは端末SIGHUP
に送信されたコマンドがセッションを終了する理由を説明します。これは、sshdが何かが接続を終了したと仮定して終了する必要があるためです。sshd