Подготовьтесь к интервью по Linux с нашим обширным списком из 50 основных вопросов. Эти вопросы специально разработаны для начинающих, которые только начинают знакомство с операционной системой Linux.
Вопросы для собеседования по Linux
Вопрос 1. Что такое UNIX?
UNIX — это многопользовательская и многозадачная операционная система, разработанная в лабораториях Bell Кеном Томпсоном и Деннисом Ритчи. В отличие от открытых систем, UNIX является проприетарным программным обеспечением, и его исходный код не доступен широкой публике.
Существует множество версий UNIX, среди которых можно выделить HP Unix, Solaris Unix, IBM AIX и BSD. Каждая из этих версий предлагает свои особенности и инструменты, обеспечивая надежную работу в различных вычислительных средах.
Друзья, поддержите нас вступлением в наш телеграм канал QaRocks. Там много туториалов, задач по автоматизации и книг по QA.
Вопрос 2. Что такое Linux?
Linux — это операционная система с открытым исходным кодом, созданная Линусом Торвальдсом с нуля. Она во многом основана на принципах UNIX, что делает команды и синтаксис программ для этих систем схожими.
Существует множество дистрибутивов Linux, среди которых особенно популярны Ubuntu, RedHat и Fedora. Каждый из них предлагает уникальные возможности и инструменты, позволяя пользователям выбрать наиболее подходящий вариант в зависимости от своих потребностей и предпочтений.
Вопрос 3. Каковы основные функции Linux?
Основные функции Linux:
- Многопользовательская система — Linux позволяет нескольким пользователям одновременно использовать одни и те же ресурсы компьютера, такие как память, программы, жесткий диск и другие.
- Многозадачность — Многозадачность позволяет одновременно запускать несколько программ или приложений.
- Безопасность — Linux обеспечивает безопасность через аутентификацию (имя пользователя и пароль), авторизацию (разрешения на чтение, запись, выполнение для разных файлов) и шифрование (шифрование файлов, чтобы только владелец мог видеть оригинальное содержимое).
- Портативность — Linux поддерживает портативность, что означает возможность установки ОС на разные аппаратные платформы.
- Открытый исходный код — Это система с открытым исходным кодом, доступным для широкой общественности.
Вопрос 4. В чем разница между UNIX и Linux?
№ | UNIX | Linux |
---|---|---|
1. | UNIX — это проприетарная операционная система. | Linux — это операционная система с открытым исходным кодом. |
2. | У различных поставщиков операционной системы UNIX разная стоимость дистрибутивов. | Большинство дистрибутивов Linux распространяются бесплатно, но есть и платные версии. |
3. | Дистрибутивы — HP Unix, Solaris Unix, IBM AIX и BSD и т.д. | Дистрибутивы — Fedora, Ubuntu, Debian, Linux Mint, RedHat и т.д. |
4. | Основным интерфейсом является CLI (интерфейс командной строки). | Поддерживает как графический интерфейс пользователя (GUI), так и интерфейс командной строки (CLI). |
Вопрос 5. Что такое загрузчик Linux или LILO?
Linux Loader или LILO — это загрузчик для Linux, который загружает операционную систему в память. Сегодня его считают устаревшим приложением, которое заменили загрузчики GRUB (Grand Unified Boot Loader) и GRUB2.
Вопрос 6. Что такое Shell?
Shell — это программа, которая выступает в роли интерфейса между пользователем и операционной системой. Она позволяет выполнять команды и управлять системой через текстовые команды. Существуют различные типы оболочек, такие как Bourne shell (sh) и bash (Bourne Again Shell), каждая из которых предлагает свои уникальные функции и возможности. Shell играет ключевую роль в взаимодействии пользователей с операционной системой и выполнении задач автоматизации.
Вопрос 7. Что такое swap-пространство? Каковы его преимущества?
Swap-пространство — это участок жесткого диска, который используется, когда оперативная память (RAM) заполнена, а системе требуется больше памяти. В таких случаях неактивные страницы из RAM перемещаются в swap-пространство, что позволяет освободить память для активных процессов.
Вопрос 8. Что такое процесс в Linux?
Процесс — это экземпляр программы, которая выполняется. В Linux существует два типа процессов:
- Процессы переднего плана — процесс, запущенный пользователем, выполняется на переднем плане, и пользователь должен ждать его завершения перед вводом других команд, например, выполнение команды в терминале.
- Процессы в фоновом режиме — процесс, который выполняется в фоновом режиме, позволяет пользователю выполнять другие команды до его завершения. Добавление символа ‘&’ после команды переводит ее в фоновый режим. Также фоновый процесс можно вернуть на передний план с помощью команды ‘fg’ с указанием идентификатора задания (jobId).
Вопрос 9. Как можно вывести список всех процессов, выполняемых на машине?
Для этого можно использовать утилиту top
, которая выводит список всех запущенных процессов. Команда top
отображает важные атрибуты процесса, такие как PID (идентификатор процесса), пользователь/идентификатор пользователя, идентификатор родительского процесса, объем виртуальной памяти, физической памяти, статус процесса, использование процессора, время старта процесса, команда, запустившая процесс, и другие.
Вопрос 10. Как можно остановить или завершить выполнение процесса в Linux?
Для завершения процесса в Linux используется команда kill
. Существует два варианта завершения процесса:
- kill PId — эта команда генерирует сигнал SIGTERM, указывающий на мягкое завершение процесса с идентификатором PId.
- kill -9 PId — эта команда генерирует сигнал SIGKILL, указывающий на принудительное завершение процесса с идентификатором PId.
Вопрос 11. Как используется команда ‘ps’? Чем она отличается от команды top?
Команда ps
обозначает статус процесса (Process Status). Она предоставляет информацию о запущенных процессах.
#Чтобы вывести информацию о процессе с PId - 12: ps -p 12 #Чтобы вывести все процессы: ps -ef
Отличие от команды top
заключается в том, что top
отображает процессы в реальном времени с возможностью интерактивного управления, а команда ps
показывает статичный снимок текущих процессов в момент вызова команды. ps
чаще используется в неинтерактивных сценариях, например, в скриптах.
Вопрос 12. Что такое демон (daemon)?
Демоны — это фоновые процессы, которые выполняются в системе, обычно без непосредственного взаимодействия с пользователем. Они могут запускаться по расписанию или реагировать на определенные события. В Linux существует традиция называть демоны, добавляя к их именам суффикс ‘d’.
Вопрос 13. Как используется команда man?
Команда man
используется для получения информации о командах, конфигурационных файлах или демонах через man-страницы (справочное руководство). Пример использования:
man ls # Отобразится справочная страница для команды ls
Вопрос 14. Как вывести текущую рабочую директорию в Linux?
Команда pwd
используется для отображения текущей директории (Print Working Directory):
$ pwd /c/Users/Kuldeep
Вопрос 15. Как создать директорию в Linux и дать ей полные права?
С помощью команды mkdir
можно создать директорию, а с помощью команды chmod
— задать права.
mkdir имя_директории chmod 777 имя_директории
Также можно использовать опцию ‘-m
‘ (mode) команды mkdir
, чтобы выполнить операцию одной командой:
mkdir -m 777 имя_директории
Вопрос 16. Как удалить непустую директорию?
При попытке удалить непустую директорию с помощью команды ‘rmdir
имя_директории’ будет выдана ошибка — “rmdir: failed to remove ‘newFolder’: Directory not empty”. Чтобы удалить непустую директорию, необходимо использовать опцию ‘-r’ команды rm
, которая рекурсивно удаляет директорию и ее содержимое:
rm -r имя_директории
Вопрос 17. Как сменить директорию в Linux? Как перейти в родительскую директорию, домашнюю директорию и предыдущую директорию?
С помощью команды cd
можно сменить директорию в Linux. Пример использования:
cd имя_директории
Перейти в родительскую директорию или на один уровень вверх:
cd ..
Перейти в домашнюю директорию пользователя:
cd или cd ~
Перейти в предыдущую директорию:
cd -
Вопрос 18. Что такое корневая директория?
В Linux файловая система имеет иерархическую структуру. Корневая директория является родительской для всех других директорий и обозначается символом ‘/’.
Вопрос 19. Что такое абсолютные и относительные пути?
- Абсолютный путь — это путь к файлу или директории, начиная с корневой директории, т.е. от ‘/’.
- Относительный путь — это путь к файлу или директории относительно текущей рабочей директории.
Вопрос 20. Как войти под другим пользователем в Linux?
Команда su
используется для входа под другим пользователем в Linux. Она может обозначать как “substitute user” (заменить пользователя), так и “switch user” (сменить пользователя).
# Перейти на user2 su user2 Password: # Перейти на root su root Password:
Вопрос 21. Что такое root-аккаунт?
Root-аккаунт — это учетная запись с полными привилегиями в Linux, также известная как суперпользователь. Root-пользователь имеет доступ ко всем файлам и директориям в системе и может выполнять любые команды, включая:
- Добавление и удаление пользователей.
- Назначение и отзыв прав доступа.
- Изменение системных настроек и файлов.
Вопрос 22. Какие типы владения файлами существуют в Linux?
Каждый файл и директория в Linux могут иметь следующие типы владения:
- Пользователь (User) — Класс прав пользователя принадлежит тому, кто создал файл.
- Группа (Group) — Класс прав группы принадлежит членам группы, которой принадлежит файл.
- Другие (Other) — Класс прав “другие” относится ко всем пользователям, которые имеют доступ к файлу.
Вопрос 23. Объясните использование команды ‘ls -ltr’?
Команда ls
используется для вывода содержимого директории. Опции ‘-ltr’ означают:
- l — Использовать длинный формат вывода
- t — Сортировка по времени модификации, начиная с самого нового
- r — Обратный порядок сортировки
Таким образом, команда ls -ltr
выведет содержимое директории в длинном формате вывода, отсортированное по времени модификации, начиная с самого старого.
$ ls ebooks.zip imp.txt Linux.png $ ls -ltr total 5072 -rw-r--r-- 1 Kuldeep 197121 5170843 Mar 30 2017 ebooks.zip -rw-r--r-- 1 Kuldeep 197121 8695 Oct 28 14:06 Linux.png -rw-r--r-- 1 Kuldeep 197121 6883 Dec 28 19:37 imp.txt
Вопрос 24. Какое значение имеют расширения файлов, такие как .txt, .png и т.д., в Linux?
В отличие от Windows, в Linux расширения файлов не играют решающей роли. В Linux система не зависит от расширений для определения типа файла; вместо этого тип файла определяется по его содержимому и метаданным, которые хранятся в заголовке файла.
Вопрос 25. Объясните использование утилиты ‘file’.
Утилита file
используется для определения типа файла в Linux. Она анализирует содержимое файла и выводит информацию о его типе, основываясь на сигнатурах и других характеристиках, а не на расширении.
$ file imp.txt imp.txt: ASCII text, with very long lines, with CRLF line terminator $ file Linux.png Linux.png: PNG image data, 521 x 177, 8-bit colormap, non-interlaced
Вопрос 26. Какова цель команды ‘touch’?
Команда touch
выполняет две задачи в Linux:
- Если указанный файл не существует, команда
touch
создаёт новый пустой файл с заданным именем. Например:
touch newFile.txt
- Если файл уже существует, команда
touch
обновляет его временные метки доступа и модификации до текущего времени. Это полезно для обновления файлов, не изменяя их содержимое.
Вопрос 27. В чем разница между командами ‘cp’ и ‘mv’?
Команда cp
используется для копирования содержимого одного файла в другой. В то время как команда mv
перемещает файл из одного места в другое, удаляя исходный файл. Команда mv
также используется для переименования файлов. Пример использования:
# Копирует содержимое file1 в file2 cp file1 file2 # Перемещает/переименовывает file1 в file2 mv file1 file2
Вопрос 28. Объясните использование команд ‘head’ и ‘tail’.
Команда head
используется для отображения первых нескольких строк файла (по умолчанию 10 строк), а команда tail
— для отображения последних строк файла (также по умолчанию 10 строк).
# Отображает первые 10 строк файла head fileA # Отображает первые 5 строк файла head -5 fileA # Отображает последние 10 строк файла tail fileA # Отображает последние 5 строк файла tail -5 fileA
Вопрос 29. Что такое ‘sed’ в Linux?
sed
расшифровывается как Stream Editor (потоковый редактор) и используется для обработки и редактирования текстовых потоков, как из файлов, так и из стандартного ввода.
# Выводит первые 5 строк sed -n 1,5p fileA.txt
Вопрос 30. Как вывести содержимое с 5 по 10 строку из одного файла в другой?
С помощью команды sed
:
# 'p' для печати, '-n' для того, чтобы не печатать каждую строку sed -n 5,10p fileA.txt > fileB.txt
Вопрос 31. Что такое ‘awk’?
AWK, названный по первым буквам его авторов “Aho, Weinberger и Kernighan”, — это интерпретируемый язык программирования, предназначенный для обработки текстов и анализа данных. Пример использования:
# Для отображения содержимого файла с помощью awk awk '{print}' fileA.txt
Вопрос 32. Как посчитать количество слов, строк и символов в файле?
С помощью команды wc
(word count — подсчет слов) в Linux можно подсчитывать количество строк, слов и байт в файлах или текстовом вводе.
# Количество символов wc -m fileA.txt # Количество слов wc -w fileA.txt # Количество строк wc -l fileA.txt
Вопрос 33. Как объединить содержимое нескольких файлов в один файл?
Команда cat
(concatenate) в Linux используется для отображения содержимого файлов, а также для их объединения. С помощью перенаправления можно сохранять или обрабатывать вывод команды.
# Объединение содержимого fileA и fileB в mergedFile cat file1 file2 > mergedFile
Вопрос 34. Каково назначение команды ‘tac’?
Команда tac
(которая является обратной версией cat
) используется для отображения содержимого файла в обратном порядке, начиная с последней строки и двигаясь вверх до первой.
# Отображает содержимое fileA с нижней строки до верхней tac fileA
Вопрос 35. В чем разница между командами ‘more’ и ‘less’?
Обе команды, more
и less
, используются для просмотра больших файлов постранично. В отличие от любого редактора, такого как vi, при использовании этих команд файл не загружается полностью в память. Ограничением команды more
является то, что можно прокручивать только вниз, но не вверх. В то время как с помощью команды less
можно прокручивать и вверх, и вниз по файлу.
Вопрос 36. Как найти 3 файла или директории, занимающие больше всего места в пределах директории?
Используя команду du
(disk usage), можно узнать объем дискового пространства, занимаемого всеми директориями и поддиректориями. Опция -a
в команде du
отобразит объем, занимаемый как файлами, так и директориями. Опция -h
покажет размер в удобочитаемой форме. Далее, с помощью команд sort
и head
, можно отсортировать файлы/директории по размеру и выбрать нужное количество.
# Сортирует файлы и директории в каталоге artOfTesting по размеру du -h -a artOfTesting/ | sort -n -r | head -n 3
Вопрос 37. Как создать алиасы (aliases) в Linux?
Алиасы в Linux используются для создания сокращенных имен для команд или группы команд, что упрощает их ввод и повышает удобство работы в терминале.
# Алиас для перехода в директорию с логами alias logs="cd /user/application/logs"
Вопрос 38. Каково назначение утилиты shred и чем она отличается от команды rm?
Утилита shred
используется для безопасного удаления содержимого файла, так что его восстановление с помощью инструментов для восстановления данных становится невозможным. Команда rm
лишь помечает место, занимаемое файлом, как доступное для других файлов, что делает возможным восстановление содержимого. Поэтому shred
лучше подходит для удаления файлов с конфиденциальными данными.
# Перезаписывает содержимое файла, делая его восстановление невозможным shred file1
Вопрос 39. В чем разница между командами find и locate?
Обе команды используются для поиска файлов в Linux. Команда find
ищет файлы в реальном времени, что может занять больше времени, если файлов много. В то время как команда locate
работает быстрее, так как ищет в базе данных updatedb
, которая обновляется раз в день. Однако результат команды locate
может быть неактуальным.
# Найти все текстовые файлы find / *.txt # Найти все текстовые файлы locate "*.txt"
Вопрос 40. Как добавить паузу в скрипты?
Команда sleep
в Linux используется для добавления паузы в выполнение скриптов или команд. Это полезно для управления временем выполнения, например, между операциями в скрипте.
# Ожидание 5 секунд sleep 5s # Ожидание 5 минут sleep 5m # Ожидание 5 часов sleep 5h # Ожидание 5 дней sleep 5d
Вопрос 41. Как сжать и распаковать файлы в Linux?
Для сжатия и распаковки файлов используются команды zip
и unzip
.
# Создает файл zipFile.zip с файлами fileA и fileB zip zipFile fileA fileB # Распаковывает zipFile.zip unzip zipFile.zip
Вопрос 42. Какие существуют различные права доступа к файлам в Linux?
Каждый файл и директория в Linux могут иметь три основных разрешения, представленных трехзначным восьмеричным числом. Эти разрешения определяют, кто может выполнять какие действия с файлом или директорией.
- Read (Чтение) – предоставляет возможность читать содержимое файла (обозначается буквой ‘r’ в первой позиции – “r–”).
- Write (Запись) – предоставляет возможность редактировать или удалять содержимое файла (обозначается буквой ‘w’ во второй позиции – “-w-”).
- Execute (Исполнение) – предоставляет возможность исполнять или запускать файл (обозначается буквой ‘x’ в третьей позиции – “–x”).
Вопрос 43. Объясните значение режима доступа “drwxr-x–x”.
10 символов режима доступа дают информацию о правах доступа для владельца, группы и других пользователей.
- Первый символ указывает, является ли это файлом или директорией: ‘-’ для файла и ‘d’ для директории.
- Следующие 3 символа показывают права на чтение, запись и исполнение для владельца файла.
- Следующие 3 символа показывают права на чтение, запись и исполнение для группы, к которой принадлежит файл.
- Последние 3 символа показывают права на чтение, запись и исполнение для всех остальных пользователей.
Таким образом, drwxr-xr-x
означает директорию, где у пользователя есть все права (чтение, запись и исполнение), у группы – права на чтение и исполнение, а у остальных пользователей – только права на исполнение.
Вопрос 44. Как предоставить или убрать доступ к файлу в Linux?
Команда chmod
используется для изменения прав доступа к файлу или директории в Linux. Существует два основных режима использования этой команды: символьный и абсолютный.
Символьный режим: позволяет добавлять права доступа с помощью ‘+’, удалять права с помощью ‘-‘ и устанавливать права с помощью ‘=’.
# Добавить права на чтение и выполнение для группы chmod g+rx fileA # Убрать право на выполнение для владельца chmod u-x fileA # Установить права на запись и выполнение для остальных пользователей chmod o=wx fileA
Абсолютный режим: права указываются с помощью восьмеричного числа. Например, число 751 даст полные права (чтение, запись, выполнение) владельцу, права на чтение и выполнение группе и права только на выполнение остальным пользователям.
chmod 751 fileA
Вопрос 45. Объясните восьмеричное представление различных типов разрешений в Linux.
Абсолютные разрешения в команде chmod
используют восьмеричную систему. Разные восьмеричные числа для различных типов разрешений следующие:
Восьмеричное число | Предоставленные права |
---|---|
0 | Нет прав (—), т.е. 0+0+0=0 |
1 | Выполнение (–x), т.е. 0+0+1=1 |
2 | Запись (–w–), т.е. 0+2+0=2 |
3 | Запись и выполнение (–wx), т.е. 0+2+1=3 |
4 | Чтение (r–), т.е. 4+0+0=4 |
5 | Чтение и выполнение (r–x), т.е. 4+0+1=5 |
6 | Чтение и запись (rw–), т.е. 4+2+0=6 |
7 | Чтение, запись и выполнение (rwx), т.е. 4+2+1=7 |
Вопрос 46. Как изменить владельца и групповую принадлежность файла в Linux?
Команда chown
(change owner) используется для изменения владельца файла.
chown userK fileA
Команда chgrp
используется для изменения групповой принадлежности файла.
chgrp group fileA
Вопрос 47. Как отсортировать содержимое файла?
Команда sort
в Linux используется для сортировки строк в файле или из стандартного ввода. Она может обрабатывать текстовые файлы и выводить их содержимое в отсортированном порядке.
#Содержимое файла: kuldeep, abc, 1India, zed (каждый на отдельной строке) sort file #Вывод 1India abc kuldeep zed
Вопрос 48. Как удалить дубликаты в файле?
Утилита uniq
используется для удаления дубликатов строк из текста, но для её корректной работы необходимо предварительно отсортировать данные. Поэтому uniq
часто используется в сочетании с командой sort
.
#Содержимое файла: bat, all, cat, cat, all, cat (каждый на отдельной строке) sort fileWithDuplicateContent | uniq #Вывод all bat cat
Вопросы 49. Что такое мягкие ссылки в Linux? В чем их преимущество по сравнению с командой cp?
Мягкие ссылки, также известные как символические ссылки или symlinks, используются в Linux для создания указателей на файлы или директории. Это позволяет ссылаться на оригинальный файл, не дублируя его содержимое. В Linux мягкие ссылки создаются с помощью команды ln
с опцией -s
.
#Создание мягкой ссылки 'fileA' на файл 'fileA.txt': ln -s fileA.txt fileA
Преимущество перед командой cp
(которая создает новую копию файла) заключается в том, что для изменения разрешений файлов достаточно изменить разрешения оригинального файла. В то время как с командой cp
необходимо изменять разрешения для всех копий файла.
Вопросы 50. Что такое жесткие ссылки в Linux? Чем они отличаются от мягких ссылок?
Жесткие ссылки — это механизм в Linux, который позволяет создать другое имя для существующего файла. В отличие от мягких ссылок, которые указывают на имя файла, жесткие ссылки ссылаются на сам содержимое файла, обеспечивая доступ к данным напрямую через разные имена.
#Создание жесткой ссылки 'fileA' на файл 'fileA.txt': ln fileA.txt fileA
Жесткие ссылки отличаются от мягких тем, что если оригинальный файл будет удален, его символическая ссылка не будет указывать ни на что, что приведет к ошибке “Нет такого файла или директории”. В то время как жесткая ссылка будет продолжать указывать на содержимое оригинального файла, даже если файл будет удален.
Пример создания жесткой и мягкой ссылки:
# Создание жесткой ссылки на file1 ln file1 hardF1 # Создание мягкой ссылки на file1 ln file1 softF1 # Удаление оригинального файла rm file1 # Проверка содержимого жесткой ссылки - hardF1 cat hardF1 # вывод -> валидное содержимое # Проверка содержимого мягкой ссылки - softF1 cat softF1 # вывод -> "Нет такого файла или директории"
На этом мы завершаем нашу статью о популярных вопросах на собеседовании по Linux для начинающих. Надеюсь, эти вопросы помогут вам лучше разобраться с Linux и успешно пройти интервью.
Перевод статьи «Top 50 Linux Interview Questions for Beginners».