Загрузка данных


Ниже краткий пошаговый гайд именно под Astra Linux (подойдёт и для обычного Debian‑подобного Linux). Команды выполняй от своего пользователя, где нужно — с sudo.

***

## Задание 1 — потоки syslog‑ng

1) Найти все потоки процесса syslog‑ng через ps:

```bash
ps -p "$(ps -C syslog-ng -o pid= | head -n 1)" -L
```

Вывод покажет PID процесса и LWP (идентификаторы потоков). [aldpro](https://www.aldpro.ru/professional/ALSE_Module_13/processes_practice.html)

2) То же самое в htop:

- Запусти:

```bash
htop
```

- Нажми F2 → Display options → включи Threads/Tree view (или опцию показа потоков, может называться Show custom thread names / Display threads). Сохранить F10. [the](https://the.hosting/ru/help/smotrim-potoki-processa-v-linux)
- В верхней части нажми F4 (Filter) и введи `syslog-ng` — увидишь процесс и его потоки.

***

## Задание 2 — топ‑15 по памяти

1) Через ps (PID, %MEM, EUID, RUID, SUID, Command):

```bash
ps -axo pid,%mem,euid,ruid,suid,command --sort=-%mem | head -n 15
```

Эта команда сортирует по %MEM по убыванию и берёт первые 15 строк. [aldpro](https://www.aldpro.ru/professional/ALSE_Module_13/processes_practice.html)

2) Через htop:

- Запусти `htop`.
- Нажми F6 (Sort by) и выбери `%MEM`. Теперь сверху будут процессы, которые больше всего жрут память. [linuxcookbook](https://linuxcookbook.ru/articles/htop-monitor-processov-linux)

***

## Задание 3 — приоритет nano

1) Создать файл и открыть nano:

```bash
cd ~
nano test_nano
```

2) В другом терминале найти процесс nano и повысить приоритет (nice=15):

```bash
ps -C nano -o pid=
renice -n 15 <PID>
```

`renice` меняет значение nice уже запущенного процесса. [habr](https://habr.com/ru/articles/106381/)

3) Вернуть nano из фона и закрыть:

- В терминале с nano нажми `Ctrl+X` и выйди.

4) Открыть nano сразу с приоритетом 25:

```bash
nice -n 25 nano test_nano
```

`nice -n 25` задаёт значение nice при запуске. [habr](https://habr.com/ru/articles/106381/)

5) Завершить nano сигналом SIGKILL:

- Найти PID nano:

```bash
ps -C nano -o pid=
```

- Убить:

```bash
kill -SIGKILL <PID>
# или короче
kill -9 <PID>
```

***

## Задание 4 — скрипты и приоритеты

1) Создать каталог и скрипты:

```bash
mkdir -p ~/scripts
nano ~/scripts/resource-demanding1.sh
```

Вставь:

```bash
#!/bin/bash
while [ 1 == 1 ]; do
  for x in {1..60}; do
    let "res=2**x"
  done
done
```

Сохранить, затем сделай второй файл:

```bash
cp ~/scripts/resource-demanding1.sh ~/scripts/resource-demanding2.sh
```

2) Сделать исполняемыми:

```bash
chmod u+x ~/scripts/resource-demanding1.sh ~/scripts/resource-demanding2.sh
```

3) Запустить htop в новом терминале и отсортировать по CPU:

```bash
htop
```

F6 → сортировка по `%CPU`. [linuxcookbook](https://linuxcookbook.ru/articles/htop-monitor-processov-linux)

4) Запустить оба скрипта на первом ядре в фоне:

```bash
taskset -c 0 ~/scripts/resource-demanding1.sh &
taskset -c 0 ~/scripts/resource-demanding2.sh &
```

Смотри в htop: %CPU для каждого процесса на первом ядре (желательно включить колонку CPU и ядра). [linuxcookbook](https://linuxcookbook.ru/articles/htop-monitor-processov-linux)

5) Менять приоритет первого процесса:

- Узнай PID обоих скриптов:

```bash
ps -C resource-demanding1.sh -o pid,cmd
ps -C resource-demanding2.sh -o pid,cmd
```

- Понизить приоритет (увеличить nice) последовательно: 25, 30, 35, 39:

```bash
renice -n 25 <PID_1>
renice -n 30 <PID_1>
renice -n 35 <PID_1>
renice -n 39 <PID_1>
```

На каждом шаге смотри, как падает %CPU у первого процесса и перераспределяется нагрузка. [rus-linux](http://rus-linux.net/MyLDP/consol/nice.html)

6) Повысить приоритет (уменьшить nice) до 15, 10, 5, 0:

```bash
renice -n 15 <PID_1>
renice -n 10 <PID_1>
renice -n 5  <PID_1>
renice -n 0  <PID_1>
```

Отслеживай рост использования CPU в htop. [rus-linux](http://rus-linux.net/MyLDP/consol/nice.html)

7) Задать приоритет второму, чтобы он ел ≥75% CPU ядра:

- Пока первый с nice 0, меняй nice второго:

```bash
renice -n 5  <PID_2>
renice -n 10 <PID_2>
...
```

Смотри на %CPU, подбирай такое значение nice, при котором второй процесс держится ≥75% CPU 0‑го ядра.

8) Завершить процессы:

```bash
kill -SIGINT <PID_1>   # мягко
kill -SIGKILL <PID_2>  # жёстко
# или
kill -2 <PID_1>
kill -9 <PID_2>
```

***

## Задание 5 — лимит на количество потоков/процессов

Имеется в виду ограничение через ulimit.

1) Посмотреть текущие процессы/потоки пользователя:

```bash
ps -u "$USER" | wc -l
```

2) Задать лимит (например, текущее число + 3):

```bash
# допустим ps -u $USER | wc -l выдал 20
ulimit -u 23
```

`ulimit -u` ограничивает максимальное количество процессов (и потоков) для текущей оболочки и её дочерних процессов. [unixforum](https://unixforum.org/viewtopic.php?t=148505)

3) Несколько раз запусти новый bash:

```bash
bash
bash
bash
...
```

В какой‑то момент при очередном запуске получишь ошибку вида:

```text
bash: fork: retry: Нет дочерних процессов
```

— лимит сработал. [unixforum](https://unixforum.org/viewtopic.php?t=148505)

4) Закрой терминал, в котором лимит, или просто выйди из лишних bash командой `exit`.

***

## Задание 6 — информация из /proc

Все команды — просто `cat` нужных файлов; в Astra это те же стандартные пути. [rus-linux](https://rus-linux.net/lib.php?name=%2FMyLDP%2Fboot%2Finit-scripts.html)

### О процессе syslog‑ng

Сначала PID:

```bash
PID=$(ps -C syslog-ng -o pid= | head -n 1)
```

Дальше:

1) Строка запуска процесса:

```bash
cat /proc/$PID/cmdline
# или более читаемо:
tr '\0' ' ' < /proc/$PID/cmdline; echo
```

2) Окружение процесса:

```bash
tr '\0' '\n' < /proc/$PID/environ
```

3) Сведения о данных, прочитанных/записанных:

```bash
cat /proc/$PID/io
```

4) Лимиты процесса:

```bash
cat /proc/$PID/limits
```

5) Статус процесса:

```bash
cat /proc/$PID/status
```

***

### Об операционной системе

1) Параметры, переданные ядру при загрузке:

```bash
cat /proc/cmdline
```

2) Сведения о всех установленных процессорах:

```bash
cat /proc/cpuinfo
```

3) Состояние памяти:

```bash
cat /proc/meminfo
```

4) Перечень устройств:

```bash
cat /proc/devices
```

5) Поддерживаемые файловые системы:

```bash
cat /proc/filesystems
```

6) Смонтированные файловые системы:

```bash
cat /proc/mounts
# можно еще:
mount
```

7) Список разделов подкачки:

```bash
cat /proc/swaps
```

Все эти файлы стандартные для любой Linux‑системы, включая Astra. [foxnetwork](https://foxnetwork.ru/index.php/new-materials/36-reviews/reviews/228-asus-rt-ac86u)

***

Если хочешь, могу оформить тебе готовый «шпаргалочный» отчёт по этой работе (команды + короткий комментарий к выводу под каждое задание). Что нужно: просто команды, или ещё и примерные выводы/объяснения для отчёта?