Собеседование QA: Linux

UNIX и Linux и разница между нимиХарактеристики LinuxЧто такое LILOShell Swap Процессы в LinuxКак их посмотретьКак завершить процессКоманда psДемоныman Текущий каталогСоздать каталог с правамиУдалить каталогНавигация по каталогамКорневой Абсолютный и относительный путьsu Права Просмотр каталогаРасширения файловfile touch cp и mvhead и tailsed awk wc cat и tacmore и lessdu Алиасы shred find и locateОжидания zip и unzipРасшифровка разрешенийchmod chown sort Дубликаты Мягкие и жесткие ссылки

Что такое UNIX?

UNIX — это многопользовательская многозадачная компьютерная операционная система, разработанная в Bell Laboratories Кеном Томпсоном и Деннисом Ритчи. Это проприетарное коммерческое программное обеспечение, код которого недоступен. Различными вариантами UNIX являются HP Unix, Solaris Unix, IBM AIX и BSD.

Unix-подобными операционными системами являются Apple macOS и iOS.

Что такое Linux?

Linux — операционная система с открытым исходным кодом, относится к типу UNIX-подобных ОС. Разработана Линусом Торвальдсом, в честь которого названа. Хотя Linux является отдельной операционной системой со своими особенностями, в целом, поскольку она создана на основе UNIX — команды и синтаксис программ UNIX и Linux в основном схожи.

Среди дистрибутивов Linux можно назвать Ubuntu, RedHat, Fedora и многие другие, около шестисот.

Опишите базовые характеристики Linux

Linux можно охарактеризовать следующим образом:

  • Многопользовательская — Linux позволяет нескольким пользователям одновременно обращаться к одним и тем же ресурсам компьютера, таким как память, рабочие программы, жесткий диск и т.д.
  • Многозадачность — Многозадачность позволяет одновременно работать нескольким (многим) приложениям или программам.
  • Безопасность — Linux обеспечивает безопасность путем аутентификации (имя пользователя-пароль), авторизации (путем предоставления прав на чтение-запись-выполнение различных файлов), шифрования (путем шифрования файлов таким образом что например только законный владелец файла может видеть его содержимое).
  • Переносимость — Linux поддерживает переносимость (портабельность), позволяя устанавливать эту ОС на различные аппаратные платформы.
  • Открытый исходный код — и последняя, немаловажная характеристика: эта ОС (в отличие например от Windows и macOS) имеет открытый исходный код, доступный каждому желающему его улучшить/исправить/усовершенствовать.

В чем разница между UNIX и Linux?

UNIXLinux
UNIX является проприетарной операционной системой.Linux — операционная система с открытым исходным кодом.
Вендоры (владельцы) различных вариантов UNIX предлагают свои дистрибутивы по разным ценам.Большинство дистрибутивов Linux распространяются абсолютно бесплатно (а есть и платные дистрибутивы специфической направленности, особенно для юрлиц).
Дистрибутивы — HP Unix, Solaris Unix, IBM AIX, BSD и много другихДистрибутивы — Fedora, Ubuntu, Debian, Linux Mint, RedHat и др.
В основном используется хардкорный CLI — интерфейс командной строки.Есть как GUI, графический интерфейс пользователя, так и интерфейс с командной строки.

Что такое загрузчик Linux (LILO)?

Linux-загрузчик (Linux loader = LILO) — загрузчик Linux, который при запуске компьютера загружает операционную систему в память. В настоящее время он считается, наверное, устаревшим, вытесняется загрузчиками GRUB (Grand Unified Boot loader) и GRUB2.

Что такое Shell?

Оболочка (шелл, Shell) — программа, выполняющая роль интерфейса между пользователем и операционной системой, позволяющая пользователю выполнять команды, например, Bourne shell (sh), bash (Bourne Again Shell) и т.д.

Что такое своп-область, для чего предназначена?

Своп-область (или пространство подкачки) — это часть жесткого диска, которая задействуется, когда системе требуется больше памяти, а оперативная память уже заполнена. В таких случаях неактивные в данный момент страницы памяти перемещаются в пространство подкачки, чтобы освободить оперативку.

Что такое процесс в Linux?

