Рисование конечного автомата от журналов

Я предполагаю, что основное преимущество (для меня) GRUB

  • Я не должен помнить выполнять 'lilo' после обновления ядра. GRUB имеет реальную поддержку файловых систем, таким образом, это может найти ядро на диске.
  • Командная строка. GRUB позволяет вводить командную строку, которая имеет тенденцию быть удобной, если я смешиваю с конфигурацией. Иногда это сохраняет живой.

Основные преимущества LILO:

  • Поддерживайте любую файловую систему как его обходные решения это понятие
  • Это является маленьким

Я сказал бы, что в 99% случаев Вы предпочитаете GRUB.

5
22.03.2011, 16:01
2 ответа

Я не положителен, что знаю то, что Вы имеете в виду, но Вы ищете что-то вроде этого?

Dot output

Я использовал Graphviz, который берет файлы ввода текста, описывающие переходы, и выясняет график автоматически. Вот точная команда:

$ sed 's/-/_/g' input | gawk '
    BEGIN {print "digraph g {"}
    END {print "}"}
    match($0, /from ([^ ]*) to ([^ ]*) \((.*)\)$/, groups) {
        print groups[1] " -> " groups[2] " [label = \"" groups[3] "\"];"
    }' > output.dot
$ dot -Tpng output.dot > output.png

Объяснение

  • sed 's/-/_/g' input - Точке не нравятся дефисы в имени узла, таким образом, я преобразовал их в символы нижнего подчеркивания
  • gawk - Стандарт awk не имеет match функция, которую имеет простофиля; можно сделать обработку строк любым путем, Вам нравится хотя (например, жемчуг другой хороший выбор),
    • BEGIN {print "digraph g {"} - Точечные спецификации запускаются с этой строки (название графика, "g", действительно не имеет значения),
    • END {print "}"} - Концы digraph g запущенный в НАЧАТЬ блоке
    • match($0, /from ([^ ]*) to ([^ ]*) \((.*)\)$/, groups) - Регулярное выражение, которое соответствует Вашему формату файла журнала; это хранит результаты в groups переменная
    • print groups[1] " -> " groups[2] " [label = \"" groups[3] "\"];" - Производит совместимую с точкой строку (например, A -> B [label = "C"]; покажет два узла, A, и B, с переходом между ними маркировал C)
  • dot -Tpng output.dot > output.png - Скажите graphviz преобразовывать точечный файл в PNG

Получающийся точечный файл

digraph g {
EXITING_RETURNSTD -> EXITING_STAGEOUT [label = "5_51"];
RUNNING_PRERUN -> RUNNING_RUNNING [label = "4_42"];
RUNNING_RUNNING -> EXITING_EXITING [label = "5_50"];
EXITING_EXITING -> EXITING_RETURNSTD [label = "5_70"];
EXITING_RETURNSTD -> EXITING_STAGEOUT [label = "5_51"];
RUNNING_RUNNING -> EXITING_EXITING [label = "5_50"];
}

PNG Вы добираетесь при прокручивании того файла dot выше

15
27.01.2020, 20:32
  • 1
    Спасибо, я понял, что сверхусложнял его в голове :-) Ваш ответ является потрясающим. –  Let_Me_Be 22.03.2011, 16:36
  • 2
    Это - большой ответ! –  Ramon Zarazua B. 23.03.2011, 11:03

Я работаю над инструментом, чтобы сделать точно, что Вы хотите - генерируют конечные автоматы от журналов. Инструмент называют Синоптическим, и можно узнать больше об этом здесь: http://code.google.com/p/synoptic/

1
27.01.2020, 20:32

Теги

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