Шпаргалка по командам Linux

Эта заметка — просто свалка самых разных команд, которые иногда спонтанно оказываются нужны, а потом снова успешно забываются. Поэтому, я решил их просто свалить кучей в одну заметку блога, чтобы максимально быстро находить в дальнейшем, если вдруг понадобится снова. Если же эта свалка окажется полезной и еще кому-то — ну чтож, вэлкам! 😉

зы. систематизации этой свалки и не ждите…

Проверка диска на бедблоки с выводом результата (списка обнаруженных бедблоков) в файл:

badblocks -n -s -o badblocks_500g.txt /dev/sdd1

Изменение размера раздела диска (и последующая проверка раздела на ошибки):

resize2fs -f /dev/sda5
fsck.ext4 -cv /dev/sda5

Просмотр текущих настроек (первая команда) и изменение частоты проверки раздела диска при запуске системы:

tune2fs -l /dev/sda1
tune2fs -i 1 /dev/sda1
tune2fs -c 1 /dev/sda1

Создание образа диска и одновременное сжатие его сразу в архив (для многоядерных процессоров имеет смысл вместо команды gzip использовать команду pigz — при сжатии данных будут задействованы все ядра процессора):

dd if=/dev/sda1 bs=8096 | gzip -9cf > sda1.dd-image.gz

Распаковка созданного приведенной выше командой архива образа диска и одновременное копирование его на раздел диска:

gunzip -c sda1.dd-image.gz | dd of=/dev/sda1 bs=8096

Если вдруг клонируемый диск (или раздел) содержит ошибки, для считывания его образа лучше воспользоваться программой ddrescue (в Ubuntu она не предустановлена «из коробки», и ее нужно доустанавливать, в Ubuntu — это пакет gddrescue). Чтобы создать образ всего диска, используйте команду:

sudo ddrescue -d /dev/sdX backup.img backup.logfile

…, где ключ -d вынуждает программу игнорировать кеш процессора и работать с диском напрямую,  /dev/sdX — это клонируемый диск (вместо X подставьте букву реального устройства), backup.img — это файл образа, который будет создан при клонировании, и backup.logfile — это файл лога работы программы ddrescue (естественно, имена файлов лога и образа вы можете указать свои собственные). Дополнительно вы можете в команду добавить ключ -r3, который указывает число попыток вычитывания «плохих секторов» (в данном примере — 3 раза). Обратную процедуру (копирование образа на диск) вы можете выполнить либо программой dd, описанной выше, либо самой программой ddrescue:

sudo ddrescue -f backup.img /dev/sdX clone.logfile

В этой команде ключ -f указывает, что запись осуществляется на «блочное устройство» (диск).

Вывод ТОЛЬКО ПОЛЕЗНЫХ (без комментариев) строк выбранного файла настроек (в примере используется файл /etc/dnsmasq.conf, в случае чего — подставьте любой другой, который вам нужен):

egrep -v '^(#|\s#|$)' /etc/dnsmasq.conf

Поиск приложения, «слушающего» необходимый номер порта (в примере — 3990-й):

netstat -anp | grep ":3990"

Вывести список установленных соединений, а также служб-обработчиков :

netstat -anA inet

Вывод информации о ЦПУ:

cat /proc/cpuinfo

Вывод информации обо всех устройствах:

dmidecode
  • кстати, если полистать man по команде dmidecode, можно найти описание всех возможных ее ключей. Наиболее полезным, полагаю, окажется ключ —type, позволяющий указать конкретный тип устройств, информацию по которым вы хотите узнать.

Удобная «фишка», благодаря которой в консоли при повторе команд (стрелкой «вверх») осуществляетя поиск по первым буквам. Например, если вы сначала введете два буквы «ex», а потом будете нажимать стрелку вверх, то  предлагаться будут только те из команд, хранящихся в «истории», которые начинаются на указанные буквы. Чтобы это происходило, в файл /etc/inputrc нужно добавить такие две строки (или раскоментировать, если они там уже есть):

"\e[A": history-search-backward
"\e[B": history-search-forward

Чтобы при использовании программы screen иметь возможность корректно отключаться от сеанса (по ctrl+a+d), нужно в файл /etc/screenrc добавить

defflow off

Преобразование PDF-файла в Word-овский doc в консоли:

soffice --infilter="writer_pdf_import" --convert-to doc исходный_файл.pdf

или же:

libreoffice --invisible --convert-to docx:"MS Word 2007 XML" исходный_файл.pdf

«Склейка» нескольких PDF-файлов в один в консоли (в системе должен быть установлен пакет poppler-utils):

pdfunite file1.pdf file2.pdf output.pdf

Заполнить определенный объем (4096 раза по 1 Мб) раздела диска «нулями»:

sudo dd if=/dev/sda2 of=/dev/null bs=1MB count=4096
  • чтобы обнулить не раздел, а диск, в качестве «цели» указывайте не раздел (/dev/sda2), а диск (/dev/sda);
  • чтобы «обнулить» все содержимое раздела (или диска), уберите опцию count=4096, и запись будет выполняться до тех пор, пока на разделе не закончится свободное место;
  • чтобы изменить размер блока при записи, измените значение параметра bs;
  • если есть желание заполнять не нулями, а произвольными значениями (что, имхо, помешает восстановить информацию в дальнейшем), вместо источника /dev/null нужно указать /dev/urandom ;
  • если в команду добавить опцию status=progress, процедура будет отображать ход процесса (хоть какую-то информацию о тем, сколько записано, с какой скоростью, сколько затрачено времени, и т.д.).