Процесс — это экземпляр (instance) выполняемой программы. Существует два вида процессов в Linux:

  • Процессы переднего плана (также “интерактивные” или foreground-процессы) — процесс переднего плана, запущенный пользователем, он выполняется “на переднем плане” — то есть пользователь видит его, и пользователь должен дождаться его завершения, прежде чем выполнить любую другую команду (например запустить команду в терминале).
  • Фоновые процессыфоновый процесс выполняется в фоновом режиме, поэтому пользователь может выполнять другие команды до того, как фоновый процесс будет завершен. Добавление '&' после любой команды превращает ее в фоновый процесс. Также, фоновый процесс может быть “выведен на передний план”, то есть сделан интерактивным с помощью команды 'fg' с указанием идентификатора задания.

Как посмотреть все процессы, выполняющиеся на компьютере под Linux?

При помощи утилиты Top можем вывести все запущенные процессы. Также, запуская утилиту top, получаем список важных атрибутов процессов, типа PID (идентификатор процесса), идентификатор пользователя (UID), идентификатор родительского процесса, используемая виртуальная и физическая память, статус процесса, загрузка процессора, время запуска процесса, и т.д.

Как завершить запущенный процесс в Linux?

Команда kill предназначена для завершения запущенного процесса в Linux. Существует два варианта завершения процесса —

  • Kill PId — генерируется сигнал SIGTERM, задающий плавное завершение процесса с его id — PId
  • Kill -9 PId — генерируется сигнал SIGKILL, задающий принудительное завершение процесса с указанным PId.

Для чего предназначена команда ‘ps’? Чем она отличается от команды top?

Ps расшифровывается как статус процесса (Process Status). Она предоставляет информацию о запущенных процессах.

#Вывод данных о процессе с PId - 12
ps -p 12
#Показать все процессы
ps -ef

Она отличается от команды topтем, что top показывает непрерывное интерактивное использование процессов в реальном времени. А psвыводит “снимок”-снепшот процессов и чаще используется для неинтерактивного использования в скриптах.

Что такое демон в Linux?

Демонами принято называть процессы, запускаемые в фоновом режиме либо в заданное время, либо в случае срабатывания триггера. По традиции имена демонов в Linux заканчиваются буквой 'd'.

Для чего нужна команда man?

Команда man предназначена для получения данных об использовании команды, конфигурационного файла или демона с помощью страниц man (так называемый пейджер справочных страниц) или руководства пользователя. Пример —

man ls

Выводом этого будет страница мануала по команде ls.

Как вывести на печать текущий рабочий каталог в Linux?

Команда pwd используется для отображения текущего каталога (Print Working Directory) — 

$ pwd
/c/Users/Testengineer

Как создать каталог в Linux и дать ему полный доступ?

С помощью mkdir создаем каталог, а с помощью chmod — задаем права доступа.

mkdir directoryName
chmod 777 directoryName

Или же, используем опцию —m(режима) команды mkdirи выполняем эту операцию в одной команде — 

mkdir -m 777 directoryName

Как удалить каталог, в котором есть файлы?

Как известно, при попытке удалить не пустой каталог командой rmdir directoryName увидим сообщение о невозможности удалить — «rmdir: failed to remove ‘newFolder’: Directory not empty».

Для удаления такого каталога необходимо использовать опцию -r команды rm, которая рекурсивно удаляет каталог и его содержимое (рекурсивно означает, что действие удаления будет произведено над самим каталогом, его подкаталогами, подкаталогами его подкаталогов и т. д).

rm -r directoryName

Как изменить текущий каталог в Linux? Как перейти в родительский каталог, корневой каталог и предыдущий каталог?

Используя команду cd, можем изменить текущий каталог в Linux. Пример —

cd directoryName

Переход в родительский каталог, то есть на один уровень выше — 

cd ..

Переход в домашний каталог пользователя —

cd

Или так —

cd ~

Переход к предыдущему каталогу —

cd -

Что такое корневой каталог?

В Linux используется иерархическая, или древовидная файловая система. Рут-каталог, или корневой, является родительским каталогом иерархии файловой системы, в которую входят все остальные каталоги. Он обозначается прямой косой чертой (слэшем) ‘/’.

Что такое абсолютный и относительный путь?

  • Абсолютный путь — это путь к файлу или каталогу из корневого каталога, т.е. от ‘/’.
  • Относительный путь — это путь к файлу или каталогу из текущего рабочего каталога.

Как войти в систему под другим пользователем в Linux?

Команда su предназначена для входа в систему под другим пользователем. Название расшифровывается как «подменить» или «переключить пользователя».

#Переключиться на пользователя user2
su user2
Password:
#Переключиться на root
su root
Password:

Что такое учетная запись root?

