Перейти к содержимому
Технологии IT обновлён 15.03.2024

Linux для чайника

«Хотите освоить Linux, но не знаете, с чего начать? Наш канал для вас! Здесь вы найдёте простые и понятные инструкции, видеоуроки и советы от опытных пользователей. Узнайте, как установить и настроить операционную систему, как работать в командной строке и как использовать популярные приложения. Подписывайтесь, чтобы стать увереннее в мире Linux!»

Публикации канала

В Linux процессы могут быть не только запущены, но и контролируемы на уровне блокировок, изменения приоритетов, а также контроля за использованием памяти. Пример: # Отследить системные вызовы процесса с PID 12345 strace -p 12345 # Установить низкий приоритет для процесса renice -n 15 -p 12345 # Показать ограничения по ресурсам для текущего пользователя ulimit -a Используйте nice для управления приоритетами, а также ulimit для ограничения ресурсов, чтобы не исчерпать все доступные ресурсы на сервере.

Открыть в Telegram

Каждый раз, когда вы будете устанавливать программы с помощью aptitude, будет загружаться DЕВ-архив и помещаться в папку /var/cache/apt/archives. Скорее всего, там уже есть файлы: ls /var/cache/apt/archives/ Для освобождения места на диске, можно применить: sudo aptitude clean Повторное выполнение команды ls покажет, что все пакеты удалены, но если у вас слабый интернет и вам необходима неделя, чтобы загрузить последние версии программных пакетов (что очень мало вероятно, сейчас уже ..), то следует подумать дважды, прежде чем выполнять действия, описанные выше, либо воспользоваться sudo aptitude autoclean который удалит только устаревшие пакеты.

Открыть в Telegram

Запросов становится больше, ответы приходят медленнее. Какие настройки помогут веб-серверу справляться с нагрузкой, а какие изменения не дадут заметного результата? Чтобы разобраться, нужны и понимание конфигурации, и измерения. 2 ноября в 19:00 на открытом уроке курса «Инфраструктура высоконагруженных систем» разберёте оптимизацию Nginx и Angie под высокие нагрузки. Рассмотрите системные параметры, влияющие на производительность, и настройку TLS для сокращения накладных расходов на шифрование. Узнаете, какие возможности кэширования есть у Nginx и Angie и как использовать их для снижения нагрузки. Отдельно обсудите измерение и анализ производительности на стороне клиента и сервера. Разберёте, как оценивать эффект от изменений и находить узкие места, чтобы подбирать настройки под конкретный сценарий, а не копировать чужую конфигурацию. После урока вы будете лучше понимать, какие параметры проверять в первую очередь, как подходить к оптимизации TLS и кэширования и чем подтверждать результат настройки. Вебинар подойдёт системным администраторам Linux, DevOps-инженерам и разработчикам, которые отвечают за устойчивую работу веб-серверов под нагрузкой. Урок проведёт Николай Лавлинский. Зарегистрироваться: https://otus.pw/FAXO/ Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

Открыть в Telegram

Отображение зависимостей С помощью команды ldd можно отобразить список динамических библиотек, необходимых для работы вашей программы. Она помогает выявлять отсутствующие зависимости и решать проблемы совместимости. Основной синтаксис команды ldd выглядит следующим образом: ldd [опция]... [файл]... Чтобы увидеть список динамических библиотек, необходимых для работы команды /bin/ls, нужно выполнить команду: ldd /bin/ls ldd имеет несколько опций, которые могут изменить его поведение: --version: Показать версию ldd. --verbose: Вывести всю информацию, включая информацию о версиях символов. --help: Показать справочное сообщение и выйти.

Открыть в Telegram

