Linux — это мощная и гибкая операционная система, которая предоставляет пользователю широкие возможности для настройки и управления.
Разберем самые базовые и связанные с Linux вопросы, которые могут встретиться на собеседовании. Эти темы включают дерево процессов, зомби-процессы, сигналы, управление памятью, права доступа и другие фундаментальные концепции.
В Linux каждый процесс имеет уникальный идентификатор (PID) и может порождать дочерние процессы. Процесс, который создал другой процесс, называется родительским процессом (PPID — Parent Process ID). Все процессы образуют иерархическую структуру, которая называется деревом процессов.
Используйте команду pstree
:
pstree
[/code][/code][/code]
Пример вывода:
systemd─┬─sshd───sshd───bash
├─cron
└─nginx───nginx
Если pstree
не установлен, используйте ps
:
ps -ef --forest
[/code][/code][/code]
Процесс с PID 1 — это init (или systemd в современных системах). Он является корнем дерева процессов и отвечает за запуск всех остальных процессов при загрузке системы.
Зомби-процесс — это процесс, который завершился, но его запись в таблице процессов все еще существует, потому что родительский процесс не вызвал системный вызов wait()
для получения кода завершения.
Используйте команду ps
:
ps aux | grep Z
[/code][/code][/code]
Статус "Z" означает, что процесс является зомби.
Зомби-процессы сами по себе не потребляют ресурсы (память, CPU), но они занимают место в таблице процессов. Если таблица процессов переполнится, система не сможет создавать новые процессы.
SIGCHLD
:
kill -SIGCHLD <PPID>
[/code]
[/code]
[/code]
kill -9 <PPID>
[/code]
[/code]
[/code]
Сигналы — это программные прерывания, которые используются для взаимодействия между процессами или для управления их выполнением.
SIGTERM
(15): Запрос на завершение процесса (по умолчанию для команды kill
).SIGKILL
(9): Принудительное завершение процесса.SIGSTOP
(17): Остановка процесса (не может быть проигнорирована).SIGCONT
(18): Возобновление остановленного процесса.SIGHUP
(1): Сигнал о потере терминала (часто используется для перечитывания конфигурации).kill -<SIGNAL> <PID>
[/code][/code][/code]
Пример:
kill -9 1234 # Принудительно завершить процесс с PID 1234
[/code][/code][/code]
Используйте команду free
:
free -h
[/code][/code][/code]
Пример вывода:
total used free shared buff/cache available
Mem: 7.7G 2.1G 3.4G 200M 2.2G 5.1G
Swap: 2.0G 0B 2.0G
Используйте команду top
или htop
:
top
[/code][/code][/code]
Или:
ps -o pid,user,%mem,cmd ax | sort -b -k3 -r
[/code][/code][/code]
Права доступа определяют, кто может читать, писать или выполнять файл/директорию. Права задаются для трех категорий:
Используйте команду chmod
:
chmod 755 filename # rwxr-xr-x
[/code][/code][/code]
Или символический метод:
chmod u+x filename # Добавить право на выполнение для владельца
[/code][/code][/code]
Используйте команду chown
:
chown user:group filename
[/code][/code][/code]
Файловый дескриптор — это абстрактный указатель на открытый файл, сокет или устройство. Каждый процесс имеет свои файловые дескрипторы, которые хранятся в /proc/<PID>/fd/
.
ls -l /proc/<PID>/fd/
[/code][/code][/code]
Орфан-процесс — это процесс, у которого завершился родительский процесс. В Linux такие процессы автоматически "усыновляются" процессом с PID 1 (init/systemd).
Проверьте PPID процесса:
ps -ef | awk '$3 == 1 {print $0}'
[/code][/code][/code]
Основные логи находятся в /var/log/
. Используйте команду journalctl
для systemd:
journalctl -xe # Посмотреть последние логи
journalctl -u ssh.service # Логи конкретной службы
[/code][/code][/code]
lsblk
fdisk -l
[/code][/code][/code]
smartctl -a /dev/sda
[/code][/code][/code]
Как работает fork() в Linux?
fork()
создает точную копию текущего процесса. Новый процесс (дочерний) получает новый PID, а у родительского процесса сохраняется старый PID.Что такое inode?
Как работает механизм перенаправления ввода/вывода?
command > output.txt # Перенаправить stdout в файл
command 2> error.txt # Перенаправить stderr в файл
command &> all.txt # Перенаправить stdout и stderr в файл
[/code]
[/code]
[/code]
Что такое swap?
Как работает монтирование файловых систем?
Что такое IT-GIT?
«IT» — это не просто технологии, а целый мир инноваций и решений, направленных на преодоление сложностей. Мы представляем экспертность в области информационных технологий и широкой технологической экосистемы, стремясь к постоянному развитию и совершенствованию.
«Git» — это отсылка к одной из самых популярных систем контроля версий, которая обеспечивает эффективное сотрудничество, быструю итерацию и надежное управление сложными проектами. Мы стремимся объединить и поделиться опытом и идеями специалистов в сфере технологий, создавая пространство для обмена знаниями.
Инновационные технологии + совместный опыт экспертов в области технологий = путь к успеху!