2011-01-25 3 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 “.” 
      ;; 
    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 

Я хочу знать, что именно эта часть:

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

делает, потому что другая часть является то же самое! Please;)

ответ

8

Какая часть другая? Как работает этот скрипт, он проверяет значение $1, что является первым параметром для сценария, поставляемого в командной строке. Если это «start», то выполняется после 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 записывает свой идентификатор процесса в файл в/var/run. Задние выходы заставляют скрипт внутри них исполняться оболочкой, и результат используется на своем месте.

Конечным результатом является то убить [Sshd PID]

1

Часть вы упоминаете запускает программу "sshd". Это демон Secure Shell (SSH) (серверный процесс).

В зависимости от аргумента командной строки ваш скрипт запускает, останавливает или перезапускает SSH-сервер. $1 представляет аргумент командной строки, и это значение сравнивается с различными возможными значениями между case и esac.

1

test –f /usr/bin/sshd часть возвращает true, если файл существует.|| - или, поэтому || exit 0 будет выполнен (завершение сценария) только в том случае, если первая часть вернула false.

В части case "$1"$1 является первым аргументом, переданным скрипту.

1

«Я хочу знать, что именно эта часть ... делает, потому что другая часть - то же самое!»

старт) предполагает, что sshd еще не запущен и не запускает его.

Это отличается от restart), который сначала останавливает процесс sshd (как описывает Джо), а затем снова запускает его.

Смежные вопросы