Проверка файла / директории в Bash В Bash для этого используют file test operators, чаще всего в [[ ... ]] • Базовые проверки: Файл существует: [[ -e path ]] Обычный файл: [[ -f path ]] Директория: [[ -d path ]] Символьная ссылка: [[ -L path ]] • Права доступа: Чтение / запись / выполнение [[ -r path ]]  # readable [[ -w path ]]  # writable [[ -x path ]]  # executable Проверяет права текущего пользователя, не владельца файла. • Размер и содержимое: Файл не пустой: [[ -s path ]] Файл пустой: [[ ! -s path ]] Владение: [[ -O path ]] # владелец — текущий пользователь [[ -G path ]]  # принадлежит группе пользователя Временные атрибуты: [[ path -nt other ]]  # newer than [[ path -ot other ]]  # older than Комбинирование условий: if [[ -f file && -r file ]]; then   echo "Readable file" fi • Безопасные идиомы: Проверка перед использованием: [[ -f "$file" ]] || {   echo "File not found: $file" >&2   exit 1 } Создать директорию, если нет: [[ -d "$dir" ]] || mkdir -p "$dir" • Частые ошибки: Неэкранированная переменная: [[ -f $file ]]   # плохо [[ -f "$file" ]] # правильно Использование ls: ls file.txt >/dev/null 2>&1  # плохо [[ -f file.txt ]]            # правильно • Краткая шпаргалка: -e  существует -f  обычный файл -d  директория -L  symlink -r  чтение -w запись -x  выполнение -s  не пуст

Открыть в Telegram

Замена стандартной команды cat Команда bat — это утилита командной строки, предназначенная для замены стандартной команды cat - чтение данных из файла или стандартного ввода. Основное отличие bat от cat заключается в добавлении подсветки синтаксиса, интеграции с Git, а также в возможности отображения номеров строк и вывода в формате "paging". Примеры использования: 1. Просмотр файла с подсветкой синтаксиса и номерами строк: bat file.txt 2. Сравнение файла с его версией в Git: bat --diff file.txt 3. Сочетание с другими командами через pipe: Чтобы найти определенный текст в файле и вывести результат с подсветкой синтаксиса, вы можете использовать grep совместно с bat: grep -n 'search_term' file.txt | bat Установка bat зависит от дистрибутива. Пример для Debian: sudo apt install bat В некоторых дистрибутивах команда может быть доступна как batcat из-за конфликта имен.

Открыть в Telegram

Расшифровка и распаковка архива Восстанавливаем файлы из зашифрованного архива secure_backup.tar.gz.gpg. Команда: gpg --decrypt secure_backup.tar.gz.gpg | tar -xzf - Что происходит: gpg --decrypt — расшифровывает архив, запрашивая пароль. tar -xzf - — распаковывает полученные данные. | — передаёт расшифрованный архив команде tar. После ввода правильного пароля файлы будут восстановлены в текущую директорию с сохранением структуры каталогов. Момент: запускайте команду из директории, в которой хотите восстановить файлы. Если архив содержит абсолютный или относительный путь /home/user/data, результат распаковки будет зависеть от того, как архив был создан.

Открыть в Telegram

Создаем файл устройства В качестве примера рассмотрим процесс создания дополнительного файла loop-устройства. Для начала следует получить список доступных в системе файлов loop-устройств: ls -al /dev | grep loop Далее представим, что команда ls вывела 15 файлов loop-устройств (от loop0 до loop14). Исходя из этого, следует создать файл с именем loop15: mknod -m 0777 /dev/loop15 b 7 17 где -m - флаг, задающий права доступа 0777 - права доступа /dev/loop15 - название /dev файла b - обозначение блочного устройства идентификатор 7 - фиксирован для всех файлов loop-устройств вспомогательный идентификатор 15 - указывает на номер файла loop-устройства.

Открыть в Telegram

Сжатие и шифрование папки Создаем зашифрованный архив secure_backup.tar.gz.gpg из директории /home/user/data, используя пароль для шифрования. Пример: tar -czf - /home/user/data | gpg --symmetric --cipher-algo AES256 -o secure_backup.tar.gz.gpg Команда tar создает архив, который затем шифруется с помощью gpg с использованием симметричного шифрования.

Открыть в Telegram

Системные службы и systemd systemd — система инициализации и менеджер служб, который управляет запуском и остановкой служб в Linux. Он заменяет более старые системы, такие как SysVinit. Пример: Чтобы проверить статус службы, например, nginx, используем: systemctl status nginx Чтобы запустить или остановить службу: sudo systemctl start nginx sudo systemctl stop nginx Чтобы настроить службу на автоматический запуск при загрузке системы: sudo systemctl enable nginx

