Базовый набор линукс знаний
Команды, утилиты
Запуск команд
;- используется для выполнения нескольких команд последовательноcommand1 ; command2&&- выполняет вторую команду только если первая завершилась успешно (вернула код завершения0)command1 && command2||- выполняет вторую команду только если первая завершилась неудачно (вернула код завершения, отличный от 0)command1 || command2|- используется для передачи вывода одной команды на вход другой, создавая конвейер (пайплайн)command1 | command2>>и>- перенаправление вывода (stdout) в файл>- перенаправление стандартного вывода в файл, создавая или перезаписывая файл>>- добавление вывода в конец существующего файлаcommand > output.txt<br> command >> output.txt<- чтение ввода команды (stdin) из файла вместо стандартного вводаcommand < input.txt2>- перенаправление вывода ошибок (stderr) в файлcommand 2> error.log
Для управления файлами
ls - просмотр содержимого каталога
По умолчанию показывает текущий каталог. Если в параметрах указать путь, то она перечислит содержимое конечного каталога.
ls -l: Выводит более подробную информацию, такую как права доступа, количество жестких ссылок, владелец, группа, размер, время последней модификации и имя файла.ls -a: Выводит все файлы, включая скрытые файлы, имя которых начинается с точки.ls -h: Показывает размеры файлов в удобочитаемом формате, таком как KB, MB, GB.
cat - печатает содержимое файла
Печатает содержимое файла, переданного в параметре, в стандартный вывод. Если передать несколько файлов, команда склеит их. Также можно перенаправить вывод в ещё один файл с помощью символа >.
cat -n- вывод с нумерацией строкcat -E- показывать символ конца строки ($)cat -A- показывать непечатные символы и символы конца строки Примеры использования:cat file1.txt file2.txt- конкатенация файлов и вывод на экранcat file1.txt file2.txt > mergedfile.txt- объединение файлов и сохранение в новом файлеcat > newfile.txt- создание нового файла, позволяет вводить текст с клавиатуры, который затем будет записан в файл newfile.txt
cd - переход по каталогам
Позволяет перейти из текущего каталога в указанный. Если запустить без параметров - возвращает в домашний каталог. Вызов с двумя точками возвращает на уровень вверх относительно текущего каталога. Вызов с тире (cd -) возвращает к предыдущему каталогу.
pwd - печатает на экран текущий каталог
mkdir - создание нового каталога
Наиболее удобная опция -p (Parents), позволяет создать всю структуру подкаталогов одной командой, даже если они ещё не существуют:
mkdir -p home/Загрузки/{папка1,папка2,папка3}
home
└── Загрузки
├── папка1
├── папка2
└── папка3
touch — изменяет время доступа и модификации файла
Если файла ещё нет, touch filename создаст пустой файл. С флагом -c отсутствующий файл не создаётся.
file - показывает тип файла, даже без расширения
cp- копирование файлов и каталогов
Утилита имеет два возможных варианта синтаксиса для копирования файлов:
- копирование файла в другой файл с указанным именем:
cp опции /путь/к/файлу/источнику /путь/к/файлу/назначения - копирование файла с сохранением его имени в указанную папку:
cp опции /путь/к/файлу/источнику /путь/к/директории/назначенияcp -r- скопировать папку рекурсивно со всем содержимымcp -f- перезаписывает файлы с одинаковыми именами без подтверждения
mv - перемещение или переименование файлов и каталогов
mv file1 file2 file3 /path/to/destination/ - перемещение нескольких файлов в каталог
mv file.txt newfile.txt - переименование файла
mv sourcedirectory /path/to/destination/ - перемещение каталога; флаг -r для mv не нужен
mv -f file.txt /path/to/destination/ - если файл file.txt уже существует в каталоге /path/to/destination/, он будет перезаписан без запроса подтверждения
rm - удаляет файлы и папки
rm -r directory - удаление каталога и его содержимого
rm *.txt - удаляет все файлы с расширением .txt в текущем каталоге
find /path/to/files -name "*.tmp" -exec rm {} \; - поиск и удаление всех файлов с расширением .tmp в указанном каталоге
ln (llink) - cоздает жёсткие или символические ссылки на файлы
chmod - изменяет права доступа к файлу

