Программист – Работа в командной строке linux (страница 5)
4. Ctrl+Z — приостановить выполняющееся задание (переводит в состояние Stopped).
5. & — запуск процесса в фоне сразу:
sleep 100 & # Запустить sleep в фоне
Пример работы:
long_command # Запускаем долго выполняющуюся команду
Ctrl+Z # Приостанавливаем её
bg # Запускаем в фоне
jobs # Проверяем статус
4.4. Завершение процессов
1. kill — отправка сигналов процессу.
Основные сигналы:
* SIGTERM (15) — корректное завершение (по умолчанию);
* SIGKILL (9) — принудительное завершение («убивает» процесс);
* SIGSTOP (19) — приостановка процесса;
* SIGCONT (18) — продолжение выполнения.
Примеры:
kill 1234 # Отправить SIGTERM процессу с PID 1234
kill -9 1234 # Принудительно завершить процесс
kill -STOP 1234 # Приостановить процесс
2. pkill — завершение по имени процесса:
pkill firefox # Завершить все процессы firefox
pkill -9 python # Принудительно завершить все процессы python
3. killall — аналогично pkill, но может завершать по имени:
killall chrome
4.5. Приоритеты процессов
Приоритет (nice value) определяет, сколько процессорного времени получит процесс.
• Диапазон: от -20 (высший приоритет) до 19 (низший приоритет).
• По умолчанию процессы запускаются с приоритетом 0.
Команды:
1. nice — запуск с заданным приоритетом:
nice -n 10 long_calculation.sh # Запустить с низким приоритетом
2. renice — изменение приоритета работающего процесса:
renice 5 1234 # Установить приоритет 5 для процесса 1234
4.6. Практические упражнения
1. Запустите команду sleep 300 и приостановите её с помощью Ctrl+Z.
2. Проверьте список заданий командой jobs.
3. Запустите sleep 200 & (в фоне).
4. Снова выполните jobs и обратите внимание на статус заданий.
5. Переведите первое задание на передний план командой fg.
6. Прервите его с помощью Ctrl+C.
7. Запустите top и отсортируйте процессы по потреблению CPU (P).
8. Найдите процесс с наибольшим потреблением и запомните его PID.
9. Завершите этот процесс командой kill PID.
10. Проверьте, что процесс завершён, снова запустив top.
11. Запустите htop (если установлен) и изучите интерфейс.
12. Создайте скрипт high_cpu.sh, который в цикле выводит дату:
#!/! /bin/bash
while true; do
date
sleep 1
done
13. Запустите его с высоким приоритетом (nice -n -10 ./high_cpu.sh) и понаблюдайте в top.
14. Измените приоритет работающего процесса на 15 с помощью renice.
4.7. Дополнительные инструменты
• pgrep — поиск PID по имени процесса:
pgrep firefox
• strace — трассировка системных вызовов процесса:
strace -p PID
• lsof — список открытых файлов процессом:
lsof -p PID
• vmstat — общая статистика по системе (память, CPU, I/O):
vmstat 2 # Обновление каждые 2 секунды
Заключение
Вы освоили ключевые аспекты управления процессами в Linux:
* мониторинг процессов (ps, top, htop);
* управление заданиями (jobs, fg, bg);
* завершение процессов (kill, pkill, killall);
* настройку приоритетов (nice, renice).
Эти навыки позволят вам: * эффективно диагностировать проблемы с производительностью; * управлять ресурсами системы; * автоматизировать задачи с учётом приоритетов; * безопасно завершать зависшие процессы.
В следующей главе мы рассмотрим автоматизацию задач с помощью планировщика cron и работу с сетевыми командами в Linux.
Глава 5. Автоматизация задач с помощью cron и основы работы с сетью в Linux
Введение
Автоматизация рутинных задач и работа с сетевыми подключениями — ключевые навыки для администратора Linux. В этой главе вы освоите:
* настройку планировщика задач cron;
* создание и редактирование расписаний;
* основы сетевых команд для диагностики и подключения;
* практические сценарии автоматизации.