Как запустить команду при запуске для сервера Ubuntu 18.04? - PullRequest
0 голосов
/ 12 мая 2019

Я хочу выполнить команду при запуске экземпляра EC2.AMI экземпляра: Ubuntu Server 18.04 LTS (HVM), SSD Volume Type.

Ниже перечислены методы, которые я пробовал:

  1. Создайте сценарий с именем test.sh в /etc/init.d/.

  2. sudo chmod +x /etc/init.d/test.sh

  3. sudo chown root.root /etc/init.d/test.sh

  4. sudo update-rc.d test.sh defaults

  5. Остановите экземпляр EC2.

  6. Запустите экземпляр EC2.

Вот содержимое test.sh:

#!/bin/bash

echo hello > /home/ubuntu/test.log

Я ожидал, что увижу файл test.log в /home/ubuntu.Но я не смог найти файл.

Я также пытался добавить echo hello > /home/ubuntu/test.log в /etc/rc.local файл.Но это не работает, просто так.

Другой метод, который я попробовал, - это добавление echo hello > /home/ubuntu/test.log к пользовательским данным.Это тоже не работает.

enter image description here

Я нашел строку с надписью 2019-05-13 03:23:18,162 - __init__.py[WARNING]: Unhandled non-multipart (text/x-not-multipart) userdata: 'b'echo hello > /home/ubunt'...' в /var/log/cloud-init.log.Но это всего лишь предупреждение, а не сообщение об ошибке.

Что может быть не так с моей конфигурацией?

Есть ли какие-либо журналы ошибок на EC2?

Ответы [ 2 ]

0 голосов
/ 13 мая 2019

Я следовал этому документу , чтобы успешно выполнить команду при запуске.

Я поместил скрипт в данные пользователя.Вот мои данные пользователя:

Content-Type: multipart/mixed; boundary="//"
MIME-Version: 1.0

--//
Content-Type: text/cloud-config; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="cloud-config.txt"

#cloud-config
cloud_final_modules:
- [scripts-user, always]

--//
Content-Type: text/x-shellscript; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="userdata.txt"

#!/bin/bash
/bin/echo hello > /home/ubuntu/test.log
--//

/bin/echo hello > /home/ubuntu/test.log будет срабатывать при каждой загрузке.Это потому, что SCRIPTS-USER установлен на ALWAYS.

0 голосов
/ 12 мая 2019

Вместо использования этой команды:

sudo update-rc.d /etc/init.d/test.sh defaults

используйте следующее:

sudo update-rc.d test.sh defaults

Подразумевается, что файл находится в /etc/init.d, поэтому любой путь, переданный в качестве аргумента команды, интерпретируется как путь относительно этой папки.

...