2011-01-25 48 views
1

誰でもこのスクリプトの正確な内容を教えてください。他の部分は同じであるため、Linuxスクリプトの起動、停止、再起動

#! /bin/sh 
test –f /usr/bin/sshd || exit 0 
case “$1” in 
    start) 
      echo –n “Starting sshd: sshd” 
      /usr/sbin/sshd 
      echo “.” 
      ;; 

はありません:私はまさにこの部分を知りたい

#! /bin/sh 
test –f /usr/bin/sshd || exit 0 
case “$1” in 
    start) 
      echo –n “Starting sshd: sshd” 
      /usr/sbin/sshd 
      echo “.” 
      ;; 
    stop) 
      echo –n “Stopping sshd: sshd” 
      kill `cat /var/run/sshd.pid` 
      echo “.” 
      ;; 
    restart) 
      echo –n “Stopping sshd: sshd” 
      kill `cat /var/run/sshd.pid` 
      echo “.” 
      echo –n “Starting sshd: sshd” 
      /usr/sbin/sshd 
      echo “.” 
      ;; 
     *) 
      echo “Usage: /etc/init.d/sshd start|stop|restart” 
      exit 1 
      ;; 
    esac 

! お願い))

答えて

8

どの部分が同じですか?スクリプトが動作する方法は、コマンドラインで提供されるスクリプトの最初のパラメータである$1の値をチェックすることです。それが「開始」の場合、start)の後の部分が実行されます。それが '停止'の場合、stop)の後の部分が実行されます。 「再起動」の場合、restart)以降の部分が実行されます。その最初の部分のためのラインで

ライン:ねえ、それはシェルスクリプト

#! /bin/sh 

です!具体的には、shシェルを使用してこのスクリプトを実行します。

test –f /usr/bin/sshd || exit 0 

/usr/bin/sshdと呼ばれるファイルはありますか?そうでない場合は、0の戻り状況で終了します。

case “$1” in 

最初のコマンドラインオプションの$1の値を確認してください。

start) 

$1の場合は、 'スタート' ...

  echo –n “Starting sshd: sshd” 

印刷 "Starting sshd: sshd" です。

  /usr/sbin/sshd 

/usr/sbin/sshdを実行します。

  echo “.” 

.」と印刷します。

  ;; 

caseステートメントを終了します。

+0

ありがとうございます、あなたは非常に明確です;) – Erma

1

sshdはプロセスIDを/ var/runにファイルに書き込みます。バックチックは、それらのスクリプトがシェルによって実行され、その結果がその場所で使用されます。

最終的な結果は、あなたが言及部分は "SSHD" プログラムを開始し

1

を[SSHDのPID]を殺すです。これはSecure Shell(SSH)デーモン(サーバープロセス)です。

スクリプトは、コマンドライン引数に応じて、SSHサーバを起動、停止、または再起動します。 $1はコマンドライン引数を表し、この値はcaseesacの間の異なる可能な値と比較されます。

1

test –f /usr/bin/sshd部分は、ファイルが存在する場合はtrueを返します。||またはであるため、|| exit 0は最初の部分がfalseを返した場合にのみ実行されます(スクリプトの終了)。

case "$1"部分では、$1がスクリプトに渡される最初の引数です。

1

「他の部分が同じなので、この部分が正確に何をしているか知りたい!

start)は、sshdがまだ起動されていないことを前提としています。

これはrestartとは異なります)は、最初にsshdプロセスを停止し(Joeが説明しているように)、それを再び開始します。

関連する問題