diff --git a/linux/COMMANDS.MD b/linux/COMMANDS.MD index 1a9f73c..f79e67c 100644 --- a/linux/COMMANDS.MD +++ b/linux/COMMANDS.MD @@ -2,6 +2,7 @@ 1. [Настройка сервера](#настройка-сервера) 2. [Пакетный менеджер](#пакетный-менеджер) 3. [Сеть](#сеть) +4. [База](#база) ### Настройка сервера - `groups username` - группы пользователя @@ -37,3 +38,60 @@ APT работает поверх более низкоуровневого ин - `cat /etc/ssh/sshd_config | grep Port` - показывает на каком порту открыт ssh - `ss -tulpn` - информация о текущих сетевых соединениях и портах - `curl ifconfig.me` - узнать внешний ip машины + +### База +- `cp -p` - сохранить атрибуты файлов (время создания, права, владельца) +- `cp -v` - выводить информацию о каждом копируемом файле +- `mv -v` - подробный вывод при перемещении. +- `chmod 644 /etc/passwd` - изменение прав доступа к файлам и директориям +- `chown root:root /etc/hosts` - изменение владельца и группы +- `ps -aux` - выводит список всех процессов с информацией о пользователях, загрузке, времени и командах +- `ps -ef` - полная информация о процессах с идентификаторами владельцев +- `top -o %CPU` - сортировка процессов по указанному полю (например, по CPU) +- `kill -9 1234` - принудительное завершене процесса (1234 — PID процесса) +- `df -h` - информация о файловых системах +- `df -i` - иноды +- `du` - отображение размера файлов и каталогов + - `s` - отображает только итоговый размер + - `--max-depth=1` - выводит размер каталога и его подкаталогов +- `ifconfig` - информация о сетевых интерфейсах +- `ss -tulpn` - информация о сетевых соединениях +- `ping` - проверка доступности хоста +- `traceroute` - через какие маршрутизаторы проходит пакет до хоста +- `nslookup` - информация о DNS-сервере + +- `sudo useradd -m username` - добавление нового пользователя (`-m` - создание домашнего каталога) +- `sudo passwd username` - установка или изменение пароля пользователя +- `sudo usermod -aG sudo username` - добавить пользователя в группу `sudo` +- `sudo groupadd developers` - создание новой группы +- `tail -f /var/log/*` - логи (`-f` - обновление в реальном времени) +- `journalctl` - утилита для просмотра логов служб, управляемых `systemd` + - `-u ` - просмотр логов конкретной службы + ```bash + journalctl -u nginx + ``` + - `journalctl -u nginx -f` - просмотр логов в реальном времени + - `journalctl -n 100` - последние 100 строк + - `journalctl --since "2024-10-03 12:00:00" --until "2024-10-03 14:00:00"` - логи за конкретный период + - `journalctl -p err` - можно показывать только ошибки + - emerg (0): Аварийные сообщения. + - alert (1): Требуют немедленных действий. + - crit (2): Критические ошибки. + - err (3): Ошибки. + - warning (4): Предупреждения. + - notice (5): Важные события. + - info (6): Информационные сообщения. + - debug (7): Отладочные сообщения. + + + + +- `tar` - работа с архивами + - `-cvf` - создать архив + - `-xvf` - извлечь архив + - `-z` - использовать сжатие `gzip` + ```bash + tar -cvfz backup.tar.gz /var/www + ``` +### Разное + diff --git a/linux/NOTES.MD b/linux/NOTES.MD index bff242a..76dd469 100644 --- a/linux/NOTES.MD +++ b/linux/NOTES.MD @@ -16,4 +16,47 @@ sudo dpkg -i имя_пакета.deb # если возникнут ошибки с зависимостями sudo apt-get install -f ``` +--- +В Linux можно отправлять процессы различные сигналы, которые управляют их поведением. Эти сигналы — это механизмы межпроцессного взаимодействия (IPC), которые позволяют процессам реагировать на внешние события, такие как завершение или перезапуск. +- `kill -l` - список всех сигналов в системе + +**Основные сигналы** +- SIGTERM (15) - Завершение процесса + ``` + kill -SIGTERM + kill -15 + ``` +- SIGKILL (9) - Принудительное завершение процесса +- SIGHUP (1) - "Повесить" процесс (например, если конфигурационные файлы изменились, и процесс нужно перезагрузить без остановки. Процесс может получить SIGHUP при отключении терминала, и если он не запрограммирован для обработки этого сигнала, он просто завершится) +- SIGSTOP (19) - Остановка процесса. +- SIGCONT (18) - Возобновление выполнения остановленного процесса. + +--- +`Зомби-процесс` - это процесс в операционной системе Linux (и Unix), который завершил своё выполнение, но его запись в таблице процессов всё ещё существует. Такой процесс уже не выполняется, но сохраняет некоторые данные, пока его родительский процесс не соберёт информацию о завершении (код завершения). Зомби-процессы не используют системные ресурсы, такие как процессор или память, но они занимают записи в таблице процессов, которая ограничена по размеру. Если в системе накапливается слишком много зомби-процессов, это может привести к исчерпанию этих записей, что не позволит создавать новые процессы. + +Если родительский процесс корректно обрабатывает завершение своих дочерних процессов, зомби-процессы не накапливаются. + +Если родительский процесс перестаёт функционировать, дочерние процессы (в том числе зомби) могут стать "сиротами" и будут переданы процессу init (PID 1), который автоматически собирает завершённые процессы и освобождает ресурсы. + +Зомби-процессы нельзя "убить", так как они уже завершены. Однако можно решить проблему двумя способами: + +- **Перезагрузка системы**: Это удалит все зомби-процессы. +- **Убить родительский процесс**: Если родительский процесс не обрабатывает завершение своих дочерних процессов, можно его завершить. Дочерние процессы будут переданы процессу `init`, который "соберёт" информацию о завершении и освободит зомби-процессы. + +--- + +Сиротский процесс (или просто "сирота") — это процесс, у которого завершился родительский процесс. В Linux системах, когда родительский процесс умирает до завершения своих дочерних процессов, эти дочерние процессы становятся "сиротами". + +Что происходит с процессами-сиротами: + +- **Переназначение процессу `init`**: Как только процесс становится сиротой, он автоматически "усыновляется" процессом с `PID 1` (обычно это `init` или его современный аналог systemd в современных дистрибутивах). Процесс `init` берёт на себя ответственность за сироту и следит за его завершением. + +- **Корректное завершение**: Когда процесс-сирота завершает свою работу, `init` собирает его статус завершения с помощью системного вызова `wait()` , предотвращая его превращение в зомби-процесс. + +Отличие от зомби-процесса: + +- Сирота — это активный процесс, который просто потерял своего родителя. +- Зомби — это завершённый процесс, чья запись остаётся в таблице процессов до тех пор, пока родитель не соберёт информацию о его завершении. + +Сиротские процессы, в отличие от зомби, продолжают работать и не блокируют системные ресурсы, пока не завершат выполнение. \ No newline at end of file diff --git a/linux/network/COMMANDS.MD b/linux/network/COMMANDS.MD deleted file mode 100644 index 95d6738..0000000 --- a/linux/network/COMMANDS.MD +++ /dev/null @@ -1,2 +0,0 @@ -- `cat /etc/ssh/sshd_config | grep Port` - показывает на каком порту открыт ssh -- `ss -tulpn` - информация о текущих сетевых соединениях и портах