Учетная запись root (рута) — это учетная запись пользователя, который имеет доступ к каждому файлу и каталогу в Linux. Учетная запись root также известна как суперпользователь. Пользователь root может выполнять любые команды, в том числе добавлять пользователей, предоставлять и отзывать разрешения и т.д.

Какие формы владения файлами в Linux?

Каждый файл и каталог в Linux может иметь следующих владельцев —

  • User — Класс прав пользователя или владельца принадлежит пользователю, создавшему файл.
  • Group — Класс групповых прав принадлежит членам группы (владельцев) файла.
  • Other — Класс прав Other относится к каждому пользователю, которому разрешен доступ к файлу.

Объясните суть команды ‘ls -ltr’.

Команда ls используется для вывода списка содержимого каталога. Опции -ltr означают —

  • ‘l’ — Использовать длинный формат списка
  • ‘t’ — Сортировать по времени изменения, сначала самые новые
  • ‘r’ — Обратный порядок при сортировке

Таким образом, ls -ltr выведет содержимое каталога в формате длинного списка, отсортированного по времени модификации.

$ ls
ebooks.zip  imp.txt  Linux.png
$ ls -ltr
total 5072
-rw-r--r-- 1 Testengineer 197121 5170843 Jul 30  2023 ebooks.zip
-rw-r--r-- 1 Testengineer 197121    8695 Aug 28 14:06 Linux.png
-rw-r--r-- 1 Testengineer 197121    6883 Aug 28 19:37 imp.txt

Какая роль у расширений файлов типа .txt, .png и т.д. в Linux?

В отличие от Windows, в Linux расширения файлов не имеют значения. Linux не работает через расширения файлов, вместо этого тип файла определяется по содержимому в заголовке файла.

Объясните использование утилиты ‘file’.

Утилита file используется для определения типа файла (с характеристикой):

$ 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

Для чего предназначена команда ‘touch’?

Команда Touch имеет два предназначения в Linux —

  • Для присвоения имени файла — touch используется для создания (пустого) файла: .touch newFile
  • Для существующих файлов или каталогов touch изменит время последнего доступа на текущее.

В чем разница между командами ‘cp’ и ‘mv’?

Команда cp используется для копирования содержимого одного файла в другой. А команда mv перемещает файл из одного места в другое, удаляя исходный файл. Команда mv также используется для переименования файлов. Пример —

#Копирует содержимое file1 в file2
cp file1 file2
#Перемещает/переименовывает file1 в file2
mv file1 file2

Покажите использование команд ‘head’ и ‘tail’.

Команда head используется для отображения первых нескольких строк (по умолчанию 10) файла. Команда tail используется для отображения нескольких последних строк (по умолчанию 10) файла. Пример —

#Отображение первых 10 строк файла
head fileA
#Отображение первых 5 строк файла
head -5 fileA
#Показать последние 10 строк файла
tail fileA
#Отобразить последние 5 строк файла
tail -5 fileA

Что такое ‘sed’ в Linux?

sed расшифровывается как Stream Editor. Он используется для редактирования файлов или входных данных из конвейера (пайплайна). Пример —

#Выводит первые 5 строк
sed -n 1,5p fileA.txt

Как вывести содержимое строк с 5 по 10 из одного файла в другой?

Командой ‘sed’ —

#'p' печатать и '-n' не печатать
sed -n 5,10p fileA.txt > fileB.txt

Что такое ‘awk’?

Скриптовый язык AWK назван по инициалам его авторов «Aho, Weinberger, Kernighan» — интерпретируемый язык программирования для обработки текстов. Использование —

#Показать содержимое файла с помощью awk
awk '{print}' fileA.txt

Как подсчитать количество слов, строк и символов в файле?

Использование команды wc (word count) —

#Количество символов
wc -m fileA.txt
#Слов
wc -w fileA.txt
#Строк
wc -l fileA.txt

Как объединить содержимое нескольких файлов в один файл?

Команда ‘cat’ —

#Объединение содержимого fileA и fileB в mergedFile
cat file1 file2 > mergedFile

Как используется команда ‘tac’?

Команда tac, как можно догадаться по её названию, является обратной команде cat. Она выводит содержимое файла в обратном порядке — построчно, отображая сначала последнюю строку и двигаясь вверх до первой строки.

#Отображает содержимое fileА от нижней строки к верхней
tac file!

В чем разница между командами ‘more’ и ‘less’?

