mirror of
https://github.com/ilyamak04/DevOps.git
synced 2025-04-05 23:34:50 +02:00
77 lines
8.7 KiB
Markdown
77 lines
8.7 KiB
Markdown
Когда вы вводите команду `sudo`, система запрашивает пароль пользователя, который в данный момент вошел в систему и имеет право выполнять команды с повышенными привилегиями. Это может быть пароль вашего пользователя, а не пароль root. Если вы создали пользователя без пароля, то при попытке использовать `sudo` возникнет ошибка, так как для выполнения этой команды требуется ввести правильный пароль.
|
||
|
||
---
|
||
|
||
Файл `~/.ssh/known_hosts` — это файл, который SSH использует для хранения информации о хостах (серверах), к которым вы ранее подключались. В этом файле хранятся "отпечатки" (fingerprints) публичных SSH-ключей серверов. Когда вы подключаетесь к серверу через SSH, клиент SSH проверяет, соответствует ли ключ сервера тому, который хранится в `known_hosts`.
|
||
|
||
Если ключ сервера изменился и не совпадает с тем, что хранится в `known_hosts`, SSH выдает предупреждение, чтобы предотвратить возможную атаку (например, "человек посередине").
|
||
|
||
---
|
||
Чтобы установить `.deb` пакет в Linux:
|
||
```bash
|
||
sudo apt install ./имя_пакета.deb
|
||
```
|
||
```bash
|
||
sudo dpkg -i имя_пакета.deb
|
||
# если возникнут ошибки с зависимостями
|
||
sudo apt-get install -f
|
||
```
|
||
---
|
||
В Linux можно отправлять процессы различные сигналы, которые управляют их поведением. Эти сигналы — это механизмы межпроцессного взаимодействия (IPC), которые позволяют процессам реагировать на внешние события, такие как завершение или перезапуск.
|
||
|
||
- `kill -l` - список всех сигналов в системе
|
||
|
||
**Основные сигналы**
|
||
- SIGTERM (15) - Завершение процесса
|
||
```
|
||
kill -SIGTERM <pid>
|
||
kill -15 <pid>
|
||
```
|
||
- SIGKILL (9) - Принудительное завершение процесса
|
||
- SIGHUP (1) - "Повесить" процесс (например, если конфигурационные файлы изменились, и процесс нужно перезагрузить без остановки. Процесс может получить SIGHUP при отключении терминала, и если он не запрограммирован для обработки этого сигнала, он просто завершится)
|
||
- SIGSTOP (19) - Остановка процесса.
|
||
- SIGCONT (18) - Возобновление выполнения остановленного процесса.
|
||
|
||
---
|
||
`Зомби-процесс` - это процесс в операционной системе Linux (и Unix), который завершил своё выполнение, но его запись в таблице процессов всё ещё существует. Такой процесс уже не выполняется, но сохраняет некоторые данные, пока его родительский процесс не соберёт информацию о завершении (код завершения). Зомби-процессы не используют системные ресурсы, такие как процессор или память, но они занимают записи в таблице процессов, которая ограничена по размеру. Если в системе накапливается слишком много зомби-процессов, это может привести к исчерпанию этих записей, что не позволит создавать новые процессы.
|
||
|
||
Если родительский процесс корректно обрабатывает завершение своих дочерних процессов, зомби-процессы не накапливаются.
|
||
|
||
Если родительский процесс перестаёт функционировать, дочерние процессы (в том числе зомби) могут стать "сиротами" и будут переданы процессу init (PID 1), который автоматически собирает завершённые процессы и освобождает ресурсы.
|
||
|
||
Зомби-процессы нельзя "убить", так как они уже завершены. Однако можно решить проблему двумя способами:
|
||
|
||
- **Перезагрузка системы**: Это удалит все зомби-процессы.
|
||
- **Убить родительский процесс**: Если родительский процесс не обрабатывает завершение своих дочерних процессов, можно его завершить. Дочерние процессы будут переданы процессу `init`, который "соберёт" информацию о завершении и освободит зомби-процессы.
|
||
|
||
---
|
||
|
||
Сиротский процесс (или просто "сирота") — это процесс, у которого завершился родительский процесс. В Linux системах, когда родительский процесс умирает до завершения своих дочерних процессов, эти дочерние процессы становятся "сиротами".
|
||
|
||
Что происходит с процессами-сиротами:
|
||
|
||
- **Переназначение процессу `init`**: Как только процесс становится сиротой, он автоматически "усыновляется" процессом с `PID 1` (обычно это `init` или его современный аналог systemd в современных дистрибутивах). Процесс `init` берёт на себя ответственность за сироту и следит за его завершением.
|
||
|
||
- **Корректное завершение**: Когда процесс-сирота завершает свою работу, `init` собирает его статус завершения с помощью системного вызова `wait()` , предотвращая его превращение в зомби-процесс.
|
||
|
||
Отличие от зомби-процесса:
|
||
|
||
- Сирота — это активный процесс, который просто потерял своего родителя.
|
||
- Зомби — это завершённый процесс, чья запись остаётся в таблице процессов до тех пор, пока родитель не соберёт информацию о его завершении.
|
||
|
||
Сиротские процессы, в отличие от зомби, продолжают работать и не блокируют системные ресурсы, пока не завершат выполнение.
|
||
|
||
---
|
||
Команды в Linux выполняются слева направо, **редиректы (>, >>, <)** интерпретируются справа налево, потому что Bash сначала проверяет, куда нужно перенаправить вывод или откуда читать ввод, а потом выполняет саму команду.
|
||
```bash
|
||
echo "Hello" > file.txt
|
||
```
|
||
Здесь интерпретатор сначала создаёт или очищает файл `file.txt` (то есть обрабатывает часть > `file.txt`), а затем выполняет команду `echo "Hello"` и записывает результат в файл.
|
||
```bash
|
||
echo $(date)
|
||
```
|
||
Здесь сначала выполняется команда `date` (справа налево), а затем её результат подставляется в команду `echo`
|
||
```bash
|
||
echo `date`
|
||
```
|
||
Bash сначала выполнит команду `date` (внутри кавычек), затем передаст её результат команде `echo`. |