chown - изменяет владельца файла
chown john file.txt - изменение владельца файла
chown alice:users file.txt - изменение владельца и группы файла
chown -R newowner:newgroup directory - рекурсивно изменить владельца и группу для всех файлов и подкаталогов в указанном каталоге
chown 1000 filename - изменение владельца по UID
chown $USER filename - cмена владельца файла на текущего пользователя
find - поиск файлов и каталогов
find /path/to/search -name filename - простой поиск по имени файла
find /path/to/search -type f - ищет только обычные файлы (не каталоги, символические ссылки и т.д.)
find /path/to/search -mtime -7 - ищет файлы, измененные в течение последних 7 дней
find /path/to/search -name '*pattern*' - поиск по шаблону в имени
find /path/to/search -name '*.txt' -exec cat {} \; - выполняет указанную команду для каждого найденного файла. {} заменяется именем файла, а \; означает конец команды

du (disk usage) - показывает размер файла или каталога
du - выведет размеры всех подкаталогов в текущем каталоге
du -h /path/to/directory - выведет размеры всех подкаталогов в указанном каталоге в удобочитаемом формате
du -s /path/to/directory - вывод только общего размера указанного каталога
find /path/to/directory -name '*.txt' -exec du -h {} + - вывод размера каждого найденного файла с расширением .txt
df (disk free) - просмотр свободного места на диске
Утилита df позволяет проанализировать свободное пространство на всех подключенных к системе разделах.
По умолчанию df использует блоки, размер которых зависит от опций и окружения (часто 1024 байта). Для удобочитаемого вывода используется ключ -h:
df -h /home показывает файловую систему, на которой расположен каталог /home, а не размер самого каталога.
Другие ключи:
-m- отображать размер в мегабайтах-T- отображать тип файловой системы-a- включить в список все файловые системы-i- отображать используемые inode
mount / umount - подключение и отключение файловых систем
free - просмотр данных по использованию оперативной памяти
Архивация
tar - архивирование файлов
Архивирование в linux это не одно и то же что и сжатие файлов. Архивирование - это объединение нескольких небольших файлов в один, с целю более удобной последующей передачи, хранения, шифрования или сжатия. Для сжатия применяются другие утилиты, чаще всего - gzip.
tar -cvf archive.tar file1 file2 directory1- создание архива-c- создать архив.-v- отобразить подробный вывод.-f- указать имя архиваtar -xvf archive.tar- распаковка архива-x- распаковать архивtar -czvf archive.tar.gz file1 file2 directory1- создание архива с сжатием gzip-z- использовать gzip для сжатияtar -xzvf archive.tar.gz- распаковка архива с сжатием gziptar -xvf archive.tar file1- извлечение определенных файлов из архива
Для работы с текстом
less - просмотр текстовых файлов постранично
- Прокрутка вперед и назад:
- Используйте стрелки вверх и вниз для прокрутки построчно.
- Используйте пробел для прокрутки на одну страницу вперед.
- Используйте клавишу
bдля прокрутки на одну страницу назад. - Используйте клавишу
qдля выхода изless - Поиск в тексте:
- Введите
/и затем введите строку для поиска. Например,/search_string. - Используйте клавиши
nиNдля перехода к следующему или предыдущему совпадению. - Переход к определенной строке:
- Введите номер строки и
g: например,100gперейдёт к строке 100. Можно также запуститьless +100 filename. - Отображение номеров строк:
- Запустите
lessс опциейNдля отображения номеров строк. Например,less -N filename.
grep - поиск строк текста в файлах или выводе команд
grep "pattern" filename - поиск подстроки в файле
grep -r "pattern" /path/to/directory - поиск рекурсивно в файлах, содержащихся в указанном каталоге и его подкаталогах
grep '^[[:digit:]]' filename - переносимый поиск строк, начинающихся с цифры
grep -n "pattern" filename - отображает номера строк, где найден шаблон
grep -m 3 "pattern" filename - ограничивает вывод первыми тремя строками, содержащими совпадение
ps aux | grep "process_name" - выводит список всех процессов, а потом ищет процесс с именем "process_name"
head / tail - отображение первых/последних строк файла
По умолчанию каждая утилита выводит десять строк. Но это можно изменить с помощью опции -n:
head -n 20 filename - отображение первых 20 строк
tail -f filename - вывод последних записей в реалтайме (полезно, например, для логов)
sort - сортировка строк текста по различным критериям
sort -n filename - сортировка по числам
sort -r filename - обратная сортировка, то есть в убывающем порядке
wc (word count) - подсчёт количества слов, строк, байт и символов
-l / -w / -c / -m - подсчёт переводов строк / слов / байтов / символов
diff - показывает различия между двумя файлами в построчном сравнении
Обычный формат diff использует команды a, c, d и помечает строки </>. Формат diff -u показывает unified hunks со строками + и -.
diff -u originalfile modifiedfile > mypatch.patch - создание патча, который может быть применен к оригинальному файлу для получения модифицированной версии
patch originalfile < mypatch.patch - применяет патч к оригинальному файлу, обновляя его согласно изменениям, указанным в патче
Для управления процессами
ps (processes) - просмотр списка запущенных процессов
ps aux | grep <название_процесса>Позволяет фильтровать вывод по имени процесса.ps -u <пользователь>Отображает процессы, запущенные указанным пользователем.ps -eилиps -AПоказывает все процессы в системе.ps -lВыводит подробный формат вывода, включая дополнительные столбцы, такие как UID (id пользователя), PID (id процесса), PPID (id родительского процесса), C (CPU использование), PRI (приоритет) и другие.
htop - продвинутый монитор процессов с возможностью в реальном времени отслеживать и взаимодействовать с процессами
htop -s %CPU- сортировка по использованию процессораhtop --tree- отображает процессы в виде дерева, что удобно для понимания их иерархииhtop -u <пользователь>- отображение процессов определенного пользователя
kill - отправка сигнала процессу
по умолчанию отправляет сигнал SIGTERM для завершения процесса
kill -9 PID - принудительное завершение (SIGKILL) процесса
pkill / killall - завершение процесса по его имени
pgrep - поиск PID процесса по его имени
Команды окружения пользователя
whoami - узнать имя текущего пользователя
id - вывод id пользователя, его основной и остальных групп
date - выводит дату и время в стандартный вывод
alias - создание псевдонимов для других команд
alias - выводит список текущих псевдонимов
alias ll='ls -alF' - создает псевдоним ll для команды ls -alF. Теперь, когда вы введете ll в терминале, это будет равносильно выполнению ls -alF
unalias ll - удаление псевдонима ll
alias grep='grep --color=auto' - cоздание псевдонима с параметрами
Псевдонимы действуют только в текущем сеансе терминала, если они не добавлены в файл инициализации оболочки:
echo "alias ll='ls -alF'" >> ~/.bashrc
uname - выводит информацию о системе
uname -a выведет Linux vm758213 5.15.0-57-generic #63-Ubuntu SMP Thu Nov 24 13:43:17 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
Linux:
Название ядра операционной системы.
vm758213:
Имя хоста.
5.15.0-57-generic:<br>Версия ядра Linux
#63-Ubuntu SMP Thu Nov 24 13:43:17 UTC 2022:
Это информация о версии ядра и времени его компиляции. В данном случае, это 63-я сборка ядра, скомпилированная для Ubuntu, выпущенная 24 ноября 2022 года в 13:43:17 по UTC.
x86_64 x86_64 x86_64:
Информация об архитектуре процессора.
GNU/Linux:
Указание на то, что операционная система является частью семейства GNU и использует ядро Linux.
uptime - выводит время работы системы
sleep - задержка в выполнении команд
может быть использована, например, в скриптах для паузы между какими-то действиями
синтаксис: sleep [num][suffix]
num - число, определяющее задержку
suffix - единицы времени, может быть s(по умолчанию), m, h и d
Для управления пользователями
su (switch user) - переключение на другого пользователя
su без ключей - переключение на root
su john - переключение на пользователя john
su -s /bin/bash username - запуск сессии su с выбранной оболочкой; постоянную login shell меняют через chsh или usermod -s с нужными правами
sudo (substitute user and do) - выполнить команду от имени другого пользователя
sudo kill PID - завершить процесс от имени root
sudo -u username command - выполнить команду от имени username
useradd / userdel / usermod - добавить/удалить/изменить пользователя
passwd - изменить пароль учетной записи пользователя
Для просмотра документации
man - открывает руководство по команде
вывод man более подробный, чем --help
whereis — ищет бинарники, исходники и man-страницы
Чтобы узнать команду, которую выберет текущая shell, используйте command -v program.
Для работы с сетью
ping - проверка доступности хоста и измерения времени, за которое данные достигают его и возвращаются обратно
traceroute - отображает маршрут, который пакет данных проходит по пути от исходного узла к целевому
netstat - отображает различную сетевую статистику, такую как активные сетевые соединения, таблицы маршрутизации
nmap - сканирование сети, обнаружение открытых портов на удаленных узлах
nmap 104.18.39.102 - сканирует 1000 наиболее часто используемых портов на узле 104.18.39.102
nmap localhost - проверяет открытые порты на локальной машине
nmap -p- target - осуществляет проверку на открытость всех 65535 TCP-портов на указанном узле
curl - выполнение сетевых операций
curl http://example.com - отправляет GET-запрос по указанному URL
curl -O http://example.com/file.txt - загружает файл по указанному URL и сохраняет его с именем file.txt в текущем рабочем каталоге
curl -X POST -d "key1=value1&key2=value2" http://example.com/api - отправляет POST-запрос с указанными данными на указанный URL
curl -H "Content-Type: application/json" -H "Authorization: Bearer TOKEN" http://example.com/api - отправляет HTTP-запрос с установленными заголовками
curl -L http://example.com - следует за редиректами (если они есть) и выводит содержимое окончательного URL
Жесткие и символические ссылки
У объекта файловой системы есть индексный дескриптор (inode), к которому привязаны метаданные: размещение данных, размер, права и временные отметки. Номер inode уникален только внутри конкретной файловой системы; время создания поддерживается не всеми файловыми системами. Имя файла, ссылающееся на его индексный дескриптор, называется жесткой ссылкой. Механизм жестких ссылок – это основной способ обращения к файлам в Unix-подобных операционных системах. Таких ссылок можно создать множество, поэтому удаление жесткой ссылки на файл не приводит к удалению самого файла из системы при наличии у этого файла других жестких ссылок (имен файла). У жестких ссылок есть ограничения:
- их можно создавать только на файлы, но не на каталоги;
- жёсткая ссылка не может пересекать границу файловой системы. Символическая ссылка хранит путь к целевому файлу или каталогу. Цель может находиться в другой файловой системе или временно не существовать.
Система прав
Изначально каждый файл имеет три параметра доступа:
- Чтение (read) - разрешает получать содержимое файла. Для каталога позволяет получить список файлов и каталогов, расположенных в нем;
- Запись (write) — разрешает изменять содержимое файла. Удаление и переименование контролируются правами родительского каталога;
- Выполнение (execute) — разрешает запуск файла. Для каталога
xозначает возможность прохода и доступа к его элементам; Каждый файл имеет три категории пользователей, для которых можно устанавливать различные сочетания прав доступа: - Владелец - набор прав для владельца файла; сам статус владельца не гарантирует, что выставлены все биты доступа.
- Группа - любая группа пользователей, существующая в системе и привязанная к файлу. Но это может быть только одна группа и обычно это группа владельца, хотя для файла можно назначить и другую группу.
- Остальные - все пользователи, кроме владельца и пользователей, входящих в группу файла.
Для просмотра прав файла или каталога используется команда
ls. Для смены прав -chmod, для смены владельца -chown.
Сигналы процессам
Управление процессами в Linux осуществляется с помощью сигналов. Сигналы передает система, но также их может передавать пользователь с помощью специальных команд или даже сочетаний клавиш в терминале. Когда процессу приходит сигнал о необходимости завершиться, он должен выполнить некоторые подготовительные действия. Необходимо завершить дочерние процессы, удалить временные файлы, сокеты и так далее. Но в зависимости от сложности ситуации процесс может реагировать не на все сигналы. Рассмотрим основные сигналы, которые используются для завершения процесса:
- **SIGQUIT (3) - **это еще один сигнал, который отправляется с помощью сочетания клавиш, программе, запущенной в терминале. Он сообщает ей что нужно завершиться и программа может выполнить корректное завершение или проигнорировать сигнал. В отличие от предыдущего, она генерирует дамп памяти. Сочетание клавиш
Ctrl+/; - SIGHUP (1) - сообщает о потере управляющего терминала; многие daemon-процессы также трактуют его как команду перечитать конфигурацию;
- SIGINT (2) - interrupt, обычно отправляется foreground-процессу сочетанием
Ctrl+C; процесс может обработать или проигнорировать его; - SIGTERM (15) - стандартный запрос на завершение. Процесс может перехватить его и выполнить cleanup, а может проигнорировать;
kill -15 12345- отправляет SIGTERM процессу 12345 (дефолтный сигнал дляkill). - SIGKILL (9) - немедленное завершение ядром; сигнал нельзя перехватить, заблокировать или проигнорировать. Он не гарантирует завершение дочерних процессов;
kill -9 12345- отправляет SIGKILL процессу с PID 12345. Командаkill 12345без флага отправляет SIGTERM;
Фоновый режим выполнения заданий
Задание (job) — команда или pipeline, которыми управляет shell. & запускает job в фоне и возвращает prompt, но процесс всё ещё связан с терминалом; попытка читать из терминала обычно приостанавливает background job через job control.
jobs - посмотреть активные задачи в фоне
fg %1 - вернуть задачу с номером 1 на передний план
Ctrl+Z - приостановить задачу, bg - продолжить последнюю приостановленную задачу в background
Официальные источники
- GNU Coreutils:
touch,mv,du,df,wc - GNU Findutils, GNU Grep, GNU Diffutils
- Linux man-pages:
inode(7),signal(7),kill(1) - Bash Job Control