Сценарий инициализации LSB не выполнен

204
marekful

Я создал LSB-совместимый сценарий инициализации, который я собираюсь использовать для загрузки некоторых файлов журнала в корзину Amazon S3, когда система выходит из строя, но она не выполняется.

Вот содержимое скрипта в файле /etc/init.d/push-apache-logs-to-s3.sh(я заменил имя клиента на XXX):

#! /bin/sh ### BEGIN INIT INFO # Provides: push-apache-logs-to-s3 # Required-Start:  # Required-Stop: $local_fs $network # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Push Apache log files to S3 # Description:  ### END INIT INFO  PATH=/sbin:/usr/sbin:/bin:/usr/bin  . /lib/lsb/init-functions  do_stop () { LOG_DIR=/var/log/apache2/ BACKUP_DEST=s3://XXX-backups/api-logs EC2_ID=`wget -q -O - http://169.254.169.254/latest/meta-data/instance-id`  echo -n "Entering log directory..."  if cd $LOG_DIR then echo "OK" else echo echo "Cannot change directory... BACKUP ABORTED!" echo exit 3 fi  echo -n "Pushing log files to S3..."  # push log files if s3cmd put XXX-api_access.log* $BACKUP_DEST/$EC2_ID/ >/dev/null then echo "OK" else echo echo "LOG FILES COULD NOT BE MOVED TO S3! BAKCUP NOT COMPLETE!" echo exit 5 fi  echo "*** Backup finished at " `date` echo "-----------------------------------------------"  exit 0 }  case "$1" in start) # No-op ;; restart|reload|force-reload) echo "Error: argument '$1' not supported" >&2 exit 3 ;; stop) do_stop ;; *) echo "Usage: $0 start|stop" >&2 exit 3 ;; esac  : 

Вот команда, которую я использовал для ее установки:

sudo update-rc.d push-apache-logs-to-s3.sh start 01 2 3 4 5 . stop 01 0 1 6 . 

который обеспечил вывод:

 Adding system startup for /etc/init.d/push-apache-logs-to-s3.sh ... /etc/rc0.d/K01push-apache-logs-to-s3.sh -> ../init.d/push-apache-logs-to-s3.sh /etc/rc1.d/K01push-apache-logs-to-s3.sh -> ../init.d/push-apache-logs-to-s3.sh /etc/rc6.d/K01push-apache-logs-to-s3.sh -> ../init.d/push-apache-logs-to-s3.sh /etc/rc2.d/S01push-apache-logs-to-s3.sh -> ../init.d/push-apache-logs-to-s3.sh /etc/rc3.d/S01push-apache-logs-to-s3.sh -> ../init.d/push-apache-logs-to-s3.sh /etc/rc4.d/S01push-apache-logs-to-s3.sh -> ../init.d/push-apache-logs-to-s3.sh /etc/rc5.d/S01push-apache-logs-to-s3.sh -> ../init.d/push-apache-logs-to-s3.sh 

Скрипт использует s3cmdкоторый установлен и настроен в системе. s3cmdв /usr/bin/котором определяется как PATHв скрипте.

Когда я выполняю скрипт sudo ./push-apache-logs-to-s3.sh stop, он выполняет свою работу.

Любые предложения, что не так?

0
Пожалуйста, не перепечатывайте, это по сути [тот же вопрос] (http://superuser.com/q/617916/151431). Добавьте новую информацию к исходному вопросу, пожалуйста, я обновлю свой [ответ] (http://superuser.com/a/617931/151431) там, в чем (я думаю) ваша проблема здесь. terdon 10 лет назад 0
Вы можете попытаться перенаправить весь ваш вывод в файл журнала и посмотреть, будет ли что-нибудь записано. Это даст вам лучшее понимание того, где оно терпит неудачу. GnP 10 лет назад 1
@terdon Я создал новый пост, потому что ситуация полностью изменилась. Теперь у меня есть скрипт LSB, а когда опубликовано пред. вопрос у меня только что был скрипт "pure bash". marekful 10 лет назад 0
Кроме того, ни один из ответов на другой пост не приблизил меня к решению. marekful 10 лет назад 0
Я знаю, что обычно лучше не добавлять лишние вопросы. Смотрите мой обновленный ответ на ваш оригинальный вопрос, это помогает? terdon 10 лет назад 0

0 ответов на вопрос

Похожие вопросы