Linux для чайника
19.7K subscribers
89 photos
4 files
81 links
Linux
- Разбор утилит / инструментов
- Новости / факты
- Опросы для проверки знаний, навыков
и многое другое.

Только по вопросам сотрудничества: @altmainf

Регистрация в перечне РКН https://clck.ru/3EpL9L
Download Telegram
Автоматическая очистка временных файлов

Cкрипт будет удалять файлы из директории /tmp, которые не изменялись более 7 дней.

#!/bin/bash
find /tmp -type f -mtime +7 -exec rm {} \;


find /tmp — ищет файлы в директории /tmp.
-type f — ищет только файлы (не каталоги).
-mtime +7 — находит файлы, которые не изменялись более 7 дней.
-exec rm {} \; — удаляет найденные файлы.
Изменение прав доступа командой chmod с помощью чисел.

Чтобы изменить права доступа к файлу, можно воспользоваться командой chmod. В таком случае каждому праву доступа (чтение, запись и выполнение) присваивается номер — r=4, w=2 и x=1 соответственно, то есть для задания прав доступа используются наборы чисел.

Например, чтобы установить полные права доступа для себя как владельца, необходимо определить первое число — 7 (4 + 2 + 1), а затем дать группе и другим пользователям право только на чтение, указав второе и третье числа — 4 (4 + 0 + 0), чтобы в итоге получилось число 744. Любая комбинация прав доступа включает числа от 0 (нет прав доступа) до 7 (полные права доступа).

Примеры того, как изменить права доступа к файлу (с именем some_file) и как это будет выглядеть:

Установим права доступа rwxrwxrwx:
chmod 777 some_file
Установим права доступа rwxr-xr-x:
chmod 755 some_file
Установим права доступа rw-r--r--:
chmod 644 some_file
Установим права доступа ---------:
chmod 000 some_file
Для проверки скорости записи/чтения можно использовать утилиту dd

Измеряем скорость записи:
dd if=/dev/zero of=testfile bs=1M count=1000 conv=fdatasync
Команда создаст файл testfile размером 1000 МБ, заполненный нулями, и измерит скорость записи данных в этот файл.

Измеряем скорость чтения:
dd if=testfile of=/dev/null bs=1M
Команда прочитает содержимое файла testfile и измерит скорость чтения данных из него.
Смотрим общую информацию о жёстком диске

Для регулировки и просмотра параметров жёстких дисков с интерфейсом ATA существует утилита hdparm.

Утилита может установить такие параметры как объём кеш-памяти накопителя, спящий режим, управление питанием, управление акустикой и настройки DMA.

hdparm имеет очень серьёзный недостаток: утилита может привести к сбою компьютера и сделать данные на жёстком диске недоступными, после применения сочетания некоторых параметров.

Для просмотра общей информации о жёстком диске используется команда: hdparm -i /dev/sd<буква>
Кроме bash в Linux существуют и другие оболочки: sh, csh, ksh, zsh, tcsh и пр. Все командные оболочки, установленные в системе, прописаны в файле /etc/shells.

Иногда в файле /etc/shells можно найти /bin/false и /bin/true, которые не являются оболочками. Это «заглушки», которые можно использовать, если вы хотите отключить ту или иную учетную запись пользователя.

Как известно, при входе пользователя в систему запускается установленная для него оболочка. Так вот, если для какого-либо пользователя задать оболочку /bin/false (или /bin/true), он не сможет войти в систему. Точнее, в систему-то он войдет, но и сразу выйдет из нее, поскольку сессия пользователя длится до завершения работы его оболочки, а обе заглушки ничего не делают, кроме того, что просто возвращают значение 0 (для false) или 1 (для true).
Авария: Во время работы отказал диск /dev/sdb.
После замены диска сервер необходимо полностью восстановить.

Исходные условия:
• Имеется сервер Ubuntu Server 24.04.
Конфигурация:
• два SSD по 1 ТБ (/dev/sda, /dev/sdb)
• программный RAID1 (mdadm)
• LVM поверх RAID
• файловая система XFS
• сервер предоставляет NFS
• на сервере работает PostgreSQL
• загрузчик GRUB установлен на оба диска

Шаг 1. Проверяем состояние RAID: cat /proc/mdstat
Получаем:
md0 : active raid1 sda1[0]
976630336 blocks [2/1] [U_]

U = диск исправен _ = диск отсутствует
Также
mdadm --detail /dev/md0
Вывод
State : clean, degraded
Active Devices : 1
Working Devices : 1
Failed Devices : 1

RAID работает в деградированном режиме.

Шаг 2. Определяем неисправный диск: smartctl -a /dev/sdb
Типичный вывод:
SMART overall-health self-assessment test result: FAILED или I/O error

Шаг 3. Исключаем диск из RAID
Если он еще виден системой:
mdadm /dev/md0 --fail /dev/sdb1
После этого
mdadm /dev/md0 --remove /dev/sdb1
Теперь RAID использует только один диск.

