💻 Примеры — Занятие 10

К оглавлению урока

Все примеры ниже — запускаемые bash-команды. Скопируйте и вставьте в терминал на учебном сервере.

⚡ Минимальный набор

export MY_VAR=hello
echo $MY_VAR
echo $PATH
env | grep MY_VAR

Пример 1: Объявление и чтение переменной

Объявляем две переменные и выводим их значения. Значение читается через $.

export MY_VAR=hello
export var=world
echo $MY_VAR $var
Вывод:
hello world

Без $ bash выведет не значение, а буквальный текст:

echo MY_VAR
Вывод:
MY_VAR
Всегда пишите $ перед именем переменной при чтении значения: echo $MY_VAR, а не echo MY_VAR.

Пример 2: Просмотр PATH

PATH — список каталогов через :. Bash ищет программы слева направо.

echo $PATH
Вывод (типичный для учебного сервера):
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

Проверим, где bash находит команду ls:

which ls
Вывод:
/bin/ls

Пример 3: Добавление каталога в PATH

Добавляем свой каталог в PATH — чтобы скрипты из него запускались без указания полного пути.

export PATH=/opt/mybin:$PATH
echo $PATH
Вывод:
/opt/mybin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

Чтобы изменение сохранялось после перезагрузки — добавьте строку в ~/.bashrc:

# ~/.bashrc
export PATH=/opt/mybin:$PATH
Путь всегда пишите латиницей — кириллица в путях не поддерживается.

Пример 4: Просмотр всех переменных окружения (env)

Команда env выводит все переменные текущей сессии.

env
Вывод (фрагмент):
SHLVL=1
HOME=/home/ec2-user
PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
PWD=/home/ec2-user
TERM=xterm-256color
TZ=UTC

Найти конкретную переменную через фильтр:

env | grep MY_VAR
Вывод (после export MY_VAR=hello):
MY_VAR=hello

Пример 5: Сброс переменной (unset)

export MY_VAR=hello
echo $MY_VAR
unset MY_VAR
echo $MY_VAR
Вывод:
hello
             
После unset переменная пуста — echo выводит пустую строку.

Пример 6: Управление процессами

Посмотреть все процессы и найти нужный:

ps -ef

Найти процессы ssh (исключая сам grep):

ps -ef | grep ssh | grep -v grep
Вывод (пример):
root       123     1  0 10:00 ?  00:00:00 /usr/sbin/sshd -D
ec2-user   456   123  0 10:05 ?  00:00:00 sshd: ec2-user@pts/0

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

kill 456

Память и диски

# Свободная оперативная память в MB
free -m

# Дисковое пространство
df -h

# Информация о дистрибутиве
cat /etc/os-release

Пример 7: Конвейеры ДЗ (из источника)

Точные конвейеры, которые используются в домашнем задании:

Общий объём RAM (в MB):

free -m | grep Mem | awk '{print $2}'

Количество процессов пользователя root (исключая сам grep):

ps -ef | grep root | grep -v grep | wc -l

Найти свою переменную ANDREW_VARIABLE:

export ANDREW_VARIABLE=my_group
env | grep ANDREW
Вывод:
ANDREW_VARIABLE=my_group

PID и PPID процесса sshd:

ps -ef | grep '[s]shd -D' | awk '{print "PID", $2, "PPID", $3}'
Вывод:
PID 123 PPID 1
Квадратные скобки [s]shd — трюк для исключения самого grep из результатов (вместо grep -v grep).