Простая программа, позволяющая проверить скорость 3D-рендеринга (в системе д.б. установлен пакет mesa-utils):

glxgears

Программа glxinfo из этого же пакета (mesa-utils) позволит получить информацию по видео подсистеме:

glxinfo | grep direct
glxinfo | grep rendering

Чтобы посмотреть текущие параметры подключения к сети (адрес, маршрутизацию и используемый сервер разрешения имен):

ip a
ip r
resolvectl status

Просмотреть информацию о времени, затраченном на загрузку системы:

systemd-analyze

Посмотреть список наиболее критичных моментов загрузки системы:

systemd-analyze critical-chain

Управление службами

  • «Разовый» запуск службы (служба не будет загружена после перезагрузки):
sudo systemctl start "имя-службы"
  • «Разовая» остановка службы (после перезагрузки служба будет снова запущена):
sudo systemctl stop "имя-службы"
  • Перезапуск службы:
sudo systemctl restart "имя-службы"
  • Если служба поддерживает такую возможность, задействование («загрузка») обновленного списка параметров, без перезапуска самой службы:
sudo systemctl reload "имя-службы"
  • Просмотр текущего статуса (состояния) службы:
systemctl status "имя-службы"
  • Включение автоматического запуска службы после перезагрузки компьютера (то есть, после перезагрузки, а также при всех последующих запусках ОС служба будет запускаться автоматически):
sudo systemctl enable "имя-службы"
  • Выключение автоматического запуска службы после перезагрузки (то есть, после перезагрузки, а также при всех последующих запусках ОС автоматический старт службы будет отключен):
sudo systemctl disable "имя-службы"
  • Полный запрет службы (вместо скрипта управления данной службой подставляется симлинк на /dev/null, в результате чего в дальнейшем службу не получится «включить» или запустить вручную):
sudo systemctl mask "имя-службы"
  • Отмена подмены скрипта управления службой симлинком на /dev/null (последующая возможность «включения» или ручного запуска службы будет восстановлена):
sudo systemctl unmask "имя-службы"

Работа с пакетами ПО

Проверка списка версий deb-пакета, доступных во всех подключенных в системе репозиториях (по имени пакета):

sudo apt list -a "имя_пакета"

То же самое, но с более развернутой информацией:

sudo apt-cache policy "имя_пакета"

«Борьба» с лишними локалями

… осуществляется с помощью правки файлов в каталоге /var/lib/locales/supported.d/. Увидеть, сколько всего понаписано там изначально, и есть ли в списке лишнее, можно с помощью команды:

cat /var/lib/locales/supported.d/*

Мультимедиа, изменение шага регулировки громкости

….(«мультимедийными» кнопками клавиатуры) в десктопе Mate (для Gnome в команде нужно просто заменить «mate» на «gnome»):

gsettings set org.mate.SettingsDaemon.plugins.media-keys volume-step 2

Борьба с писком звукового кодека

Ubuntu периодически отправляет аудиокодек «спать» (электричество экономит, сволочь!). В этом спящем состоянии кодек одного из моих рабочих компьютеров выдавал в колонки тихий (но противный) писк. Как только кодек просыпался, писк пропадал, и шел обычный звук.  Но через несколько секунд тишины кодек снова «засыпал»! Начал гуглить, как ему запретить спать. Изначально нашел варианты, описанные в форуме Ubuntu. Пытался их применить, но безрезультатно, проверка показывала, что после перезагрузки в параметрах модуля кодека  снова находились «экономные» значения. Уж не помню, что я такое начал «грепать» в компьютере, но нашел такой себе интересный файл tlp-stat, лежащий в папке /usr/bin. При запуске его выходила целая куча инфы, и в том числе — и параметры «экономии энергии» аудиокодеком. И показывали они мне, что настроен он по прежнему «засыпать»!  При этом комментарии к параметрам указывали, что они прописаны в каком-то дефолтном конфиге. Попытки найти его не привели ни к чему. Но был найден файл /etc/tlp.d/00-template.conf, и я решил вписать в него желаемые значения. Я добавил в него такие строки:

SOUND_POWER_SAVE_ON_AC="0"
SOUND_POWER_SAVE_ON_BAT="0"
SOUND_POWER_SAVE_CONTROLLER="N"

… и «все стало хорошо» — после перезагрузки аудиокодек перестал засыпать (и пищать, соответственно, тоже)!

Отпадающая после сна сетка

На одном из компьютеров «отпадала» (точнее, «не возвращалась») сеть после выхода из сна. Для подключения к сети в компьютере использовалась плата, которой управлял драйвер (модуль) r8169. По совету одного из форумов в папке /usr/lib/systemd/system-sleep/ был создан файл r8169 такого содержания:

#!/bin/sh
# r8169 sleep
case $1 in
    pre) modprobe -r r8169 ;;
    post) modprobe r8169 ;;
esac

После чего данному файлу был присвоен «бит выполнения». Проблема ушла.

Кракозябры в Shell-соединении программы Midnight Commander

После обновления убунты до версии 24.04 в mc вылезла проблема — при shell-соединении все кириллические имена файлов и папок удаленного сервера стали отображаться кодами символов (пример, того, как это выглядит).  Чтобы исправить эту ошибку, пришлось отредактировать файл /usr/lib/mc/fish/ls. В нем нужно найти строку:

use Fcntl;

и изменить ее так, чтобы она стала такой:

use Fcntl ":mode";

далее будет…