Читать книгу: «Работа в командной строке linux», страница 2

Шрифт:

3.2. Редактирование файлов в терминале

1. nano — простой редактор для новичков.

nano config.ini

Базовые сочетания клавиш:* Ctrl+O — сохранить;* Ctrl+X — выйти;* Ctrl+K — вырезать строку;* Ctrl+U — вставить;* Ctrl+W — поиск.

2. vim — мощный редактор для опытных пользователей.

vim script.py

Режимы:* командный (Esc) — навигация и команды;* вставка (i) — редактирование текста;* командная строка (:) — сохранение, выход и др.

Основные команды:* :w — сохранить;* :q — выйти;* :wq — сохранить и выйти;* :q! — выйти без сохранения.

3.3. Поиск информации в файлах

1. grep — поиск строк по шаблону.

grep "error" /var/log/syslog # Найти строки с "error"

grep -i "warning" logfile.log # Поиск без учёта регистра

grep -r "config" /home/user/ # Рекурсивный поиск в каталоге

grep -n "function" script.js # Вывод с номерами строк

2. find — поиск файлов по имени, размеру, дате и т. д.

find /home -name "*.txt" # Найти все .txt файлы в /home

find /var/log -mtime -7 # Файлы, изменённые за последние 7 дней

find . -size +1M # Файлы больше 1 МБ в текущей директории

3.4. Фильтрация и обработка текста

1. sort — сортировка строк.

sort data.txt

sort -r data.txt # Обратная сортировка

sort -n numbers.txt # Сортировка по числовому значению

2. uniq — удаление дубликатов (работает с отсортированными данными).

sort log.txt | uniq # Удалить повторяющиеся строки

3. wc (word count) — подсчёт строк, слов, байт.

wc -l script.sh # Количество строк

wc -w document.txt # Количество слов

wc -c data.bin # Количество байт

4. cut — извлечение колонок или символов.

cut -d':' -f1 /etc/passwd # Извлечь первое поле (разделитель — двоеточие)

cut -c1-10 file.txt # Извлечь первые 10 символов каждой строки

5. awk — обработка структурированных данных.

awk '{print $1}' /etc/passwd # Вывести первое поле каждой строки

awk -F':' '$3 > 1000' /etc/passwd # Найти пользователей с UID > 1000

3.5. Практические упражнения

1. Создайте файл test.log и заполните его 20 строками произвольного текста.

2. Выведите первые 5 строк файла командой head.

3. Выведите последние 3 строки файла командой tail.

4. Найдите все строки с словом «test» в файле с помощью grep.

5. Отсортируйте строки файла test.log по алфавиту и сохраните результат в sorted.log.

6. Подсчитайте количество строк в sorted.log командой wc.

7. Откройте файл sorted.log в редакторе nano, добавьте заголовок и сохраните изменения.

8. Найдите все файлы с расширением .log в каталоге /var/log командой find.

9. Выведите содержимое /etc/passwd, отобразив только имена пользователей (первое поле) с помощью cut.

10. Просмотрите большой лог‑файл (например, /var/log/syslog) с помощью less, найдите в нём строку с ошибкой (слово «error»).

Заключение

Вы освоили ключевые инструменты для работы с текстовыми файлами в Linux:* просмотр содержимого (cat, less, head, tail);* редактирование (nano, vim);* поиск информации (grep, find);* фильтрацию и обработку текста (sort, uniq, wc, cut, awk).

Эти навыки позволят вам эффективно анализировать логи, настраивать конфигурационные файлы и автоматизировать обработку данных.

В следующей главе мы рассмотрим работу с процессами и заданиями в Linux — управление запущенными программами, мониторинг ресурсов и планирование задач.

Глава 4. Управление процессами и заданиями в Linux

Введение

Процессы — основа многозадачности в Linux. Каждый раз, когда вы запускаете программу или выполняете команду, создаётся процесс. Умение управлять процессами критически важно для системного администрирования и эффективной работы с системой.

В этой главе вы:* узнаете, что такое процессы и какие они бывают;* освоите инструменты мониторинга процессов;* научитесь управлять приоритетами процессов;* познакомитесь с механизмами управления заданиями в оболочке;* изучите способы завершения процессов;* выполните практические задания для закрепления навыков.

4.1. Что такое процесс

Процесс — запущенный экземпляр программы, которому ядро Linux выделяет ресурсы (память, процессорное время и т. д.).

