1. Переменные: объявление и чтение
Классическая демонстрация из источника (Lecture 6). Обратите внимание: чтение через $ — иначе вывод — просто текст.
# Объявляем две переменные и читаем их через echo
export MY_VAR=hello
export var=world
echo $MY_VAR $var
# вывод: hello world
# Ловушка: без $ выводится текст, не значение
echo MY_VAR
# вывод: MY_VAR
2. Переменная PATH
# Посмотреть текущий PATH
echo $PATH
# вывод (типичный): /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
# Добавить свой каталог в начало PATH
export PATH=/opt/mybin:$PATH
echo $PATH
# вывод: /opt/mybin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
Добавлять в
Без записи в
~/.bashrcБез записи в
~/.bashrc (или ~/.bash_profile) изменение PATH
сохранится только до конца текущей сессии.
3. env: список переменных окружения
# Все переменные окружения текущей сессии
env
# Отфильтровать свою переменную
export ANDREW_VARIABLE=group_name
env | grep ANDREW
# вывод: ANDREW_VARIABLE=group_name
4. unset: удалить переменную
export MY_VAR=hello
echo $MY_VAR # hello
unset MY_VAR
echo $MY_VAR # (пустая строка)
5. Подсчёт процессов через конвейер
Паттерн из ДЗ 6 — найти процессы по шаблону и посчитать:
# Считаем ssh-процессы (grep -v grep исключает сам процесс grep)
ps -ef | grep ssh | grep -v grep | wc -l
# Считаем процессы root
ps -ef | grep root | grep -v grep | wc -l
# Найти sshd и вывести его PID и PPID
ps -ef | grep '[s]shd -D' | awk '{print "PID", $2, "PPID", $3}'
Почему
Когда вы запускаете
grep -v grep?Когда вы запускаете
ps -ef | grep ssh, сам процесс grep ssh
тоже виден в выводе ps и содержит слово «ssh» в аргументах.
grep -v grep исключает строки со словом grep, оставляя
только реальные ssh-процессы.
6. Оперативная память
free -m
# total used free shared buff/cache available
# Mem: 3886 1205 342 12 2338 2422
# Swap: 0 0 0
# Получить только объём ОЗУ в МБ (total)
free -m | grep Mem | awk '{print $2}'
# вывод: 3886