Шаг 4. Замена физического диска
После замены сервер обнаружил новый диск.
lsblk
Получаем:
sda
sdb

Но новый диск пустой.

Шаг 5. Копируем таблицу разделов
sgdisk -R=/dev/sdb /dev/sda
Проверяем: fdisk -l

Шаг 6. Меняем GUID разделов
Если GPT: sgdisk -G /dev/sdb
Иначе возникнет конфликт одинаковых UUID GPT.

Шаг 7. Добавляем диск обратно в RAID
mdadm /dev/md0 --add /dev/sdb1
Проверяем: cat /proc/mdstat
Будет
md0 : active raid1 sdb1[2] sda1[0]
recovery


Шаг 8. Следим за синхронизацией
watch cat /proc/mdstat
Ждем 100%
После окончания: [UU]

Шаг 9. Проверяем состояние RAID
mdadm --detail /dev/md0
Получаем:
State : clean
Active Devices : 2


Шаг 10. Проверяем LVM
pvdisplay
vgdisplay
lvdisplay

Все тома должны быть доступны.

Шаг 11. Проверяем файловую систему
Для XFS: xfs_repair -n /dev/vg_data/lv_pg
Параметр: -n означает только проверку без изменений.
Если ext4: fsck -f

Шаг 12. Проверяем точки монтирования
mount или df -h
Получаем:
/dev/mapper/vg_data-lv_root
/dev/mapper/vg_data-lv_pg
/dev/mapper/vg_data-lv_nfs


Шаг 13. Проверяем PostgreSQL
systemctl status postgresql или pg_isready
Должно быть: accepting connections
Проверяем базы: sudo -u postgres psql
SELECT now();


Шаг 14. Проверяем NFS
systemctl status nfs-server
showmount -e localhost

Экспорт должен отображаться.

Шаг 15. Восстанавливаем GRUB
После замены диска загрузчик отсутствует.
Устанавливаем: grub-install /dev/sdb
Потом: update-grub Проверяем: efibootmgr -v
(для UEFI)
или
grub-install /dev/sda
grub-install /dev/sdb

для BIOS.

Шаг 16. Проверяем mdadm.conf
cat /etc/mdadm/mdadm.conf

Если UUID изменился
mdadm --detail --scan >> /etc/mdadm/mdadm.conf
Затем update-initramfs -u

Шаг 17. Контрольная проверка

cat /proc/mdstat
[UU]
lsblk
mdadm --detail /dev/md0
systemctl status postgresql
systemctl status nfs-server
reboot
После перезагрузки: cat /proc/mdstat
Должно быть: [UU]
Задача: Сервер перестал загружаться после обновления ядра
Условие: На сервере Ubuntu 24.04 после выполнения:
apt update
apt upgrade
reboot

сервер больше не загружается.
На экране:
Kernel panic - not syncing:
VFS: Unable to mount root fs on unknown-block(0,0)

Требуется:
• определить причину;
• восстановить загрузку;
• сохранить данные;
• сделать так, чтобы проблема не повторилась.

Что должен сделать администратор
1. Загрузиться со старого ядра
В меню GRUB выбрать: Advanced options
и загрузить предыдущую версию ядра.

2. Проверить наличие initramfs
ls /boot
Например:
vmlinuz-6.8.0
initrd.img-6.8.0

Если initramfs отсутствует: update-initramfs -u

3. Проверить UUID

blkid
cat /etc/fstab

Если UUID изменился — исправить.

4. Проверить драйверы
Например RAID-контроллер требует модуль megaraid_sas
Проверяем: lsinitramfs /boot/initrd.img | grep megaraid
Если нет
echo megaraid_sas >> /etc/initramfs-tools/modules
update-initramfs -u


5. Переустановить GRUB
grub-install /dev/sda
update-grub


Итог: Сервер успешно загружается.
Задача: На сервере неожиданно закончилось место
Условие:
Команда df -h
показывает
Filesystem Use%
/dev/sda2 100%