Каждый процесс имеет:* PID (Process ID) — уникальный идентификатор;* PPID (Parent PID) — идентификатор родительского процесса;* состояние (выполняется, спит, остановлен, зомби);* приоритет;* используемые ресурсы (CPU, память, файлы).

Типы процессов:* Интерактивные — работают на переднем плане, взаимодействуют с пользователем.* Фоновые (демоны) — работают без прямого взаимодействия с пользователем (например, веб‑сервер apache2).

4.2. Мониторинг процессов

1. ps (process status) — моментальный снимок процессов.

Основные опции:* ps aux — все процессы всех пользователей;* ps -ef — полный формат с PPID;* ps -u username — процессы конкретного пользователя;* ps -p PID — информация о конкретном процессе.

Пример:

ps aux | head -5

2. top — мониторинг в реальном времени.

Запуск:

top

Управление в top:* q — выход;* k — завершение процесса (запросит PID);* r — изменение приоритета (nice);* P — сортировка по CPU;* M — сортировка по памяти.

3. htop — улучшенная версия top с цветовым выделением и удобным интерфейсом.

Установка (если не установлен):

sudo apt install htop # Debian/Ubuntu

sudo yum install htop # CentOS/RHEL

Запуск:

htop

4.3. Управление заданиями (Job Control)

Задание — процесс или группа процессов, управляемых текущей оболочкой.

Основные команды:

1. jobs — показать задания текущей сессии:

jobs

2. fg (foreground) — перевести задание на передний план:

fg %1 # Перевести задание №1 на передний план

3. bg (background) — запустить приостановленное задание в фоне:

bg %2 # Запустить задание №2 в фоне

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;* создание и редактирование расписаний;* основы сетевых команд для диагностики и подключения;* практические сценарии автоматизации.

5.1. Планировщик задач cron

Cron — демон Linux, выполняющий задачи по расписанию. Каждая задача записывается в специальный файл — crontab (cron table).

Основные команды для работы с crontab:* crontab -e — отредактировать файл crontab или создать его;* crontab -l — показать содержимое файла crontab;* crontab -r — удалить текущий файл crontab;* crontab -i — удалить с запросом подтверждения;* crontab -u username -e — редактировать crontab другого пользователя (требуется root).

5.2. Синтаксис crontab

Каждая строка crontab состоит из 5 полей расписания и команды:

минута час день_месяца месяц день_недели команда

Поля:* минута (0–59);* час (0–23);* день месяца (1–31);* месяц (1–12 или jan–dec);* день недели (0–6, где 0 — воскресенье, или sun–sat).

Специальные символы:* * — любое значение (каждый);* , — список значений (например, 1,8);* - — диапазон (например, 1-5);* / — шаг (например, */5 — каждые 5 единиц).

Примеры расписаний:

0 2 * * * # Каждый день в 2:00

0 0 1 * * # Первое число каждого месяца в 0:00

*/10 * * * * # Каждые 10 минут

0 9-18 * * 1-5 # Каждый час с 9:00 до 18:00 с понедельника по пятницу

@reboot # При загрузке системы

@daily # Ежедневно в 0:00 (аналог 0 0 * * *)

@weekly # Еженедельно в 0:00 воскресенья (аналог 0 0 * * 0)

@monthly # Ежемесячно в 0:00 первого числа (аналог 0 0 1 * *)

5.3. Практические примеры заданий cron

1. Ежедневное резервное копирование:

0 3 * * * /usr/bin/tar -czf /backups/home_$(date +\%Y\%m\%d).tar.gz /home

2. Очистка временных файлов раз в неделю:

0 4 * * 0 /usr/bin/find /tmp -type f -mtime +7 -delete

3. Мониторинг использования диска ежедневно:

0 6 * * * df -h | mail -s "Disk Usage Report" admin@example.com

4. Запуск скрипта при загрузке:

@reboot /home/user/startup_script.sh

5. Проверка доступности сервера каждые 5 минут:

*/5 * * * * /bin/ping -c 1 192.168.1.1 > /dev/null || echo "Server down!" | mail -s "Alert" admin@example.com

199 ₽
Бесплатно

Начислим +6

Покупайте книги и получайте бонусы в Литрес, Читай-городе и Буквоеде.

Участвовать в бонусной программе
Возрастное ограничение:
16+
Дата выхода на Литрес:
13 апреля 2026
Дата написания:
2026
Объем:
80 стр.
Правообладатель:
Автор
Формат скачивания: