Коллекция вопросов для собеседования linux сисадмина/devops. Не стесняйтесь добавлять свои через pull request'ы, issues или сообщением по электронной почте.
- Участники
- Простые вопросы о Linux
- Вопросы среднего уровня о Linux
- Сложные вопросы о Linux
- Вопросы экспертного уровня о Linux
- Вопросы по сетям
- Вопросы о MySQL
- Вопросы о DevOps практиках
- Забавные вопросы
- Время демо
- Другие ссылки
-
Какое имя и 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
выведите сумму/количество указанной ошибки, которая повторяется каждый час, или указанный час.
Некоторые вопросы 'заимствованы' из других замечательных ссылок, например: