Материал просмотрен 1,064 раз(а)

Как-то раз со мной поделились задачкой, которая весьма интересна:

bash

bash

В операционных системах с инициализацией в стиле Unix System V для переключения режимов функционирования используется уровень выполнения (runlevel), обозначаемый десятичной цифрой. Уровень выполнения определяет набор запускаемых служб и действий, выполняемых при переходе на него. При загрузке и инициализации система анализирует параметры командной строки ядра или конфигурационные файлы для выбора стандартного уровня выполнения (default runlevel). Вы занимаетесь аутсорсингом ит, и поступила задача написать программу (сценарий) анализа конфигурационных файлов из архива etc.tar.gz каталога /etc системы Ubuntu 12.04 для определения начального уровня выполнения. Для упрощения предполагается, что в анализируемой конфигурации для задания уровня выполнения командная строка ядра не используется. Временные файлы при работе программы (сценария) создавать не разрешается.

Формат ввода

Файл etc.tar.gz, содержит архив файлов из каталога /etc анализируемой системы. Версия системы Ubuntu 12.04. При создании архива tar удалил из имен файлов ведущий /, поэтому в архиве находятся файлы с именами вида: etc/passwd etc/shadow etc/fstab … Содержимое архива etc.tar.gz можно получить открыв файл etc.tar.gz или прочитав его же содержимое со стандартного ввода.

Формат вывода

Десятичная цифра в кодировке ASCII, обозначающая стандартный уровень выполнения, заданный конфигурационными файлами системы во входном архиве. Выводить цифру можно на стандартный вывод или в файл output.txt

Мне удалось решить эту задачку для Debian, а потом, с помощью человека, приславшего её и для Ubuntu (разница небольшая). А вы сможете? Решение