2

Я установил скрипт выключения в системе Ubuntu, который не выполняется. Это экземпляр Amazon EC2. Я не уверен, что это связано с этим фактом, просто хотел указать на это.

Сценарий должен отправить некоторые файлы журнала в корзину Amazon S3, поэтому он должен выполняться при работающей сети.

Вот как я установил скрипт:

1) Создайте файл в /etc/init.d/push-apache-logs-to-s3.sh с необходимыми командами.

2) Сделал его исполняемым с помощью sudo chmod +x push-apache-logs-to-s3.sh

3) Выполнено sudo update-rc.d push-apache-logs-to-s3.sh start 0 0 .

Выход из вышесказанного составил:

update-rc.d: warning: /etc/init.d/push-apache-logs-to-s3.sh missing LSB information
update-rc.d: see <http://wiki.debian.org/LSBInitScripts>
 Adding system startup for /etc/init.d/push-apache-logs-to-s3.sh ...
   /etc/rc0.d/S00push-apache-logs-to-s3.sh -> ../init.d/push-apache-logs-to-s3.sh

Содержимое /etc/rc0.d/ теперь:

lrwxrwxrwx  1 root root   17 Jul 31  2012 K09apache2 -> ../init.d/apache2
lrwxrwxrwx  1 root root   29 Jun 16  2012 K10unattended-upgrades -> ../init.d/unattended-upgrades
lrwxrwxrwx  1 root root   26 Jun 16  2012 K15landscape-client -> ../init.d/landscape-client
lrwxrwxrwx  1 root root   19 Apr 10 11:11 K20memcached -> ../init.d/memcached
-rw-r--r--  1 root root  353 Jul 26  2012 README
lrwxrwxrwx  1 root root   35 Jul 10 12:01 S00push-apache-logs-to-s3.sh -> ../init.d/push-apache-logs-to-s3.sh
lrwxrwxrwx  1 root root   18 Jun 16  2012 S20sendsigs -> ../init.d/sendsigs
lrwxrwxrwx  1 root root   17 Jun 16  2012 S30urandom -> ../init.d/urandom
lrwxrwxrwx  1 root root   22 Jun 16  2012 S31umountnfs.sh -> ../init.d/umountnfs.sh
lrwxrwxrwx  1 root root   20 Jun 16  2012 S35networking -> ../init.d/networking
lrwxrwxrwx  1 root root   18 Jun 16  2012 S40umountfs -> ../init.d/umountfs
lrwxrwxrwx  1 root root   20 Jun 16  2012 S60umountroot -> ../init.d/umountroot
lrwxrwxrwx  1 root root   14 Jun 16  2012 S90halt -> ../init.d/halt

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

Эти сценарии выполняются пользователем root? Что мне не хватает?

3 ответа3

1

Каково ожидаемое поведение при настройке сценария для запуска на S00? В моей системе нет сценариев с S00 , может быть, требуется минимум 1? Вы также явно не устанавливали start/stop, возможно, это вызывает проблемы. На всякий случай попробуйте

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

Если это по-прежнему не работает, пожалуйста, обновите ваш вопрос, указав, кто ваш скрипт (или хотя бы его заголовки), возможно, что-то там не так.


РЕДАКТИРОВАТЬ

Увидев сценарий, который вы разместили в своем другом вопросе, я вижу две возможные проблемы. Во-первых, у вас есть место в вашей линии Шебанга !# /bin/sh вместо #!/bin/sh .

Что еще более важно, почему вы используете sh вместо bash? sh не поддерживает source , не говоря уже о . в качестве псевдонима для источника. Вместо этого измените ваш скрипт для запуска с bash , это должно исправить это. На самом деле я не понимаю , почему это работает , когда вы запустите его вручную, . должен выдать ошибку:

$ sh
$ source foo
sh: 1: source: not found
$ bash
$ source foo
bash: foo: No such file or directory

Поцарапайте это, я был неправ, как указывал @gnp, dash действительно поддерживает . ,

1

Вы хотите, чтобы скрипт работал при выключении. Заменить старт с остановом следующим образом:

sudo update-rc.d push-apache-logs-to-s3.sh stop 0 0 .

Обратите внимание, что он получит предваренный K вместо S

0

Корень проблемы в том, что s3cmd не может прочитать свой конфигурационный файл. По какой-то неизвестной мне причине, во время изменения уровня запуска (0), когда init выполняет init-скрипты, очевидно, что пользователь root который запускает эти скрипты, не считается "настоящим" пользователем, поэтому у него нет "домашнего" каталога откуда s3cmd пытается прочитать конфиг .

Явное указание местоположения файла конфигурации с помощью --config=... решает эту проблему.

Спасибо за помощь и вклад от всех!

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