Команды more и less используются для постраничного просмотра больших файлов. В отличие от редакторов типа vi, использование этих команд для открытия файла не приводит к загрузке всего файла в память. Одним из ограничений команды more является возможность прокрутки только вниз, но не вверх. В то время как с помощью команды less можно прокручивать файл как вверх, так и вниз.

Как найти 3 самых маленьких файла в каталоге (занимающих меньше всего места на диске)?

Используя команду du (disk usage), мы можем узнать использование диска всеми каталогами и подкаталогами. Если дать команду du с опцией -a, то будет выведен список использования диска для всех файлов вместе с каталогами. Опция -h отображает размер в удобочитаемом виде. В дальнейшем можем использовать эту команду вместе с командами sort и head, чтобы сначала отсортировать файлы/каталоги по размеру, а затем получить нужное количество файлов.

#Сортирует файлы и каталоги в каталоге TestEngineer по размеру
du -h -a TestEngineer/ | sort -n -r | head -n 3

Как создать алиасы в Linux?

Алиасы (или псевдонимы, alias) используются для создания сокращенных коротких имен команды или группы команд.

#Алиас для каталога в логе
alias logs="cd /user/application/logs"

Для чего нужна утилита shred? Чем она отличается от команды rm?

Утилита shred используется для удаления содержимого файла таким образом, что его будет невозможно восстановить с помощью средств восстановления данных. В то время как при удалении файла командой rm место, занимаемое файлом, просто помечается как выделенное для других файлов, поэтому сохраняется возможность восстановления содержимого файла. Таким образом, для удаления файлов с конфиденциальными данными лучше команда shred.

#Перезаписывает содержимое файла c невозможностью восстановления
shred file1

В чем разница между командами find и locate?

Команды find и locate используются для поиска файлов в Linux. Команда find ищет файл в реальном времени и, соответственно, требует больше времени для вывода результата поиска, если файлов слишком много. В то время как команда locate работает гораздо быстрее, поскольку вместо поиска в реальном времени она ищет в базе данных updatedb. Поскольку updatedb делает снимок файловой системы только раз в сутки, результаты поиска по команде locate не всегда точны и актуальны.

#Найти все текстовые файлы
find / *.txt
#Найти все текстовые файлы
locate "*.txt"

Как задать ожидания в скриптах?

Например команда sleep может применяться для задания времени ожидания в скриптах. Можно задать время ожидания в секундах, минутах, часах и днях.

#Ожидание в течение 5 секунд
sleep 5s
#Ожидание в течение 5 минут
sleep 5m
#Ожидание в течение 5 часов
sleep 5h
#5 дней
sleep 5d

Как сжимать и распаковывать файлы в Linux?

Командами zip и unzip можно сжимать и распаковывать файлы в Linux.

#Создает файл zipFile.zip со сжатыми файлами fileA и fileB
zip zipFile fileA fileB
#Распаковывает файл zipFile.zip
unzip zipFile.zip

Какие существуют разрешения и режимы доступа к файлам в Linux?

Каждый файл и каталог в Linux может иметь следующие 3 разрешения, представленные трехзначным восьмеричным числом —

  • Чтение — Разрешает чтение содержимого файла (обозначается символом r в первой позиции — r-)
  • Запись — Разрешает изменение или удаление содержимого файла (обозначается r во второй позиции — —w-).
  • Выполнение — Обеспечивает возможность выполнения (запуска) файла (обозначается символом ‘x’ в третьей позиции — —x)

Объясните смысл такого режима разрешений для файла: «drwxr-x-x».

Эти 10 символов дают информацию о разрешениях пользователю, группе и другим пользователям.

  • Первый символ указывает, является ли данный объект файлом или каталогом: ‘-‘ это файл, ‘d’ это каталог.
  • Следующие 3 символа описывают права чтения-записи-исполнения для пользователя или владельца файла.
  • Следующие 3 символа описывают права чтения-записи-исполнения для группы, принадлежащей файлу.
  • Последние три символа описывают права чтения-записи-исполнения для всех остальных пользователей.

Таким образом, данное разрешение drwxr-xr-x означает каталог, для которого пользователь имеет все права чтения-записи-исполнения, группа имеет права чтения и исполнения, а остальные пользователи могут только исполнять файл.

Как предоставить или запретить доступ к файлу в Linux?

