kashapovd / linux-sysadmin-interview-questions

Collection of Linux Sysadmin/DevOps interview questions and my answers

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Вопросы для интервью системного администратора Linux/DevOps

Коллекция вопросов для собеседования linux сисадмина/devops. Не стесняйтесь добавлять свои через pull request'ы, issues или сообщением по электронной почте.

  1. Участники
  2. Простые вопросы о Linux
  3. Вопросы среднего уровня о Linux
  4. Сложные вопросы о Linux
  5. Вопросы экспертного уровня о Linux
  6. Вопросы по сетям
  7. Вопросы о MySQL
  8. Вопросы о DevOps практиках
  9. Забавные вопросы
  10. Время демо
  11. Другие ссылки
  • Какое имя и UID администратора?

    root. UID 0
    
  • Как посмотреть все файлы в каталоге, включая скрытые?

    ls -a
    
    Ключи:
      -a или --all включает опцию не игнорирования файлов и директорий, начинающихся с "." (то есть скрытых файлов)
    

    Источник

  • Какая команда в Unix/Linux удаляет каталог со всем его содержимым?

    rm -rf
    
    Ключи:
      -r, -R или --recursive включает опцию рекурсивного удаления
      -f или --force позволяет не подтверждать удаление, а также не выдавать ошибку, если файла не существует
    

    Источник

  • Какая команда в Unix/Linux показывает свободную/используемую память? Существует ли свободная память в Linux?

  • Как найти строку "my konfu is the best" в файлах каталога рекурсивно?

    grep -R "my konfu is the best" your-dir/
    
    Ключи:
      -R обрабатывает каждый файл в указанной директории рекурсивно
    

    Источник

  • Как подключиться к удаленному серверу или что такое SSH?

    SSH - протокол удалённого доступа с поддержкой шифрования соединений
    Подключиться к удалённому серверу:
      ssh username@host
      , где username - имя пользователя, под которым выполняется подключение
            host - IP-адрес или DNS-имя удалённого сервера
    
  • Как получить все переменные окружения и как их можно использовать?

    env
    
    Использовать можно для разных целей:
      - для определения расположения исполняемого файла в файловой системе (переменная окружения PATH)
      - передача дополнительных флагов в различные утилиты (например MAKEFLAGS=-j16 для make)
      - для передачи значений в приложения
    
  • Я получил "command not found" при запуске ifconfig -a. Что может быть не так?

    Возможны следующие проблемы:
    - утилита ifconfig не установлена (следует установить пакет net-tools)
    - неверно сконфигурирована переменная окружения PATH
    - неверные права исполняемого файла ifconfig
    
  • Что произойдет, если я нажму TAB-TAB?

    Многие командные оболочки резервируют двойное нажатие TAB для автоматического дополнения названий файлов, директорий, утилит. Можно настроить обочку таким образом, что она будет дополнять названия ключей утилит
    
  • Какая команда показывает доступное свободное пространство на диске в Unix/Linux?

    df -h
    
    Ключи:
     -h использовать человеко-читаемый вывод
    

    Источник

  • Какие команды вы знаете, которые могут быть использованы для проверки DNS записей?

    Следующие утилиты позволяют проверять DNS-записи:
      - host
      - dig
      - nslookup
    
  • Какая команда Unix/Linux используется для изменения владельца файла, прав доступа к файлу?

    Для изменения владельца файла используется chown
    Для изменения прав доступа используется chmod
    
  • Что делает команда chmod +x FILENAME?

    Команда chmod +x FILENAME активирует возможность исполнять файл FILENAME. FILENAME может быть скриптом или бинарным исполняемым файлом
    

    Источник

  • Что означают права 0750 для файла?

    Пример:
    -rwxr-x--- 1 yaroslav users 0 Jan 14 23:43 test-file (вывод команды ls)
    
    Данные права для файла test-file означают разрешить чтение, запись и исполнение файла его владельцу (yaroslav), разрешить чтение пользователям из группы users, а всем остальным не разрешать ничего.
    
  • Что означают права 0750 для каталога?

    Пример:
    drwxr-x--- 2 yaroslav users 4096 Jan 14 23:43 test-dir (вывод команды ls)
    
    Данные права для каталога test-dir означают разрешить чтение, запись и исполнение файлов из каталога его владельцу (yaroslav), разрешить чтение каталога пользователям из группы users, а всем остальным не разрешать ничего в этом каталоге.
    
  • Как добавить пользователя без прав входа в систему?

  • Как добавить/убрать пользователя в/из группы?

  • Что такое bash алиас?

    Bash alias - это псевдоним командной оболочки, который можно вызвать как команду. Может содержать название команды, ключей и т.п.
    Пример:
    alias ls='ls --color=auto'
    
  • Как установить email для пользователя root?

  • Что делает Ctrl+c?

  • Что содержится в файле /etc/services?

    В данном файле содержится соответствие сетевых портов и названий служб, которые на них функционируют
    

    Источник

  • Как перенаправить STDOUT и STDERR в bash?

  • Какая разница между UNIX и Linux?

    Между UNIX и Linux есть существенная разница: UNIX - это операционная система, тогда как Linux всего лишь ядро для ОС.
    
  • В чем разница между Telnet и SSH?

    Разница между Telnet и SSH в том, что первый протокол не использует шифрования для обеспечения удалённого доступа. Таким образом, пароли, вводимые в териминале, передаются в открытом виде (plain-text).
    
  • Объясните три усредненных значения load average и что они означают? Какой командой можно посмотреть load average?

  • Можете назвать букву в нижнем регистре, которая не является валидной опцией для GNU ls?

  • Что такое модуль ядра Linux?

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

  • Расскажите по шагам как вы будете решать проблему с ошибкой 404 в веб-приложении, которое вы обслуживаете.

  • Что делают следующие команды и как вы их будете использовать?
  • tee - позволяет разветвлять stdout. Например, можно одновременно записывать информацию в файл и выводить на экран
  • awk
  • tr
  • cut
  • tac
  • curl -
  • wget -
  • watch - позволяет наблюдать за результатом выполнения команды с указанием периодичности
  • head - позволяет посмотреть начало файла
  • tail - позволяет посмотреть конец файла
  • Что делает & в конце команды?
    "&" означает запустить утилиту в фоновом режиме, не выводя результат выполнения в текущий терминал.
    
  • Что делает & disown в конце команды?
  • Что такое пакетный фильтр и как он работает?
  • Что такое виртуальная память?
  • Что такое swap и для чего он используется?
