odmin@opslog: ~/blog
root@fedoraway:~/blog$ cat simpletips.md

Простые советы

Чтобы узнать UUID файловых систем, укажите устройство и отфильтруйте тег UUID:

bash
blkid -s UUID -o value /dev/sda1

Если устройство неизвестно, сначала используйте lsblk -f.

vbetool — устаревшая утилита для обращения к BIOS/VBE; на современных системах она может не работать. Для управления питанием монитора в графической сессии X11 обычно используют:

bash
xset dpms force off

Команда требует установленного xset и активной X11-сессии; в Wayland её поведение зависит от окружения рабочего стола.

Иногда при сборке пакета из SRPM (в частности postgresql от 1C) вываливается следующее сообщение:

bash
1 out of 1 hunk FAILED -- saving rejects to file src/pl/plperl/GNUmakefile.rej

Чтобы вывести строки конфигурационного файла, не являющиеся пустыми или комментариями:

bash
grep -vE '^[[:space:]]*(#|$)' clients.conf

Случайная строка из 8 шестнадцатеричных символов (для идентификаторов, но не для паролей):

bash
openssl rand -hex 4

Чтобы отключить IPv6 во всей системе, используйте параметр ядра ipv6.disable=1 в командной строке загрузки и перезагрузите систему. Для временного отключения без перезагрузки можно применить sysctl:

bash
sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1
sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1

Чтобы просмотреть данные DMI/SMBIOS о системе и компонентах оборудования, выполните от имени суперпользователя:

bash
sudo dmidecode -q

dmidecode показывает сведения из таблиц прошивки, а не выполняет непосредственное обнаружение всего оборудования; часть данных может быть неполной или неточной.

Установка системной даты и времени обычно выполняется от имени суперпользователя. Формат команды GNU date:

bash
sudo date MMDDhhmm[[CC]YY][.ss]

В современных системах, где работает синхронизация времени, предпочтительнее управлять временем через timedatectl.

Рекурсивное удаление каталогов .svn из дерева файлов. Команда необратима, поэтому проверьте список найденных каталогов перед удалением:

bash
find . -type d -name .svn -prune -exec rm -rf -- {} +

Просмотр интерфейсов некоторых USB-устройств в sysfs (набор путей зависит от оборудования и драйверов):

bash
find /sys/class -path '*/device/interface' -type f -print0 |
while IFS= read -r -d '' interface; do
    printf '%s: %s\n' "$(basename "$(dirname "$(dirname "$interface")")")" "$(cat "$interface")"
done

Запуск rngd для подачи данных от аппаратного генератора случайных чисел в ядро (если доступен /dev/hwrng):

bash
rngd -r /dev/hwrng

Использовать /dev/urandom в качестве источника для rngd бессмысленно: это уже интерфейс генератора случайных данных ядра, а не аппаратный источник энтропии.

Чтобы создать отображения разделов в образе диска, созданном с помощью dd, выполните:

bash
kpartx -av /path/to/diskimage

Номер loop-устройства не гарантирован, поэтому ориентируйтесь на вывод команды. Отображения появятся в /dev/mapper; например, раздел можно смонтировать так:

bash
sudo mount /dev/mapper/loop0p1 /mnt/

После работы удалите отображения командой sudo kpartx -d /path/to/diskimage.

Просмотр информации о сертификате PEM:

bash
openssl x509 -in cert.pem -noout -text

Просмотр сертификата сайта в консоли. Параметр -servername передаёт SNI, а перенаправление stdin не позволяет команде ждать ввода:

bash
openssl s_client -connect gmail.com:443 -servername gmail.com </dev/null

Просмотр статистики по системным вызовам для команды

bash
strace -qcf ls

Запуск новой оболочки с дополнительной эффективной группой для текущей сессии:

bash
newgrp new_group_name

Команда не изменяет членство пользователя в системе постоянно; для этого требуется добавить пользователя в группу, например с помощью usermod, после чего войти в систему заново.

Проброс Unix-сокета Docker по локальному TCP-порту. Порт привязан только к loopback; доступ к Docker-сокету фактически предоставляет привилегии root на удалённом хосте:

bash
ssh -N -L 127.0.0.1:2375:/run/docker.sock root@remote

Linux в браузере

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

  • JSLinux — классический проект Fabrice Bellard. Доступны Alpine Linux, Buildroot и Fedora для эмулируемых x86 и RISC-V систем.
  • v86 — браузерный x86-эмулятор с Linux, BSD, DOS и другими системами. Можно выбрать готовый образ или загрузить собственный.
  • WebVM — браузерная Linux-среда с терминалом и инструментами разработчика, работающая локально в WebAssembly.

Для первого запуска удобнее всего открыть JSLinux и выбрать Alpine Linux с консольным интерфейсом. Не вводите в публичные демонстрации пароли, токены и другие конфиденциальные данные: это экспериментальные среды, предназначенные для обучения и развлечения.