Назад | Перейти на главную страницу

Как проверить, действительно ли запущен сценарий подготовки, предоставленный bash?

Я использую Digital Ocean API для создания пары капель (их имя для сервера).

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

Здесь приводится пример:

https://www.digitalocean.com/community/tutorials/an-introduction-to-droplet-metadata

Откровенно говоря, мне просто нужно проверить, успешно ли запустился сценарий bash. Я знаю несколько громоздких способов проверить это, но надеюсь, что будет что-нибудь попроще.

Думаю, проще всего было бы просмотреть историю команд, которые выполнялись на машине, или что-то в этом роде. Возможно ли это для команд, запускаемых из сценария оболочки?

Я знаю history команда, но это работает только для команд, введенных пока ssh'ed в машину. На самом деле здесь не отображаются команды из моего сценария bash.

Надеюсь, кто-нибудь знает быстрый и простой способ просмотреть все команды, выполняемые на машине.

Ура.

Ваш сценарий должен что-то делать. Просто проверьте, действительно ли это произошло.

Если это почему-то невозможно, просто добавьте что-нибудь вроде

touch /tmp/mycheckfile 

до конца скрипта, а затем проверьте, присутствует ли этот файл. Просто, легко и быстро.

Обратите внимание, что это неправильная обработка ошибок, все, что она делает, - это проверка того, что сценарий был выполнен. Если вы положите set -e в верхней части скрипта, он также завершится при любой ошибке и, таким образом, не будет создавать файл, если что-то пошло не так в скрипте.

Если вы хотите стать более сложным, вы можете использовать все методы отчетов об ошибках и перенаправления вывода, которые позволяет bash, включая ведение журнала в системный журнал с logger команда.


Вы также можете вывести каждую строку, выполняемую вашим скриптом, с set -x. В DO вывод будет указан в системном журнале службы cloud-init. Вы также можете записать его в файл следующим образом:

#!/bin/bash
set -x 
{
   do-something
   do-something-else
} 2>/tmp/mylogfile

with приведет к следующему содержимому файла:

+ do-something
+ do-something-else

Обратите внимание, что я перенаправил STDERR вывод с 2>, так как эти строки будут отправлены в этот поток.