Совет по Linux 💡
Как анализировать системные вызовы в Linux?
Вы можете наблюдать, как происходит обмен данными между программой пользовательского пространства и ядром.
Как анализировать системные вызовы в Linux?
Strace - это утилита командной строки, которая перехватывает и записывает все системные вызовы, которые выполняет программа в пользовательском пространстве, и все сигналы, которые она получает.Вы можете наблюдать, как происходит обмен данными между программой пользовательского пространства и ядром.
❤1
📌 Шпаргалка по MDRAID
Создание массива:
После чего нужно создать конфигурационный файл mdadm.conf
И записать изменения в загрузочный образ:
Работа с массивом
Пометка диска как сбойного
Диск в массиве можно условно сделать сбойным, ключ --fail (-f):
Удаление сбойного диска
Сбойный диск можно удалить с помощью ключа --remove (-r):
Добавление нового диска
Добавить новый диск в массив можно с помощью ключей --add (-a) и --re-add:
Сборка существующего массива
Собрать существующий массив можно с помощью mdadm --assemble. Как дополнительный аргумент указывается, нужно ли выполнять сканирование устройств, и если нет, то какие устройства нужно собирать.
Проверить состояние массива и получить информацию и массиве
Состояние массива:
Информация о массиве:
Информация об элементе массива:
Проверка целостности.
зарускаем проверку
смотрим результат
~# cat /proc/mdstat
Personalities : [raid10] [raid1]
md0 : active raid1 sdb1[1] sda1[0] sdc1[2] sdd1[3]
128384 blocks [4/4] [UUUU]
md1 : active raid10 sdd2[3] sdc2[2] sda2[0] sdb2[1]
134222848 blocks 256K chunks 2 near-copies [4/4] [UUUU]
[>....................] check = 0.5% (787072/134222848) finish=19.7min speed=112438K/sec
Убить массив
Создание массива:
mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sda1 /dev/sdb1После чего нужно создать конфигурационный файл mdadm.conf
mdadm --detail --scan > /etc/mdadm/mdadm.confИ записать изменения в загрузочный образ:
update-initramfs -uРабота с массивом
Пометка диска как сбойного
Диск в массиве можно условно сделать сбойным, ключ --fail (-f):
mdadm /dev/md0 --fail /dev/hde1
mdadm /dev/md0 -f /dev/hde1Удаление сбойного диска
Сбойный диск можно удалить с помощью ключа --remove (-r):
mdadm /dev/md0 --remove /dev/hde1
mdadm /dev/md0 -r /dev/hde1Добавление нового диска
Добавить новый диск в массив можно с помощью ключей --add (-a) и --re-add:
mdadm /dev/md0 --add /dev/hde1
mdadm /dev/md0 -a /dev/hde1Сборка существующего массива
Собрать существующий массив можно с помощью mdadm --assemble. Как дополнительный аргумент указывается, нужно ли выполнять сканирование устройств, и если нет, то какие устройства нужно собирать.
mdadm --assemble /dev/md0 /dev/hde1 /dev/hdf2 /dev/hdg1
mdadm --assemble --scanПроверить состояние массива и получить информацию и массиве
Состояние массива:
cat /proc/mdstatИнформация о массиве:
mdadm --detail /dev/md0Информация об элементе массива:
mdadm --examine /dev/sda1Проверка целостности.
зарускаем проверку
echo check > /sys/block/md1/md/sync_actionсмотрим результат
~# cat /proc/mdstat
Personalities : [raid10] [raid1]
md0 : active raid1 sdb1[1] sda1[0] sdc1[2] sdd1[3]
128384 blocks [4/4] [UUUU]
md1 : active raid10 sdd2[3] sdc2[2] sda2[0] sdb2[1]
134222848 blocks 256K chunks 2 near-copies [4/4] [UUUU]
[>....................] check = 0.5% (787072/134222848) finish=19.7min speed=112438K/sec
Убить массив
mdadm --stop /dev/md0
mdadm --zero-superblock /dev/sda..👍3❤1
Факт о Linux 💡
Вы можете запустить целое отдельное ядро Linux внутри одного процесса на своей машине. Без root-прав и без какого-либо ПО для виртуализации.
Это User-Mode Linux (UML). Это специальный порт ядра, который работает как обычное пользовательское приложение.
Вместо обращения к железу оно взаимодействует с вашим хостовым ОС. Файл превращается в жёсткий диск, а ваш терминал в его консоль. Вы можете загрузить систему, залогиниться и запускать программы, почти как в VM, но всего одной простой командой.
Это мощный инструмент для разработки и отладки ядра, а также для создания изолированных тестовых окружений за считанные секунды
Источник
Вы можете запустить целое отдельное ядро Linux внутри одного процесса на своей машине. Без root-прав и без какого-либо ПО для виртуализации.
Это User-Mode Linux (UML). Это специальный порт ядра, который работает как обычное пользовательское приложение.
Вместо обращения к железу оно взаимодействует с вашим хостовым ОС. Файл превращается в жёсткий диск, а ваш терминал в его консоль. Вы можете загрузить систему, залогиниться и запускать программы, почти как в VM, но всего одной простой командой.
Это мощный инструмент для разработки и отладки ядра, а также для создания изолированных тестовых окружений за считанные секунды
Источник
❤3
Горячие клавиши терминала Linux
Общие:
История команд:
Стрелки вверх и вниз - используются для перемещения вперед и назад по истории команд.
Перемещение курсора:
Редактирование:
Общие:
Ctrl+Alt+T - в дистрибутивах, основанных на Ubuntu это сочетание клавиш используется для открытия терминала.Tab - эта клавиша используется для автодополнения в терминале. Вам достаточно набрать начало какой-нибудь команды, затем нажать её и команда предложит доступные варианты или завершит её если она одна.Ctrl+L - очистить весь вывод терминала.Ctrl+S - приостановить вывод терминала.Ctrl+Q - возобновить вывод если он был приостановлен.Ctrl+C - отправить команде сигнал SigInt для её завершения.Ctrl+Z - свернуть текущую команду в фоновый режим.История команд:
Стрелки вверх и вниз - используются для перемещения вперед и назад по истории команд.
Ctrl+r - можно использовать для поиска по истории команд.Ctrl+p - предыдущая команда в истории команд.Ctrl+n - следующая команда в истории команд.Ctrl+g - если вы находитесь в режиме поиска, завершает поиск.Ctrl+o - выполнить найденную поиском команду.Alt+. - использовать последнее слово предыдущей команды.Перемещение курсора:
Ctrl+a - перейти в начало строки.Ctrl+e - перейти в конец строки.Alt+b - перейти влево на одно слово.Alt+f - перейти в право на одно слово.Ctrl+b - перейти влево на один символ.Ctrl+f - перейти вправо на один символ.Ctrl+xx - перейти в конец или в начало строки.Редактирование:
Ctrl+u - вырезать строку до позиции курсора.Alt+Del - удалить слово перед курсором.Alt+d - удалить слово после курсора.Ctrl+d - удалить символ под курсором.Ctrl+h - удалить символ под курсором.Ctrl+w - вырезать слово под курсором.Ctrl+k - вырезать строку от позиции курсора до конца строкиAlt+t - поменять текущее слово с предыдущим.Ctrl+t - поменять местами два символа перед курсором.Esc+t - поменять местами два слова перед курсором.Ctrl+y - вставить то, что было вырезано.Alt+u - сделать верхний регистр символов от позиции курсора до конца текущего слова.Alt+l - сделать нижний регистр символов от позиции курсора до конца слова.Alt+c - перевести символ под курсором в верхний регистр и перейти к концу слова.Alt+r - вернуть строку в исходное состояние.Ctrl+_ - отменить последнее действие со строкой.❤4👍3❤🔥1
🎥 Вебинар по Linux: Введение в Docker: контейнеры, изоляция и первые шаги.
На вебинаре вы узнаете:
- Чем контейнеризация отличается от виртуализации и почему Docker стал стандартом.
- Как устроены контейнер, образ и Docker Engine.
- Как запустить и управлять контейнерами с помощью базовых команд docker run, ps, exec, stop).
- Как использовать Docker Hub и скачивать готовые образы.
В результате вебинара вы:
- Разберётесь в ключевых понятиях Docker.
- Научитесь запускать и управлять контейнерами.
- Сможете использовать готовые образы для своих тестовых окружений.
- Поймёте, куда двигаться дальше в изучении контейнерных технологий.
🎁 Все участники вебинара получат специальные условия на полное обучение курса "Administrator Linux. Professional"
👉 Для участия зарегистрируйтесь: https://vk.cc/cRv6Ci
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
На вебинаре вы узнаете:
- Чем контейнеризация отличается от виртуализации и почему Docker стал стандартом.
- Как устроены контейнер, образ и Docker Engine.
- Как запустить и управлять контейнерами с помощью базовых команд docker run, ps, exec, stop).
- Как использовать Docker Hub и скачивать готовые образы.
В результате вебинара вы:
- Разберётесь в ключевых понятиях Docker.
- Научитесь запускать и управлять контейнерами.
- Сможете использовать готовые образы для своих тестовых окружений.
- Поймёте, куда двигаться дальше в изучении контейнерных технологий.
🎁 Все участники вебинара получат специальные условия на полное обучение курса "Administrator Linux. Professional"
👉 Для участия зарегистрируйтесь: https://vk.cc/cRv6Ci
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
❤3👍1👎1🤣1
This media is not supported in your browser
VIEW IN TELEGRAM
Совет по Linux 💡
Чтобы получить список файлов, которые содержат заданную строку, используйте:
Чтобы получить список файлов, которые содержат заданную строку, используйте:
grep -rl string .
-r — рекурсивный обход-l — вывести имена файлов с совпадениями👍3❤1
Базовые команды Linux, которые должен знать каждый!
📌 Работа с файлами и директориями:
📌 Просмотр и редактирование файлов:
📌 Свойства файлов:
📌 Манипуляции с текстом:
📌 Управление пользователями и группами:
📌 Мониторинг и управление системой:
📌 Сетевые команды:
📌 Работа с файлами и директориями:
ls — просмотр содержимого папки
cp — копирование файлов/папок
mv — перемещение или переименование
cd — переход между папками
mkdir — создание директории
rm — удаление файлов/папок
📌 Просмотр и редактирование файлов:
cat — вывод содержимого файла
less — постраничный просмотр
head — первые строки файла
tail — последние строки
more — аналог less
nano — простой текстовый редактор
vim — мощный редактор в терминале
📌 Свойства файлов:
file — тип файла
touch — создать пустой файл или обновить дату
chmod — изменение прав доступа
chgrp — смена группы
wc — подсчёт строк, слов, символов
du — объём занимаемого дискового пространства
📌 Манипуляции с текстом:
grep — поиск по шаблону
cut/paste — извлечение/вставка колонок
tr — замена символов
sort — сортировка
tee — вывод в файл и на экран
expand — замена табуляции пробелами
📌 Управление пользователями и группами:
useradd — добавление пользователя
usermod — изменение пользователя
userdel — удаление пользователя
groupadd — добавление группы
groupdel — удаление группы
groupmod — изменение группы
chgrp — смена группы файла
📌 Мониторинг и управление системой:
df — свободное место на дисках
uname — информация о системе
free — использование оперативной памяти
shutdown — выключение/перезагрузка
lsof — открытые файлы
rsync — синхронизация данных
ps — активные процессы
📌 Сетевые команды:
dig/nslookup — DNS-запросы
ping — проверка доступности
curl — запрос к URL
scp — копирование по SSH
ifconfig — настройки сети
traceroute — путь до хоста
❤7👍4😁2
Трюки терминала Bash
Полезные комбинации клавиш (хоткеи) и небольшие хитрости, которые сделают Вашу работу в Linux более эффективной.
Горячие клавиши" Bash с Ctrl
Изменить заглавные на строчные и наоборот
Запустить предыдущую команду ещё раз
Запустить команду из истории по номеру (например, 53)
Запускает последнюю команду и меняет какой-то параметр. Например, меняем
Важно: предыдущая команда заменит только первое вхождение "aaa". Если вы хотите заменить все вхождения, используйте
Запустить последнюю команду, которая начинается с...
Например, до этого в истории команд была команда cat filename:
— запускает
Указание файлов по шаблону в Bash
Полезные переменные окружения Bash
Короткие переменные:
Более длинные, но тоже полезные переменные:
Полезные комбинации клавиш (хоткеи) и небольшие хитрости, которые сделают Вашу работу в Linux более эффективной.
Горячие клавиши" Bash с Ctrl
Ctrl + n — то же самое, что и стрелка вниз.Ctrl + p — то же самое, что и стрелка вверх.Ctrl + r — поиск по предыдущим командам из истории команд (history). Продолжайте нажимать Ctrl + r, чтобы искать дальше. Ctrl + Shift + r — поиск в другую сторону.Ctrl + s — остановить вывод в терминал.Ctrl + q — восстановить вывод в терминал после Ctrl + s.Ctrl + a — перейти к началу строки (аналог клавиши Home).Ctrl + e — перейти к концу строки (аналог клавиши End).Ctrl + d — если вы ввели что-то, то Ctrl + d удаляет символ под курсором. В противном случае означает конец ввода и завершает текущую сессию Bash.Ctrl + k — удалить весь текст от курсора до конца строки.Ctrl + x + backspace — удалить весь текст от начала строки до курсора.Ctrl + t — переставить символ до курсора на символ под курсором. Нажмите Esc + t для перестановки двух слов до курсора.Ctrl + w — удалить слово до курсора; затем Ctrl + y, чтобы вставить его.Ctrl + u — удалить строку перед курсором; Ctrl + y для вставки его.Ctrl + _ — отменить ввод.Ctrl + l — очищает окно терминала. То же самое, что и clear.Ctrl + x + Ctrl + e — запускает редактор, определённый в переменной $EDITOR, для ввода команды. Полезно для многострочных команд.Изменить заглавные на строчные и наоборот
Esc + u — преобразовать буквы от курсора до конца строки в заглавные буквы.Esc + l — преобразовать буквы от курсора до конца строки в нижний регистр.Esc + c — заменить букву под курсором на заглавную.Запустить предыдущую команду ещё раз
Запустить команду из истории по номеру (например, 53)
!53!! — запуск последней команды.sudo !! — запустить предыдущую команду с sudo.Запускает последнюю команду и меняет какой-то параметр. Например, меняем
"aaa" на "bbb":
# Последняя команда: echo 'aaa'
$ ^aaa^bbb
$ echo 'bbb'
bbbВажно: предыдущая команда заменит только первое вхождение "aaa". Если вы хотите заменить все вхождения, используйте
:&:^aaa^bbb^:&
# или
!!:gs/aaa/bbb/Запустить последнюю команду, которая начинается с...
Например, до этого в истории команд была команда cat filename:
!cat
# или
!c— запускает
cat filename ещё раз.Указание файлов по шаблону в Bash
/etc/pa*wd → /etc/passwd — символ * означает "несколько любых символов"./b?n/?at → /bin/cat — символ ? означает "один любой символ".ls -l [a-z]* — вывести список файлов, содержащих только буквы латинского алфавита. В квадратных скобках [] перечисляются символы, которые будут искаться. А символ * после [] означает "хоть сколько раз".ls {*.sh,*.py} — вывести все .sh и .py файлы. {} используется для группировки нескольких шаблонов по принципу "или".Полезные переменные окружения Bash
Короткие переменные:
$0 — оболочка командной строки или путь до запускаемого файла.$1, $2, $3, ... — аргументы запуска скрипта.$# — число аргументов, переданных в скрипт из терминала.$? — код завершения последней команды.$- — текущие опции, установленные для оболочки.$$ — идентификатор текущего процесса.$! — идентификатор процесса, завершённого последним.Более длинные, но тоже полезные переменные:
$DESKTOP_SESSION — текущий менеджер дисплеев.$EDITOR — редактор текста по умолчанию.$LANG — используемый системой язык.$PATH — список директорий, в которых будут искаться исполняемые файлы.$PWD — текущая директория.$SHELL — текущая оболочка командной строки.$USER — имя текущего пользователя.$HOSTNAME — имя текущего хоста (компьютера).❤2👍2
Команды для получения сведений о системе, активности пользователей
date – вывести текущую дату и время
cal – вывести календарь на текущий месяц
uptime – показать время с момента последней загрузки ОС.
w – сведения о пользователях, зарегистрировавшихся в системе
users - список имен пользователей, вошедших в систему.
last - список пользователей, вошедших в систему по данным из специального файла /var/log/wtmp. Отображается имя, терминал, время входа IP-адрес и т.п.
last –ad - сведения о пользователях, вошедших в систему, с отображением в последней колонке имени компьютера с которого выполнен вход.
last –F - отобразить время входа пользователей в систему, длительность сессий и время выхода.
last –x - отобразить сведения о выключениях, перезагрузках и изменениях уровня запуска системы.
last root - отобразить сведения о сеансах пользователя root.
last -n 10 user1 - отобразить сведения о десяти последних сеансах пользователя user1.
lastlog - отобразить список всех пользователей и время их последнего входа в систему.
whoami – имя, под которым вы в данный момент работаете в системе.
finger user – показать информацию о user
uname -a – отобразить все сведения о системе.
uname -vr – отобразить номер выпуска операционной системы и версию ядра.
df – отобразить информацию об использовании дисков.
du – отобразить информацию об использовании текущего каталога
free – информация об использовании реальной и виртуальной памяти.
whatis app - отобразить краткую информацию об app из базы данных документации.
whereis app – где находится исполняемый модуль app
which app – какой исполняемый модуль приложения app будет запущен по умолчанию.
man command – отобразить справочную информацию для команды command
date – вывести текущую дату и время
cal – вывести календарь на текущий месяц
uptime – показать время с момента последней загрузки ОС.
w – сведения о пользователях, зарегистрировавшихся в системе
users - список имен пользователей, вошедших в систему.
last - список пользователей, вошедших в систему по данным из специального файла /var/log/wtmp. Отображается имя, терминал, время входа IP-адрес и т.п.
last –ad - сведения о пользователях, вошедших в систему, с отображением в последней колонке имени компьютера с которого выполнен вход.
last –F - отобразить время входа пользователей в систему, длительность сессий и время выхода.
last –x - отобразить сведения о выключениях, перезагрузках и изменениях уровня запуска системы.
last root - отобразить сведения о сеансах пользователя root.
last -n 10 user1 - отобразить сведения о десяти последних сеансах пользователя user1.
lastlog - отобразить список всех пользователей и время их последнего входа в систему.
whoami – имя, под которым вы в данный момент работаете в системе.
finger user – показать информацию о user
uname -a – отобразить все сведения о системе.
uname -vr – отобразить номер выпуска операционной системы и версию ядра.
df – отобразить информацию об использовании дисков.
du – отобразить информацию об использовании текущего каталога
free – информация об использовании реальной и виртуальной памяти.
whatis app - отобразить краткую информацию об app из базы данных документации.
whereis app – где находится исполняемый модуль app
which app – какой исполняемый модуль приложения app будет запущен по умолчанию.
man command – отобразить справочную информацию для команды command
👍4❤2
Совет по Linux 💡
Ваше ядро ведёт «дневник» всего, что видит и делает.
Этот лог — dmesg. В нём фиксируются процессы загрузки, инициализации драйверов и обнаружения нового оборудования. Это инструмент №1, когда нужно разобраться, «почему железо не работает?»
Но большинство обращается к нему только после того, как что-то сломалось.
Настоящая сила - читать
Вот фишка: открой терминал и выполни
▪️
▪️
Теперь подключи USB-устройство.
Ты увидишь, как ядро «обнаруживает» девайс, определяет его и подгружает нужные драйверы, построчно, в реальном времени.
Это лучший способ увидеть, что именно творится под капотом твоей системы
Ваше ядро ведёт «дневник» всего, что видит и делает.
Этот лог — dmesg. В нём фиксируются процессы загрузки, инициализации драйверов и обнаружения нового оборудования. Это инструмент №1, когда нужно разобраться, «почему железо не работает?»
Но большинство обращается к нему только после того, как что-то сломалось.
Настоящая сила - читать
dmesg вживую, пока он записывается.Вот фишка: открой терминал и выполни
dmesg -WH
▪️
-H (или --human) преобразует непонятные секунды с момента загрузки в привычные, читаемые человеком временные метки.▪️
-W (или --follow-new) — это магия. Это как tail -f для вашего ядра, печатает новые сообщения по мере их появления.Теперь подключи USB-устройство.
Ты увидишь, как ядро «обнаруживает» девайс, определяет его и подгружает нужные драйверы, построчно, в реальном времени.
Это лучший способ увидеть, что именно творится под капотом твоей системы
👍8❤2
Основы сетевых пространств имён в Linux
Прежде чем переходить к Docker и Kubernetes, стоит разобраться в базовых технологиях:
- Создание сетевого пространства имён в Linux: https://labs.iximiuz.com/challenges/linux-network-namespace
- Соединение двух сетевых пространств имён: https://labs.iximiuz.com/challenges/connect-two-network-namespaces
- Соединение нескольких сетевых пространств имён: https://labs.iximiuz.com/challenges/connect-multiple-network-namespaces
Прежде чем переходить к Docker и Kubernetes, стоит разобраться в базовых технологиях:
- Создание сетевого пространства имён в Linux: https://labs.iximiuz.com/challenges/linux-network-namespace
- Соединение двух сетевых пространств имён: https://labs.iximiuz.com/challenges/connect-two-network-namespaces
- Соединение нескольких сетевых пространств имён: https://labs.iximiuz.com/challenges/connect-multiple-network-namespaces
❤2