1. Что такое переменные
Переменная — это поименованная область памяти, в которой хранится значение. В bash переменные используются для хранения путей, настроек, временных данных.
Системные переменные задаются операционной системой или оболочкой и определяют поведение системы и программ. Примеры: PATH, HOME, LANG, TERM.
MY_VAR, PATH). Это джентльменское соглашение — bash его не требует, но все его соблюдают.
Значение переменной читается через знак $:
echo $HOME # /home/ec2-user
echo $PATH # /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
echo $TERM # xterm-256color
$ bash выведет не значение, а сам текст: echo PATH выведет PATH, а не путь. Это частая ошибка новичков.
2. Переменная PATH
PATH — одна из важнейших системных переменных. Она содержит список каталогов, разделённых двоеточием :. Когда вы вводите команду (например, ls), bash ищет исполняемый файл слева направо по всем каталогам из PATH.
echo $PATH
# /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
Стандартные каталоги:
/usr/local/bin— локально установленные программы/usr/bin— основные пользовательские утилиты/bin— базовые системные утилиты (ls, cp, mv)/usr/sbin,/sbin— утилиты администрирования
Добавить свой каталог в PATH (в текущей сессии):
export PATH=/opt/mybin:$PATH
Чтобы изменение сохранялось после перезагрузки — добавить в ~/.bashrc или ~/.bash_profile:
# ~/.bashrc
export PATH=/opt/mybin:$PATH
3. Команда env — список переменных сессии
Команда env показывает все переменные окружения текущей сессии.
env
# Вывод (пример):
# SHLVL=1
# HOME=/home/ec2-user
# OLDPWD=/home/ec2-user
# PAGER=less
# PS1=\u@\h:\w\$
# TERM=xterm-256color
# PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
# PWD=/home/ec2-user
# TZ=UTC
Разбор переменных учебной среды (sandbox):
| Переменная | Значение | Описание |
|---|---|---|
SHLVL | 1, 2, … | Уровень вложенности оболочек (при запуске bash внутри bash увеличивается) |
HOME | /home/ec2-user | Домашняя директория текущего пользователя |
OLDPWD | /home/ec2-user | Предыдущая рабочая директория (используется в cd -) |
PS1 | \u@\h:\w\$ | Вид приглашения командной строки (prompt) |
TERM | xterm-256color | Тип терминала (влияет на цвета и управляющие последовательности) |
PWD | /home/ec2-user | Текущая рабочая директория |
TZ | UTC | Часовой пояс (влияет на вывод date) |
4. Объявление переменной: export, чтение через $, unset
Объявление и экспорт
export MY_VAR=hello
export var=world
echo $MY_VAR $var
# вывод: hello world
Локальная переменная vs экспортированная:
MY_VAR=hello (без export) — переменная доступна только в текущей оболочке, дочерние процессы её не увидят. export MY_VAR=hello — переменная передаётся дочерним процессам (подоболочкам, запущенным программам). В учебных задачах всегда используйте export, если хотите, чтобы переменная была видна в скриптах.
Чтение значения
Значение переменной читается через $. Можно использовать в командах и строках:
echo $MY_VAR # hello
echo "Value: $MY_VAR" # Value: hello
ls $HOME # содержимое домашней директории
Сброс переменной
unset MY_VAR
echo $MY_VAR # (пусто)
Просмотр информации о системе
# Версия и дистрибутив Linux
cat /etc/os-release
# Информация о CPU
cat /proc/cpuinfo
5. Менеджмент ресурсов и управление процессами
top — интерактивный монитор
top показывает процессы в реальном времени. Ключевые показатели:
- Load Average: три числа — нагрузка за последние 1, 5, 15 минут. Значение 1.0 = 100% загрузки одного ядра.
- PID — уникальный идентификатор процесса
- PPID — PID родительского процесса
Выход из top: нажать q.
ps — список процессов (снимок)
# Все процессы системы (BSD-стиль)
ps aux
# Все процессы (Unix-стиль, показывает PPID)
ps -ef
ps отличается от top: делает снимок в момент запуска и завершается. top обновляется непрерывно.
kill и killall — завершение процессов
# Завершить процесс по PID (сигнал SIGTERM=15, даёт время завершиться)
kill PID
# Принудительно завершить (SIGKILL=9, немедленно, без очистки)
kill -9 PID
# Завершить все процессы по имени
killall имя_процесса
| Сигнал | Номер | Значение |
|---|---|---|
SIGTERM | 15 (по умолчанию) | Мягкое завершение — процесс может сохранить данные и завершиться корректно |
SIGKILL | 9 | Принудительное завершение — нельзя перехватить или проигнорировать |
SIGINT | 2 | Прерывание (Ctrl+C) |
SIGQUIT | 3 | Завершение с дампом памяти (Ctrl+\) |
kill -9 — крайняя мера. Процесс не успевает освободить ресурсы, закрыть файлы или сохранить состояние. Используйте сначала обычный kill PID (SIGTERM), и только если процесс не реагирует — kill -9.
df — свободное место на дисках
df -h # -h: human-readable (KB/MB/GB вместо блоков)
free — оперативная память
free -m # -m: в мегабайтах
Столбцы: total — всего; used — используется; free — свободно; available — реально доступно (учитывает кэш).