useful stuff

This commit is contained in:
Илья Макаров 2024-10-03 19:22:45 +03:00
parent 903d8a0e4f
commit 336514b416
3 changed files with 101 additions and 2 deletions

View File

@ -2,6 +2,7 @@
1. [Настройка сервера](#настройка-сервера) 1. [Настройка сервера](#настройка-сервера)
2. [Пакетный менеджер](#пакетный-менеджер) 2. [Пакетный менеджер](#пакетный-менеджер)
3. [Сеть](#сеть) 3. [Сеть](#сеть)
4. [База](#база)
### Настройка сервера ### Настройка сервера
- `groups username` - группы пользователя - `groups username` - группы пользователя
@ -37,3 +38,60 @@ APT работает поверх более низкоуровневого ин
- `cat /etc/ssh/sshd_config | grep Port` - показывает на каком порту открыт ssh - `cat /etc/ssh/sshd_config | grep Port` - показывает на каком порту открыт ssh
- `ss -tulpn` - информация о текущих сетевых соединениях и портах - `ss -tulpn` - информация о текущих сетевых соединениях и портах
- `curl ifconfig.me` - узнать внешний ip машины - `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 <service_name>` - просмотр логов конкретной службы
```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
```
### Разное

View File

@ -16,4 +16,47 @@ sudo dpkg -i имя_пакета.deb
# если возникнут ошибки с зависимостями # если возникнут ошибки с зависимостями
sudo apt-get install -f 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()` , предотвращая его превращение в зомби-процесс.
Отличие от зомби-процесса:
- Сирота — это активный процесс, который просто потерял своего родителя.
- Зомби — это завершённый процесс, чья запись остаётся в таблице процессов до тех пор, пока родитель не соберёт информацию о его завершении.
Сиротские процессы, в отличие от зомби, продолжают работать и не блокируют системные ресурсы, пока не завершат выполнение.

View File

@ -1,2 +0,0 @@
- `cat /etc/ssh/sshd_config | grep Port` - показывает на каком порту открыт ssh
- `ss -tulpn` - информация о текущих сетевых соединениях и портах