Команда chmod используется для предоставления прав на файл или каталог в Linux. Существует два режима предоставления или удаления прав с помощью команды chmod

  • Символьный режим — В символьном режиме мы можем предоставить права на файл с помощью оператора ‘+’, снять права с помощью оператора ‘-‘ и установить требуемые права с помощью оператора ‘=’.
#Добавить права на чтение и выполнение для группы 
chmod g+rx fileA 

#Убрать права на выполнение для владельца 
chmod u-x fileA 

#Установить права на запись и выполнение для других пользователей 
chmod o = wx fileA
  • Абсолютный режим — В абсолютном режиме для указания различных разрешений используется восьмеричное число. 
#751 - предоставить разрешение 7 владельцу, 5 группе и 1 другим пользователям 
chmod 751 fileA

Объясните восьмеричное представление чисел для различных типов разрешений в 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

Как изменить собственника и групповое право собственности на файл в Linux?

Команда chown (change owner) используется для изменения владельца файла.

chown userK fileA

Команда chgrp используется для изменения группового владения файлом.

chgrp group fileA

Как отсортировать содержимое файла?

Команда sort может использоваться для построчной сортировки элементов файла.

#Содержание файла - Testengineer, abc, Russia, numbers каждый в отдельной строке 
sort file

Вывод:

abc
numbers
Russia
Testengineer

Как удалить дубликаты в файле?

Утилитой uniq с командой sort.

#Содержимое файла: bat, all, cat, cat, all, cat - каждый в отдельной строке 
sort fileWithDuplicateContent | uniq

Вывод:

all
bat
cat

Что такое soft-ссылки в Linux? В чем их преимущество перед командой cp?

Софт-ссылки также известны как символические/символьные, мягкие ссылки или симлинки. Они используются для создания символических указателей на файл. В Linux софт-ссылки создаются с помощью команды ln с опцией -s.

#Создает софт-ссылку 'fileA' на файл 'fileA.txt'
# -s опция создания мягкой ссылки
ln -s fileA.txt fileA

Она имеет преимущество перед командой cp (которая создает новую копию файла) в том смысле, что для изменения прав доступа к файлам с помощью ссылок необходимо изменить права доступа только к исходному файлу. В то время как при использовании команды cp необходимо изменить права на все копии файла.

Что такое жесткие ссылки в Linux? Чем они отличаются от символических?

Жесткие ссылки — это как еще одно имя существующего файла. Вместо того чтобы указывать на имя (как мягкие ссылки), жесткие ссылки указывают непосредственно на содержимое файла (указывают на inode — таблицу, содержащую метаданные о файле).

#Создает жесткую ссылку 'fileA' на файл 'fileA.txt'
ln fileA.txt fileA

Жесткая отличается от символической ссылки тем, что в случае удаления исходных файлов ее символическая ссылка не будет ни на что указывать, что приведет к ошибке «Нет такого файла или каталога». В то время как жесткая ссылка будет по-прежнему указывать на содержимое исходного файла, даже если он будет удален.

#Создать жесткую ссылку на file1
ln file1 hardF1
#Создать мягкую ссылку на file1
ln file1 softF1
#Удаление исходного файла
rm file1
#Проверить содержимое жесткой ссылки - hardF1
cat hardF1
#output -> valid content
#Проверка содержимого мягкой ссылки - softF1
cat softF1
#output -> "No such file or directory"

Источник

Все вопросы на собеседованиях

Собеседование в Телеграме

Какой была ваша первая зарплата в QA и как вы искали первую работу?

Мега обсуждение в нашем телеграм-канале о поиске первой работы. Обмен опытом и мнения.

Подписаться
Уведомить о
guest

0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии

Мы в Telegram

Наш официальный канал
Полезные материалы и тесты
Готовимся к собеседованию
Project- и Product-менеджмент

🔥 Популярное

💬 Telegram-обсуждения

Наши подписчики обсуждают, как искали первую работу в QA. Некоторые ищут ее прямо сейчас.
Наши подписчики рассказывают о том, как не бояться задавать тупые вопросы и чувствовать себя уверенно в новой команде.
Обсуждаем, куда лучше податься - в менеджмент или по технической ветке?
Говорим о конфликтных ситуациях в команде и о том, как их избежать
$1100*
медианная зарплата в QA в июне 2023

*по результатам опроса QA-инженеров в нашем телеграм-канале

Собеседование

19%*
IT-специалистов переехало или приняло решение о переезде из России по состоянию на конец марта 2022

*по результатам опроса в нашем телеграм-канале

live

Обсуждают сейчас