Однако du -sh /*
дает всего около 40 ГБ.

Куда исчезло место?

Решение:
Такое происходит, когда удалили большой файл, но процесс продолжает его использовать.
Проверяем: lsof | grep deleted
Например:
java
logfile deleted
30G

Процесс продолжает держать файл открытым.
Освободить место
Можно через: systemctl restart java или kill PID

После завершения процесса место сразу освободится.
Задача: Сервер отвечает очень медленно
CPU почти не загружен.
RAM свободна.
Но приложения работают крайне медленно.

Что проверить
I/O: iostat -x 1
Получаем:
util 100%
await 1500 ms

Диск перегружен.
Проверить процессы: iotop
Видим:
backup.sh

который читает весь диск.

Решение:
Перенести backup.
Используя ionice или nice
Модуль ядра Linux — это точка входа в системную разработку

Здесь уже недостаточно знать команды ОС, важно понимать архитектуру ядра, сборку, загрузку и отладку на низком уровне.

🔔 3 августа в 20:00 МСК приглашаем вас на открытый урок, где мы разберём, зачем нужны модули ядра, как они встраиваются в работу операционной системы и какую роль играют в расширении её возможностей.

На занятии вы:
- узнаете, как создать собственный модуль, собрать его, запустить и отладить с помощью буфера сообщений ядра dmesg.
- получите практические инструкции, с которых можно начать разработку под ядро Linux.

Открытый урок проходит в преддверии старта курса «Разработка ядра Linux».

Зарегистрируйтесь, если хотите сделать первый уверенный шаг от обычной работы с Linux к системному программированию: https://otus.pw/JlC0/

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Поиск файлов по нескольким расширениям

С помощью команды find вместе с флагом -o (логическое ИЛИ) можно искать файлы по нескольким расширениям:

find /path/to/search -type f \( -name "*.txt" -o -name "*.log" \)

/path/to/search — это каталог, в котором вы хотите начать поиск.
-type f указывает, что вы ищете файлы (а не каталоги).
-name "*.txt" и -name "*.log" — это два условия, разделенные оператором -o. При этом выполняется поиск файлов с расширением .txt или .log.
Поиск файлов с определенными настройками доступа

Команда find в сочетании с флагом -perm позволяет искать файлы на основе их настроек разрешений.

Чтобы найти файлы, у которых есть разрешения на чтение (r), запись (w) и выполнение (x) для владельца:
find /path/to/search -type f -perm -700

Поиск файлов по разрешению и режиму доступа:
find /path/to/search -type f -perm mode

Чтобы найти файлы, у которых нет прав на запись для группы и других:
find /path/to/search -type f ! -perm /go+w
🔍Тестовое собеседование с Head of DevOps уже завтра

28 июля(уже завтра!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle DevOps-разработчика.

Как это будет:
📂 Александр Хренников, Head of DevOps в KTS с опытом 14+ лет, будет задавать реальные вопросы и задачи разработчику-добровольцу
📂 Александр будет комментировать каждый ответ респондента, чтобы дать понять, чего от вас ожидает собеседующий на интервью
📂 В конце можно будет задать любой вопрос Александру

Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для DevOps-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы.

Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_devops_bot

Реклама.
О рекламодателе.
Please open Telegram to view this post
VIEW IN TELEGRAM
Узнаем файловую систему (тип файловой системы) в Linux

1. Через команду df -T
Вывод покажет список всех смонтированных файловых систем с указанием их типа.

2. Через команду mount или findmnt
mount | grep '^/dev' или: findmnt -T /
Эти команды покажут, какие устройства куда смонтированы и с каким типом ФС.

3. Используя lsblk
lsblk -f
Отображает информацию о блочных устройствах, включая тип файловой системы.

4. С помощью
sudo blkid
Выводит информацию о типе ФС, UUID и другом

5. Используя file на устройство
sudo file -s /dev/sda1
Показывает тип содержимого устройства, включая файловую систему.
Запускаем процесс и отцепляем его от терминала

Например: python3 server.py &
Теперь сделай: disown

После закрытия терминала процесс продолжит работать, даже без nohup.
🎥 Вебинар: Восстанавливаем RAID5 в Linux
Практическое руководство по обнаружению неисправностей и грамотному восстановлению RAID5-массивов при отказе накопителя

🧠 На вебинаре вы узнаете:
- Принципы работы RAID5 и сценарии поведения системы при выходе одного диска из строя
- Набор ключевых команд и инструментов для мониторинга, анализа и «лечения» массива
- Подходы к грамотному проектированию RAID-массива с учётом отказоустойчивости
- Типичные ловушки при восстановлении и способы обойти их без фатальных последствий

💪 В результате вебинара вы:
- Приобретёте навык оценки состояния RAID5-массива и выявления причин сбоя
- Освоите безопасное отключение и подключение дисков без лишнего риска
- Выполните полноценное пошаговое восстановление массива через утилиту mdadm
- Поймёте, как снизить вероятность потери данных в аварийной ситуации и действовать без паники

⭐️ Открытый урок проходит в преддверии старта курса «Инфраструктура высоконагруженных систем».

👉 Для участия зарегистрируйтесь: https://otus.pw/M7qA/

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Запускаем команду без сохранения в истории

Если не хочешь, чтобы команда попала в ~/.bash_history, поставь перед ней пробел (если включена опция HISTCONTROL=ignorespace).

sudo apt install something


Проверяем настройку: echo $HISTCONTROL

Если вывод содержит ignorespace или ignoreboth, трюк работает.
/proc как "рентген" системы

Например: cat /proc/cpuinfo или cat /proc/meminfo

Но самое интересное: cat /proc/$(pidof firefox)/maps
Покажет все участки памяти процесса Firefox.

Ещё полезно: ls -l /proc/$$/fd
Это список всех файлов, сокетов и каналов, которые открыты текущим процессом оболочки.