Swap - это специальный раздел или формат файла, который используется для расширения текущей оперативной памяти за счёт накопителей данных.
  • Что такое A-запись, NS-запись, PTR-запись, CNAME-запись, MX-запись?
  • Знаете ли вы еще какие-либо RR-записи и для чего они используются?
  • Что такое Split-Horizon DNS?
  • Что такое sticky bit?
  • Что делает установленный на файл immutable bit?
  • Какая разница между символическими и жесткими ссылками? Что произойдет если удалить символическую/жесткую ссылку?
    Основная разница между символическими и жесткими ссылками в том, что символическая ссылка - это файл с указанием целевого файла или каталога (путь в ФС), а жеская ссылка ссылается непосредственно на индексный дескриптор файла. Если удалить сиволическую ссылку, то произойдёт удаление самой ссылки, а если жесткую - удаление файла с сооветствующим inode.
    
  • Что такое inode и какая информация хранится в inode?
  • Как принудительно запустить проверку файловой системы при следующей перезагрузке?
  • Что такое SNMP и для чего он используется?
  • Что такое уровень запуска и как узнать текущий?
  • Что такое SSH port forwarding?
  • Какая разница между локальным и удаленным пробросом портов SSH?
  • Какие шаги надо предпринять, чтоб добавить пользователя в систему не используя утилиты useradd/adduser?
  • Что такое MAJOR и MINOR нумерация спец. файлов?
  • Опишите команду mknod и когда она используется?
  • Опишите сценарий, когда вы можете получить ошибку "filesystem is full", но 'df' показывает наличие свободного места.
  • Опишите сценарий, когда вы удаляете файл,но 'df' не показывает, что место освободилось.
  • Опишите как работает 'ps'.
  • Что случиться, если процесс-потомок умрет и не будет процесса-родителя, ожидающего его и что в этом плохого?
  • Объясните кратко каждое из состояний процесса.
  • Как узнать какой процесс слушает указанный порт?
  • Что такое зомби-процесс и какова его причина возникновения?
  • Вы запускаете bash скрипт и хотите видеть его вывод на экране и одновременно сохранить этот вывод в файл. Как это сделать?
  • Объясните, что делает echo "1" > /proc/sys/net/ipv4/ip_forward.
  • Кратко объясните, какие шаги надо предпринять, чтоб создать и установить сертификат для сайта https://foo.example.com.
  • Можно ли создать несколько HTTPS виртуальных хостов, используя один IP?
  • Что такое wildcard сертификат?
    Wildcard сертификат - это сертификат, выпущенный ЦС для всех поддоменов одного уровня какого-либо домена.
    
    Пример:
    *.kashapovd.xyz - Wildcard сертификат для всех поддоменов третьего уровня домена kashapovd.xyz
    
  • Какие типы файловых систем в Linux вам известны?
  • В чем разница между процессом и потоком? И родительским и потомком процессами после системного вызова fork?
  • В чем разница между exec и fork?
    Exec - системный вызов, позволяющий загрузить исполняемую программу в процесс.
    Fork - системный вызов, создающий новый процесс на основе текущего (создаёт копию-ответвление).
    
  • Для чего используется nohup?
  • В чем разница между этими двумя командами?
  • myvar=hello
  • export myvar=hello
  • Как много NTP севреров настроено в вашем локальном ntp.conf?
  • Что означает колонка 'reach' в выводе ntpq-p?
  • Вам необходимо обновить ядро на 100-1000 серверах, как вы будете это делать?
  • Как можно получить Host, Channel, IS, LUN для SCSI диска?
  • Как можно ограничить использование памяти для процесса?
  • Что такое быстрый поиск и замена в bash (^x^y)?
  • Какие вы знаете альтернативные оболочки? Какую вы используете?
  • Что такое tarpipe (или, как вы будете копировать все, включая жесткие ссылки и специальные файлы, с одного сервера на другой)?
  • Как можно проверить, что пакет httpd уже был установлен?
  • Как посмотреть содержимое установочного пакета?
  • Как вы определите какой пакет лучше: openssh-server-5.3p1-118.1.el6_8.x86_64 или openssh-server-6.6p1-1.el6.x86_64?
  • Как вы можете объяснить мне разницу между хранилищем, основанным на блоках и объектах?
  • Что такое туннель и как вы можете обойти http прокси?
  • В чем разница между IDS и IPS?
  • Какие горячие клавиши вы используете регулярно?
    в терминале:
    Ctrl+l для очистки экрана
    Сtrl+c для сброса текущей команды
    Alt+стрелки для быстрого перемещения по словам 
    Ctrl+Backspace для удаления по словам
    
  • Что такое Linux Standard Base?
  • Что такое атомарная операция?
    Атомарная операция - операция, которая может быть выполнена без прерывания. Данное понятие часто рассматривается в теории операционных систем, так как при мультипрограммной организации выполняется планирование процессов, которые могут быть прерваны при выполнении различных операций, например, с разделяемой памятью.
    
  • Вы только что настроили http сервер, который не запустился после рестарта. Что вы будете делать?
    Посмотрю лог. Возможно я забыл активировать виртуальные хосты и т.д.
    
  • Какие ключи содержатся в ~/.ssh/authorized_keys и для чего нужен этот файл?
    В файле ~/.ssh/authorized_keys содержатся публичные ключи хостов, которым доверено подключаться по ssh с использованием ключей, а не по паролю. 
    
  • Я добавил свой публичный ключ в authorized_keys, но до сих пор получаю запрос пароля. Что может быть не так?
    Возможно аутентификация по ключу выключена в конфигурации ssh-сервера.
    
  • Вы когда-нибудь собирали RPM, DEB или solaris пакеты?
  • Что сделает :(){ :|:& };: с вашей системой?
    Это скрипт на bash. В более наглядном виде:
    :() {
      : | : &
    };
    :
    Данный скрипт рекурсивно вызывает по два экземляра функции :() каждый раз. Граф вызовов можно представить в виде бинарного дерева. 
    
  • Как можно перехватить Linux сигнал из скрипта?
    Перехват сигналов и их обработка осуществляется командой trap. Можно указать, какие ключи перехватывать и какую функцию-обработчик назначить.
    
  • Можно ли перехватить SIGKILL?
    Нет, сигнал SIGKILL не перехватывается.
    
  • Что происходит, когда ядро Linux запускает OOM killer и как он выбирает какой процесс необходимо убить в первую очередь?
    OOM-killer уничтожает процессы на основе очков, подсчитанных для процессов. Каждому процессу присваивается значение, которое записано в /proc/<pid>/oom_score_adj. Чем оно больше, тем более приоритетный данный процесс для уничтожения.  
    
  • Опишите процесс загрузки Linux с максимально возможным количеством деталей, начиная с момента включения компьютера и заканчивая получением приглашения командной строки.
    По этапам:
    1) В CPU встроен некий BROM - BOOT ROM, в котором находится небольшая программа, инициализирующая память и помещающая туда следующую программу загрузки. В зависимости от архитектуры это может быть загрузчик (например U-Boot) или UEFI.
    2) UEFI передаёт управление либо сразу ядру (см. EFISTUB), либо загружает очередной загрузчик (GRUB, systemd-boot), который на основании конфигурации передаёт управление ядру с необходимыми параметрами (как минимум параметр "root", указывающий на каком разделе находится корневой раздел ФС Linux).
    3)....
    
    
  • Что такое закрытие в chroot?
  • При попытке отмонтировать каталог получаем ошибку занятости, как найти какой PID держит каталог?
    Утилитой lsof:
      lsof <dir-name>
    
  • Что такое LD_PRELOAD и когда он используется?
    LD_PRELOAD используется для подмены shared-библиотек.
    Например, можно вызвать утилиту ls cо своей реализацией malloc():
      LD_PRELOAD=/path/to/my/malloc.so /bin/ls
    
  • Вы запустили бинарник и ничего не произошло. Как вы будете искать проблему?
  • Что такое cgroups? Можете ли вы указать сценарий, когда это может быть использовано?
    cgroups - это фича ядра для ограничения процессов по памяти и cpu
    
  • Как можно удалить файл, имя которого содержит непечатные символы?
  • Как можно увеличить/уменьшить приоритет процесса в Linux?
    Из пространства пользователя сменить приоритет можно утилитой renice.
    
  • Что такое run-levels в Linux?
  • Запущенный процесс получает EAGAIN: Resource temporarily unavailable при чтении сокета. Как можно закрыть этот плохой сокет/файловый дескриптор без убивания процесса?
  • Что такое localhost и почему ping localhost может не работать?
    localhost - это, как правило, алиас на адрес 127.0.0.1. Не работать он может по причинам:
      - отсутствует loop-интерфейс
      - не настроен /etc/hosts
    
  • В чем сходство между "ping" и "traceroute"? Как traceroute находит промежуточные хосты?
    Сходство в том, что "под капотом" этих утилит используется один и тот же протокол - ICMP. 
    
  • Какую команду можно использовать для поиска всех открытых портов и/или соединений с сокетами на машине?
    Можно использовать утилиту netstat или ss. Также утилита lsof позволяет просматривать "Интернет-файлы" (ключ -i).
    
  • Валидный ли IP адрес 300.168.0.123?
    Нет, так как наибольшим значением любого октета IP-адреса является 255. 
    
  • Какие IP диапазоны/подсети являются частными или не маршрутизируемыми (RFC 1918)?
    192.168.0.0/16
    172.16.0.0/12
    10.0.0.0/16
    
  • Что такое VLAN?
    VLAN - технология виртуальных локальных сетей (Virtual LAN) позволяет разделять один широковещательный домен на подмножество других, изолированных друг от друга 
    
  • Что такое ARP и для чего используется?
    Протокол ARP используется на канальном уровне модели OSI для сопоставления MAC-адреса и IP-адреса хостов. 
    
  • В чем разница между TCP и UDP?
  • Какова цель шлюза по умолчанию?
    Целью шлюза по умолчанию является выполнение маршрутизации трафика в другие сети
    
  • Какая команда используется для просмотра таблицы маршрутизации в Linux?
    ip r
    
  • TCP-соединение в сети может быть однозначно определено четырьмя вещами. Что это за вещи?
    ip src
    ip dst
    port src
    port dst
    
  • Когда клиент использует бразер для подключения к веб-серверу, какие порты источника и назначения будут у этого соединения?
    Порт назначения: стандартный 80 для http и 443 https. Но возможны и другие, всё зависит от конфигурации веб-сервера.
    Порт источника: будет случайно взят из пула свободных портов при установке соединения.
    
  • Как можно добавить IPv6 адрес для конкретного интерфейса?
  • Вы добавили IPv4 и IPv6 адреса на eth0 интерфейс. Ping на v4 адрес работает, но ping на v6 адрес дает ответ sendmsg: operation not permitted. Что может быть не так?
  • Что такое SNAT и когда он должен быть использован?
  • Объясните, как можно войти по ssh на Linux сервер, который сбрасывает (DROP) все новые входящие пакеты, используя SSH туннель.
  • Как вы будете противодействовать DDoS атаке?
  • Как можно посмотреть содержимое ip пакета?
    Утилитой tcpdump
    
  • Что такое IPoAC (RFC 1149)?
  • Как создать пользователя?
    CREATE USER '<username>'@'<source>' IDENTIFIED BY '<password>',
    где username - имя пользователя
        source   - определяет, будет ли возможно подключение к базе данных с иных хостов, помимо хоста, на котором есть БД
        password - пароль пользователя
    Например:
    CREATE USER 'yaroslav'@'localhost' IDENTIFIED BY 'P@ssw0rd'
    CREATE USER 'yaroslav'@'%' IDENTIFIED BY 'P@ssw1rd'
    
  • Как предоставить права пользователю?
    GRAND ALL PRIVILIGES ON 'table' TO '<username>'@'<source>' IDENTIFIED BY '<password>',
    где table - таблица базы данных
    
    
  • В чем разница между 'left' и 'right' join?
  • Объясните кратко разницу между InnoDB и MyISAM.
  • Зачем надо запускать "mysql_secure_installation" после установки MySQL?
  • Как проверить какие задачи запущены?
  • Как вы делаете бекап MySQL?
  • Как вы можете описать ваш workflow при создании скрипта?
  • Что такое GIT?
    git - система версионирования и управления исходными кодами. Позволяет разработчикам/devops совместно разрабатывать. Был создан для удобной разработки ядра Linux.
    
  • Что такое динамически/статически слинкованные файлы?
    Динамически слинкованные исполняемые файлы при их выполнении загружают динамические библиотеки или ИСПОЛЬЗУЮТ уже загруженные.
    Статические слинкованные исполняемые файлы уже содержат все необходимые библиотеки и не нуждаются в использовании динамических бибилиотек.
    
  • Что делает "./configure && make && make install"?
    В целом, это типовая поледовательность сборки какого-нибудь ПО. 
    configure - это скрипт, который проверяет систему в соответствии в требованиями (компилятор, его версия. библиотека, её версия и т.д.)
    make - утилита, которая использует Makefile для сборки проекта
    make install - копирует исполняемые файлы и прочие необходимые конфигурации программы в целевую систему для последующего запуска это программы.
    
  • Для чего используется puppet/chef/ansible?
  • Для чего используется Nagios/Zenoss/NewRelic?
  • Для чего используется Jenkins/TeamCity/GoCI?
  • В чем разница между контейнеризацией и виртуализацией?
  • Как создать нового postgres пользователя?
  • Что такое виртуальный IP адрес? Что такое кластер?
  • Как вывести все строки печатных символов, присутствующих в файле?
  • Как найти зависимости для библиотеки?
  • Что такое Automake и Autoconf?
  • ./configure вывела ошибку, что libfoobar не найдена в система, как вы будете исправлять это? Что может быть не так?
    libfoobar может быть не уставновлена, тогда необходимо найти пакет с данной библиотекой и установить её. Или libfoobar есть в система, но переменная окружения PATH содрежит некорректные пути.
    
  • Какие преимущества/недостатки у скриптов против компилируемых программ?
    
    
  • Какая связь между непрерывной доставкой (continuous delivery) и DevOps?
  • Каковы важные аспекты системы непрерывной интеграции и развертывания?
  • Как бы вы включили совместное использование сетевых файлов в AWS, которые позволили бы экземплярам EC2 в нескольких зонах доступности обмениваться данными?
  • Небрежный сисадмин запустил команду chmod 444 /bin/chmod - как вы будете исправлять проблему?
    через утилиту install
    install -m 0750 /bin/chmod /bin/chmod.ok
    mv /bin/chmod.ok /bin/chmod
    
  • Я потерял пароль пользователя root. Что мне делать?
  • Я перезагрузил удаленный сервер, но спустя 10 минут все еще не могу зайти по SSH. Что может быть не так?
  • Если бы вы попали на пустынный остров с 5 утилитами коммандной строки, то какие утилиты это были бы?
  • Вы сталкиваетесь с случайным компьютером и, похоже, это консоль к мирозданию. Что первое вы наберете?
  • Расскажите о креативном использовании ssh в вашей практике?
  • Вы случайно удалили запущенный скрипт, как вы будете его восстанавливать?
  • Что случится 19 января 2038 года?
  • Как перезагрузить сервер когда команда reboot не доступна?
  • Распакуйте test.tar.gz без использования man и google.
  • Удалите все "*.pyc" файлы рекурсивно из testdir.
  • Найдите все "my konfu is the best" во всех *.py файлах.
  • Замените все вхождения "my konfu is the best" на "I'm a linux jedi master" во всех *.txt файлах.
  • Проверьте доступность 443 порта на машине с IP X.X.X.X.
  • Получите страницу http://myinternal.webserver.local/test.html при помощи telnet.
  • Как отправить email без почтового клиента, только с помощью командной строки?
  • Напишите метод get_prim в python/perl/bash/pseudo.
  • Найдите все файлы, доступ к которым был осуществлен за последние 30 дней.
  • Объясните следующую команду (date ; ps -ef | awk '{print $1}' | sort | uniq | wc -l ) >> Activity.log
  • Напишите скрипт, показывающий разницу двух каталогов.
  • Из лог файла, содержащего <TIME> : [MESSAGE] : [ERROR_NO] - Human readable text выведите сумму/количество указанной ошибки, которая повторяется каждый час, или указанный час.

Некоторые вопросы 'заимствованы' из других замечательных ссылок, например:

About

Collection of Linux Sysadmin/DevOps interview questions and my answers

License:The Unlicense