3

Я использую Amazon Linux (дистрибутив на основе RH) в AWS EC2.

Я следовал структуре /usr/share/doc/initscripts-*/sysvinitfiles чтобы создать сценарий инициализации в /etc/init.d .

/etc/init.d/do_something

#!/bin/sh

# chkconfig: 3 90 10
# description: Description of the script

start () {
  echo -n "Doing something..." >> /opt/started.log
  RETVAL=$?
  echo
  [ $RETVAL = 0 ] && touch /var/lock/subsys/do_something
  return $RETVAL
}

stop () {
  echo -n "Stopping doing something..." >> /opt/stopped.log
  RETVAL=$?
  echo
  [ $RETVAL = 0 ] && rm -rf  /var/lock/subsys/do_something
}

case "$1" in
  start)
    start
    ;;
  stop)
    stop
    ;;
  restart)
    stop
    start
    ;;
  *)
    echo "Usage: $0 {start|stop|restart}"
    exit 1
    ;;
esac
exit $?

Затем я могу зарегистрировать его с помощью chkconfig, выполнив chkconfig --add do_something . Это создает символьную ссылку S в /etc/rc3.d . Однако K символьная ссылка не создается. Если я вручную создаю символическую ссылку и выключаю или перезапускаю экземпляр, системный сценарий выполняется должным образом.

Что я делаю неправильно и как я могу получить символическую ссылку K для генерации (чтобы мне не пришлось создавать ее вручную)?

1 ответ1

0

Я не эксперт вообще , когда речь идет о сценариях SysVinit. Но из того, что я могу сказать, если вы укажете, что initscript должен запускаться только на одном уровне выполнения (например, уровень выполнения 3), у вас будет S символических ссылок только в /etc/rc3.d и K символических ссылок во всех остальных /etc/rcX.d каталоги.

Скорее всего, ваш скрипт вызывается с stop при выключении; символьная ссылка K просто не находится там, где вы ожидали.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .