Запуск OpenStack Автопилот: Застрял & ldquo; ожидание машины & rdquo; пытаясь вызвать заклинание Пейзаж

Несмотря на то, что /proc упоминается кратко выше как источник информации для изучения процессов в системе, я включаю здесь базовый скрипт Bash для анализа некоторой информации из него. Для превосходного введения в виртуальную файловую систему /proc см. Эту статью IBM, в которой объясняется, как она может быть полезной как для пользователей, так и для программистов.

Анализ синтаксического кода /proc с общим сценарием может быть ненадежным, поскольку разные процессы часто имеют разные макеты /proc, но базовую информацию обычно можно почерпнуть с помощью этого скрипта, хотя ее, возможно, придется изменить, если вы хотите проанализировать любую другую конкретную информацию. Я написал его с помощью Bash, но есть более сильные синтаксические анализаторы, которые вы могли бы исследовать, если хотите написать его, используя другой язык сценариев.

Часто в выводе скрипта вы можете увидеть сообщение «отказано в разрешении», что означает, что местоположение /proc не читается $ USER, поэтому вы можете запустить скрипт как root, если хотите

Скопируйте тело сценария в новый файл, сохраните его и сделайте его исполняемым (chmod u+x), а затем вызовите его хотя бы одним аргументом (теперь он может обрабатывать несколько процессов одновременно):

./proc_script xfce4-panel

или поместить его в свой $HOME/bin, а затем вы можете запускать его, как и другие программы, если $HOME/bin находится на вашем пути. (Однако, если вы используете sudo, вам все равно придется указывать абсолютное расположение пути к сценарию, поскольку $HOME/bin не находится в корневом пути.)

Тело скрипта; он также доступен и обновлен в этой статье IBM :

#!/usr/bin/env bash  

(( $# == 0 )) && { printf "Usage: Please specify the name of one process \
to research.\n" >&2; exit 1; }

args=("$@")                   
for process in "${args[@]}"; do                    
    # store user input in a variable and warn then exit if program is not running
    queried_pid="$(pgrep "${process}" || { printf '%s\n' "No such program" >&2; })"

    # add the contents of the variable into an array
    pidarray=($(echo "$queried_pid"))

    # iterate over the array, however many pids have been found
    for i in "${pidarray[@]}"; do 
        printf "Pid is: %s\nExe is: %s\nCmdline is: %s\ncwd is: %s\n" "$(echo "$i")" \
    "$(stat -c %N /proc/"$i"/exe)" "$(cat /proc/"$i"/cmdline)" "$(cd /proc/"$i"/cwd/; pwd -P)"
    done
    printf "\n\n"
done

exit 

Пример вывода 1:

./proc_parse firefox


Pid is: 1830
Exe is: `/proc/1830/exe' -> `/usr/lib/firefox/firefox'
Cmdline is: /usr/lib/firefox/firefox
cwd is: /home/mike

Образец вывода 2 (имеющий дело с несколькими сообщениями ):

./proc_parse evince

Pid is: 3113
Exe is: `/proc/3113/exe' -> `/usr/bin/evince'
Cmdline is: evince/home/mike/Z_IBM_lpic_Linux_pdfs/l-proc-pdf.pdf
cwd is: /home/mike
Pid is: 3119
Exe is: `/proc/3119/exe' -> `/usr/lib/evince/evinced'
Cmdline is: /usr/lib/evince/evinced
cwd is: /

0
задан 11 July 2017 в 19:34

2 ответа

Не могу комментировать, но опубликует это как предложение.

Это случилось со мной в последнее время. Когда вы начинаете развертывать приложения, заклинание сначала будет развертывать Ubuntu на машинах, которые вы выбрали для приложений, используя MAAS, а затем настройте контейнеры LXD на этих машинах (если вы не решили). Вы можете контролировать статус развертывания из веб-интерфейса MAAS. Установка приложений не запускается, если Ubuntu не была успешно развернута на соответствующих машинах. Если ваши машины демонстрируют успешное развертывание, проверьте, установлены ли контейнеры LXD. Если нет, вам придется пройти через журналы на машинах, чтобы выяснить проблему.

Для меня развертывание Ubuntu было неудачным из-за неправильной конфигурации в BIOS компьютеров. Как только я это исправил, все прошло гладко.

0
ответ дан 18 July 2018 в 10:26

Не могу комментировать, но опубликует это как предложение.

Это случилось со мной в последнее время. Когда вы начинаете развертывать приложения, заклинание сначала будет развертывать Ubuntu на машинах, которые вы выбрали для приложений, используя MAAS, а затем настройте контейнеры LXD на этих машинах (если вы не решили). Вы можете контролировать статус развертывания из веб-интерфейса MAAS. Установка приложений не запускается, если Ubuntu не была успешно развернута на соответствующих машинах. Если ваши машины демонстрируют успешное развертывание, проверьте, установлены ли контейнеры LXD. Если нет, вам придется пройти через журналы на машинах, чтобы выяснить проблему.

Для меня развертывание Ubuntu было неудачным из-за неправильной конфигурации в BIOS компьютеров. Как только я это исправил, все прошло гладко.

0
ответ дан 24 July 2018 в 19:34
  • 1
    У меня нет проблем с успешным развертыванием моих машин, моя проблема - заставить Пейзаж работать. Пейзаж разворачивает изображение на втором узле, но загружает приложения. – Ciji Ramos 12 July 2017 в 23:12
  • 2
    Какая проблема заключалась в том, что вы столкнулись с BIOS? Вы вручную установили свои контейнеры LXD? У вас есть два сетевых адаптера для вашего узла MAAS? – Ciji Ramos 12 July 2017 в 23:14
  • 3
    Никакие контейнеры LXD не были автоматически настроены, и да, мой MAAS имеет два сетевых адаптера, из которых можно добраться до внешнего мира, а один подключен к внутренней сети, к которой подключаются мои компьютеры. Если это поможет, я использую MAAS для DHCP, DNS, а также шлюз по умолчанию для моих заказанных машин. Моя проблема с BIOS связана с настройкой управления питанием на некоторых очень старых машинах DELL. – AntiClimacus 12 July 2017 в 23:51
  • 4
    Можете ли вы попробовать выбрать другую машину для развертывания приложений с помощью «Архитектор»? вариант при запуске? Это может помочь исключить любые проблемы, связанные с машиной, которые блокируют вас. – AntiClimacus 12 July 2017 в 23:53
  • 5
    Ive исчерпал все эти опции @Hephaestus, я собираюсь отступить и посмотреть на мою конфигурацию сети. – Ciji Ramos 14 July 2017 в 19:22

Другие вопросы по тегам:

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