Открыть в Telegram

Узнаем дату создания файла  Это можно сделать с помощью stat. Утилита stat выводит подробные сведения о файле. stat /dir/to/some/file.txt Нужная информация записана в графе ‘Создан’(‘Birth’) Но есть одна проблема. На некоторых дистрибутивах Linux при использовании утилиты stat это поле будет пустым. Все дело в том, что вывод данной информации появился только в statx(2). Враппер (оболочка) для нее был добавлен в библиотеку glibc версии 2.28. А поддержка этого враппера появилась в наборе базовых системных утилит GNU coreutils 8.31 Но есть второй способ! С помощью debugfs. Процедура использования у нее несколько более запутанная. Связано это с тем, что для просмотра даты создания файла через debugfs, нужно узнать номер его inode и файловую систему.   Чтобы получить inode: ls -i /dir/to/some/file.txt А для просмотра файловой системы: df /dir/to/some/file.txt Теперь чтобы получить дату создания файла, используйте команду: sudo debugfs -R 'stat <inode>' /file/system Теперь в терминале найдите поле, в котором хранится дата создания — crtime

Открыть в Telegram

Повысить производительность можно штатными средствами, например, следующая команда скажет процессору работать на максимальной производительности при электропитании от сети. # cpuspeed -C При «разгонах» может быть полезным диагностировать систему с помощью сенсоров $ sensors «Нагрузить» процессор можно командой stress, например $ stress –cpu 16 Указанные программы находятся в пакетах cpuspeed, lm_sensors и stress. Для получения информации от сенсоров их следует один раз предварительно настроить, запустив от администратора команду sensors-detect. Запустив программы одновременно, можно увидеть как при создании нагрузки растут: частоты, температура, обороты вентилятора. Частоту ядер процессора удобно отслеживать с помощью команды $ watch "cat /proc/cpuinfo|grep MHz"

Открыть в Telegram

Даже если не запущен ни один терминал или его эмулятор, на заднем дворе графического рабочего стола продолжают выполняться несколько сеансов терминалов. Получить доступ к этим виртуальным консолям, в большинстве дистрибутивов Linux можно с помощью комбинаций клавиш, начиная с CTRL+ALT+F1до CTRL+ALT+F6. Для начала, проще заранее узнать сколько вирт. терминалов есть в системе, выполнив: ps ax | grep -v grep | grep getty (Увидим список. Номер в tty это нужная клавиша F1 – F6) После перехода к сеансу вы увидите приглашение к регистрации в системе, где нужно ввести имя пользователя и пароль. Для переключения из одной виртуальной консоли в другую используйте клавиши ALT и F1 – F6 . (как в списке) Чтобы вернуться в графическое окружение рабочего стола, нажмите ALT+F7. (перебери оставшиеся эфки, эта может не сработать)

Открыть в Telegram

Тестирование стабильности системы Чтобы протестировать систему, можно нагрузить CPU, память, дисковую подсистему и I/O с помощью утилиты stress. Ее основные возможности: - CPU нагрузка: Задание количества рабочих потоков, которые нагружают процессор. - Память: Создание нагрузки через аллокацию памяти. - Диски: Стресс-тест записи данных на диск. - I/O: Симуляция интенсивных операций ввода-вывода. Примеры использования: 1. Нагрузка на CPU с 4 потоками в течение 30 секунд: stress --cpu 4 --timeout 30 2. Нагрузка на CPU, память и I/O одновременно: stress --cpu 2 --vm 1 --vm-bytes 256M --io 2 --timeout 60

Открыть в Telegram

