8

Linuxでの私のテストから、次のようです

service sshd reload

  • sshdがすでに実行されている場合にのみ機能します
  • ファイルに問題がsshdある場合は停止しますsshd_config
  • sshd_config ファイルに問題がある場合でもエラー コード 0 を返します

service sshd restart

  • sshdがすでに実行されているかどうかに関係なく動作します
  • ファイルに無効な構文またはその他の問題があるsshd場合は停止しますsshd_config
  • sshd_configファイルに問題がある場合は、0 以外のエラー コードを返します

それらが異なる操作を実行していることは理解していますが、常に使用する必要があるのは簡単なことだと思いますservice sshd restartservice sshd reloadいくつかの状況で望ましい理由はありますか?

4

4 に答える 4

4

optが reload/restart の可能性があるservice sshdコマンドを実行すると、実際には次のように変更された環境でプログラムが実行されます。

    env -i PATH="$PATH" TERM="$TERM" "${SERVICEDIR}/${SERVICE}" ${OPTIONS}

例えば:

    env -i PATH=/sbin:/usr/sbin:/bin:/usr/bin TERM=xterm /etc/init.d/sshd reload

sshd コマンドは、両方の場合 (再起動/再読み込み) でほぼ同じことを行います。

reload:HUPシグナルを送信するプロセスを強制終了しようとします。スニペットでわかるように、それを行うにはプロセスのPIDが必要です。(sshd が既に実行されているかどうかに関係なく動作します)

    reload()
    {
        echo -n $"Reloading $prog: "
        if [ -n "`pidfileofproc $SSHD`" ] ; then
             killproc $SSHD -HUP
        else
             failure $"Reloading $prog"
        fi
        RETVAL=$?
        echo
    }

restart : stop->start を実行した場合と同じように動作します。

    restart() {
        stop
        start
    }

    start()
    {
         [ -x $SSHD ] || exit 5
         [ -f /etc/ssh/sshd_config ] || exit 6
         # Create keys if necessary
         if [ "x${AUTOCREATE_SERVER_KEYS}" != xNO ]; then
              do_rsa1_keygen
              do_rsa_keygen
              do_dsa_keygen
         fi

         echo -n $"Starting $prog: "
         $SSHD $OPTIONS && success || failure
         RETVAL=$?
         [ $RETVAL -eq 0 ] && touch $lockfile
         echo
         return $RETVAL
    }

    stop()
    {
         echo -n $"Stopping $prog: "
         if [ -n "`pidfileofproc $SSHD`" ] ; then
             killproc $SSHD
         else
         failure $"Stopping $prog"
         fi
         RETVAL=$?
         # if we are in halt or reboot runlevel kill all running sessions
         # so the TCP connections are closed cleanly
         if [ "x$runlevel" = x0 -o "x$runlevel" = x6 ] ; then
             trap '' TERM
             killall $prog 2>/dev/null
             trap TERM
         fi
         [ $RETVAL -eq 0 ] && rm -f $lockfile
         echo
    }
于 2013-08-30T20:16:42.267 に答える
0

上記の例のように、人々はsshdを使用しています。それはデーモンであり、サービスはsshです。正しい行は次のとおりです。

service ssh reload
于 2014-12-17T12:54:56.310 に答える
-1

この「リロード」は、複数のサービスを初期状態に戻すシェル スクリプトで使用できると思います。この場合、サービスが実行されているかどうかわからなかったので、これらすべてのサービスを「リロード」させました。

この場合に「再起動」を使用すると、使用しなかったサービスの一部が開始されます。

通常、単一のサービスの問題 (または変更) をデバッグするには、「sshd」などのこのサービスを開始します。このサービスが正常に実行されているかどうかを確認する必要がないため、「再起動」の方が適切です。

于 2016-08-02T20:06:46.737 に答える