Я создал 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