BleachBit — утилита для очистки кэша, временных файлов, истории и другого мусора. 1. Смотрим, что можно очистить: bleachbit --list 2. Смотрим, что будет удалено: bleachbit --preview 3. Очищаем выбранные категории Например: bleachbit --clean firefox.cache 4. Запускаем GUI: bleachbit В интерфейсе: Firefox ├── Cache ├── Cookies └── History System ├── Temporary files └── Trash Выбираешь нужное → Preview → проверяешь → Clean. Практический пример: Нужно освободить место после работы браузера: bleachbit --clean firefox.cache Проверить место: df -h Главное: сначала --preview, потом --clean. И не запускай очистку от root, если для этого нет необходимости.

Открыть в Telegram

Минимальный набор для понимания и настройки маршрутизации в Linux 1. Интерфейсы и адреса: ip addr Показывает IP-адреса интерфейсов. ip link Показывает сами интерфейсы и их состояние (UP/DOWN). Например: eth0 → 192.168.1.100/24 eth1 → 10.0.0.1/24 2. Таблица маршрутизации: ip route Главная команда. Например: default via 192.168.1.1 dev eth0 10.0.0.0/24 dev eth1 192.168.1.0/24 dev eth0 Читай это как: 10.0.0.0/24 → eth1 192.168.1.0/24 → eth0 всё остальное → 192.168.1.1 через eth0 3. Узнать конкретный маршрут Очень важная команда: ip route get 8.8.8.8 Linux покажет, какой маршрут он реально выберет. Например: 8.8.8.8 via 192.168.1.1 dev eth0 src 192.168.1.100 Это часто лучший способ отладки маршрутизации. 4. Добавить маршрут: sudo ip route add 10.10.0.0/24 via 192.168.1.254 dev eth0 Удалить: sudo ip route del 10.10.0.0/24 Такие изменения обычно временные и могут исчезнуть после перезагрузки или перезапуска сетевого менеджера. 5. Проверить IP forwarding Если Linux должен быть роутером между сетями: sysctl net.ipv4.ip_forward Включить временно: sudo sysctl -w net.ipv4.ip_forward=1 6. ip rule Когда одной таблицы маршрутов недостаточно: ip rule Например: 0: from all lookup local 32765: from 10.0.0.0/24 lookup 100 32766: from all lookup main 32767: from all lookup default Это уже policy routing. 7. Все таблицы: ip route show table all Полезно, когда смотришь на сложную систему и ip route показывает далеко не всё.

Открыть в Telegram

Сделать снимок состояния процесса Linux позволяет сохранить состояние работающей программы. Установить: sudo apt install criu Создать checkpoint: criu dump -t PID -D checkpoint/ Позже процесс можно восстановить: criu restore -D checkpoint/ То есть программа может «заморозиться» на одном компьютере и продолжить работу позже.

Открыть в Telegram

Проверить, куда уходит время загрузки Linux Команда: systemd-analyze Покажет общее время запуска системы. Например: Startup finished in 4.2s А эта команда покажет самые медленные службы: systemd-analyze blame Пример: 18s docker.service 12s NetworkManager.service 8s snapd.service Можно увидеть, что именно замедляет загрузку.

Открыть в Telegram

journalctl — просмотр всех системных логов В современных Linux многие службы пишут логи через systemd. Посмотреть последние события: journalctl -xe Логи конкретного сервиса: journalctl -u nginx Следить в реальном времени: journalctl -f Посмотреть ошибки только за сегодня: journalctl --since today -p err

Открыть в Telegram

Посмотреть историю изменений файла через auditd Linux умеет отслеживать, кто и когда изменял определённые файлы. Установка: sudo apt install auditd Добавить наблюдение: sudo auditctl -w /etc/passwd -p wa Теперь система будет записывать изменения файла. Посмотреть события: sudo ausearch -f /etc/passwd Можно узнать: кто изменил файл, когда это произошло, каким процессом.

Открыть в Telegram

Комментарии

0

Комментарии пишут вошедшие — так видно, кто автор.

Войти

Комментариев пока нет

Будьте первым, кто расскажет о канале другим.

Пожаловаться на канал

Расскажите, что не так: модератор проверит канал и примет решение. Подпись не нужна, но почту можно оставить — тогда ответим.

Причина Что не так (необязательно) Почта для ответа (необязательно)
Открыть в Telegram