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

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

Регистрация в перечне РКН https://clck.ru/3EpL9L
Download Telegram
Zram-config

Инструмент для настройки и управления модулем ZRAM в Linux. ZRAM - это компрессирующее блочное устройство, которое может использоваться для сжатия и хранения данных в оперативной памяти.

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

При использовании ZRAM, данные сжимаются и хранятся в оперативной памяти, что позволяет значительно сэкономить место и повысить эффективность системы.
Использование виртуальных рабочих столов

Способ повысить эффективность работы, разделяя рабочую область на несколько виртуальных экранов.

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

Преимущества использования виртуальных рабочих столов:
⁃ Организация и систематизация рабочего пространства
⁃ Улучшение концентрации и продуктивности
⁃ Оптимизация ресурсов системы

Для использования виртуальных рабочих столов в Linux вам может понадобиться настроить соответствующий инструмент управления рабочими столами, такой как GNOME Shell, KDE Plasma или Xfce.
Создание собственных горячих клавиш

Настройка и использование горячих клавиш в Linux упрощает работу с ОС.

В настройках клавиатуры вы можете создавать собственные горячие клавиши, назначая им команды или скрипты:
- Нажмите на кнопку "+", чтобы добавить новую команду и назначить ей сочетание клавиш.
- Выберите команду, которую вы хотите выполнить, или укажите собственный путь к скрипту.
Советы по оптимизации использования жесткого диска

1. Используйте файловую систему с поддержкой журналирования, такую как ext4 или XFS. Они обеспечивают более быстрое и надежное чтение и запись данных на жесткий диск.

2. Дефрагментируйте жесткий диск.
Она помогает организовать файлы логичным образом и ускоряет доступ к данным.

3. Очистите жесткий диск от ненужных файлов и фрагментов. Удалите временные файлы, кэш, скачанные файлы и другие ненужные данные.

4. Оптимизируйте настройки виртуальной памяти.

5. Используйте программы для мониторинга и управления дисковым пространством
Утилита ss (Socket Statistics) в Linux предоставляет информацию о сетевых сокетах, соединениях TCP/UDP, маршрутах и других сетевых параметрах.

Несколько примеров использования ss:

Отобразить все открытые сокеты:
ss -a


Отобразить информацию о всех TCP-соединениях:
ss -t


Отобразить информацию о всех UDP-соединениях:
ss -u


Отобразить статистику по сетевым сокетам в реальном времени:
ss -s


Отобразить подробную информацию о TCP-соединениях и фильтровать вывод по заданному адресу и порту (например, IP-адресу 192.168.0.1 и порту 80):
ss -t -a 'dst 192.168.0.1:80'


Отобразить информацию о сетевых интерфейсах и маршрутах:
ss -i


Отобразить информацию о сокетах, которые находятся в состоянии ожидания:
ss -o state wait


Отобразить подробную информацию о конкретном сокете с заданным идентификатором:
ss -t -a -e sport = :<порт>


Отобразить информацию о сокетах, установленных в режиме прослушивания:
ss -l


Отобразить информацию о сокетах с указанным типом протокола (например, RAW, DGRAM, STREAM):
ss -t -a -K <тип_протокола>
Генерировать пароли своим собственным умом довольно утомительно, но есть простой способ сделать это автоматически. OpenSSL есть на любой машине.

openssl rand -base64 20
(20 - количество символов. Задаем своё.)

Либо можем установить для таких целей pwgen:
sudo apt install pwgen

(ходят слухи, что пароль от pwgen более стойкий)
И используем:

pwgen -Bs 20 1

(20 - количество символов. 1 - количество сгенерированных паролей)
Каталог /lost+found/

Именно там хранятся все файлы, на которые нет ссылок.

Такое бывает, ... когда при удалении файла произошел сбой в работе, например отключилось питание. При следующем включении компьютера происходит проверка файловых систем на наличие ошибок, а поскольку ошибка была найдена, то запускается программа fsck. После этого поврежденные и восстановленные программой fsck файлы будут помещены в каталог /lost+found/, зайдя в который вы можете самостоятельно их просмотреть и при необходимости переместить в нужное вам место. 

Посмотреть, что там у тебя сейчас есть, можно так:

sudo su
ls -l /lost+found/
Команды для отображения базовой информации и управления системой

df — показывает, сколько пространства занято на подключенных дисках и разделах. По умолчанию отображает данные в килобайтах. Можно переключиться на мегабайт, добавив параметр -m. Это выглядит так: df -m.

du — расскажет, сколько места занимает конкретный файл или папка. Чтобы узнать, насколько тяжелая директория Desktop, введем: du ~/Desktop. du отображает информацию в блоках. Но это неудобно, поэтому обычно к ней добавляют опцию -h, чтобы появились привычные мегабайты, килобайты и байты.

free — тоже связана с памятью, только с оперативной. Показывает, сколько занято, а сколько свободно. Чтобы включить отображение в мегабайтах, надо так же добавить аргумент -h.

uname — вывод информации о системе и сервере. Аргумент -a показывает имя компьютера, версию ядра, текущую дату и время, разрядность системы и ее тип. Можно запрашивать отдельные фрагменты данных через дополнительные опции: -s — только имя ядра; -n — имя компьютера (ноды) в сети; -o — название операционной системы; -p — тип процессора; -s — версия ядра.

whoami — покажет, кто вы есть. Имя учетной записи, через которую вы зашли в систему или подключились к серверу.

date — из названия ясно, что команда отображает текущее время и дату.

sleep — задерживает запуск скриптов на выбранный период времени. Единица времени указывается через опции: -s — секунды; -m — минуты; -h — часы; d — дни.
В чем отличие LТS-версии от нe-LTS?

Аббревиатура LTS расшифровывается как Long Term Support - релиз с долгосрочной поддержкой. Действительно, LТS-версия имеет именно такую поддержку, т. е. на протяжении 5 лет вы будете получать все нужные обновления для вашей ОС - разработчики Ubuntu будут выпускать их, а вы можете быть уверены, что эти обновления никоим образом не затронут стабильность работы вашей версии операционной системы.

Обычные версии ОС Ubuntu, т. е. не-LТS-версии (выпускаемые каждые полгода), содержат все новшества, которые могут быть включены в последующие релизы (выпуски) LТS-версий.

Логично предположить, что такие версии предназначены в основном для тех, кто интересуется новинками и кому интересно экспериментировать с системой.
Когда система подтормаживает, разобраться поможет:

ps aux --sort=-%cpu | grep -m 11 -v 'whoami'
Этой командой получим список из 10 (не ваших) процессов, которые больше всего нагружают процессор.

Либо можем получить весь список процессов, которые были запущены не вами:
ps aux | grep -v 'whoami'

Так смотрим список самых загруженных (в более читаемом виде):
ps -eo pid,ppid,%mem,%cpu,comm --sort=-%cpu | head
hdparm - это утилита командной строки, которую можно использовать для оптимизации и настройки жесткого диска.

Она предоставляет различные функции, позволяющие настроить параметры работы диска, улучшить производительность и повысить эффективность.

Некоторые основные команды hdparm и их функции:

hdparm -Tt /dev/sdX: Команда позволяет оценить пропускную способность диска и скорость чтения, используя встроенный кеш. Она также может помочь определить, происходит ли замедление чтения данных из кеша или с диска.

hdparm -I /dev/sdX: Команда выводит подробную информацию о диске, включая модель, серийный номер, параметры интерфейса и поддерживаемые функции. Можно использовать эту информацию для настройки оптимальных параметров работы диска.

hdparm -M /dev/sdX: Команда позволяет настроить энергосберегающий режим работы диска.
Например, hdparm -M 128 /dev/sdX установит режим энергосбережения с параметром 128 (от 1 до 255), где меньшее значение соответствует большему энергосбережению.

hdparm -S /dev/sdX: Команда настраивает временную задержку до перехода жесткого диска в режим сна (standby).
Например, hdparm -S 240 /dev/sdX установит задержку в 20 минут (240 секунд) до перехода в режим сна.

hdparm -B /dev/sdX: Эта команда настраивает уровень активности APM (Advanced Power Management) диска для управления энергопотреблением.
Например, hdparm -B 255 /dev/sdX установит максимальный уровень активности для максимальной скорости работы диска.

Мелким шрифтом: Важно отметить, что перед использованием hdparm необходимо быть осторожным, так как неправильные настройки могут привести к потере данных или нежелательным последствиям. Рекомендуется ознакомиться со справочным руководством и документацией по hdparm для получения дополнительной информации о доступных командах и их параметрах.
Освобождаем оперативку:

Команда sync записывает все неподтвержденные данные из кэша на диск и может помочь освободить оперативную память.

Команда echo 1 > /proc/sys/vm/drop_caches очищает кэш страниц, инодов и дэнджлиста в оперативной памяти. (Будет требовать прав администратора)

Команда sudo sysctl -w vm.drop_caches=3 также очищает кэш страниц, инодов и дэнджлиста. Она также требует прав администратора.

Команда sudo systemctl restart systemd-journald перезапускает службу журнала системы и может освободить память, занимаемую журналами системы.

Команда sudo systemctl restart rsyslog перезапускает службу системного журнала rsyslog, что также может помочь освободить оперативную память.

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

Если у вас есть неиспользуемые процессы, вы можете использовать команду kill или killall для их завершения и освобождения занимаемой ими памяти.
Что то х, что это... (нет)

Bash и PowerShell
- это два различных интерпретатора командных оболочек, которые используются в разных операционных системах.

Некоторые отличия между ними:

Операционная система: Bash является стандартной командной оболочкой в большинстве дистрибутивов Linux и macOS, в то время как PowerShell является командной оболочкой, разработанной Microsoft, и представлена по умолчанию в операционных системах Windows.

Синтаксис: Bash использует синтаксис, основанный на командной строке Unix, а PowerShell основан на объектной модели с деревом командлетов (.NET).

Пользовательский интерфейс: PowerShell обладает более мощным пользовательским интерфейсом с поддержкой сценариев, а также возможностью автоматизации и работы с объектами, что делает его более гибким в некоторых задачах.

Взаимодействие с операционной системой: PowerShell имеет более широкие возможности для работы с операционной системой Windows, включая работу с реестром, системными службами, событиями и другими системными ресурсами, что делает его более удобным для администрирования Windows.

Расширяемость: PowerShell обеспечивает поддержку сценариев на языке C# и возможность подключения модулей, что облегчает создание пользовательских функций и расширение функциональности оболочки.

Кросс-платформенность: Хотя исходная версия PowerShell была разработана для Windows, Microsoft выпустила PowerShell Core, который является кросс-платформенной версией и поддерживается на Linux и macOS, что позволяет использовать его в среде смешанных операционных систем.
Ускорение запуска программ

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

sudo apt install preload

Демон preload может существенно повысить скорость загрузки приложений, но произойдет это только в том случае, если система оснащена минимум 4 гигабайтами. При меньших объемах он только помешает.
Скрипт по поиску строк одного файла в другом файле

./str_existance.sh to_find.txt where_find.txt

- Файл из которого берем строки для поиска указываем в первой переменной.
- Файл в котором делаем поиск указываем во второй переменной.
(Можно убрать якоря, чтобы успешный результат считался не только по полному match строки.
)
#!/bin/bash
cat $1 | while read sw
do
RESULT=$(grep ^"$sw"$ $2)
if [[ "$RESULT" == "" ]]; then
echo $sw";"not_exist
else
echo $sw";"exist
fi
done
​​Бинарные файлы внутри скриптов

Из скрипта можно извлекать предварительно записанные в них бинарные файлы, например архивы. Особенность при создании такого скрипта в том, что сначала надо написать сам скрипт, а потом с помощью команды cat загнать в него необходимый файл.

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

$ cat my_arch.tar.gz >> my_script.sh

После выполнения этой команды архив my_arch.tar.gz станет частью скрипта my_script.sh. Для извлечения архива в приведенном примере используется команда:
$ tail -n +30 "$0" > $DEPLOY_PATH/$ARCH_NAME
которая в данном случае извлекает бинарные данные и перенаправляет вывод в файл ./libs/jar/odfdom-simple/odfdom-libs.tar.gz.
Параметр -n +30 означает, что выводить данные надо начиная с 30 строки файла, а под "$0" скрывается имя выполняющегося скрипта.

После того как данные извлечены, можно распаковывать архив, распихивать файлы по каталогам, создавать симлинки и в общем делать всё, что нужно для развертывания вашей системы. Самое главное не забудьте вызвать команду exit до того, как начнутся бинарные данные, иначе bash попытается выполнить и их

(Пример скрипта, который извлекает из себя архив с jar-файлами, распаковывает его и удаляет архив)
Упрощенная схема процесса загрузки.

1. BIOS или прошивка загружают и запускают загрузчик системы.

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

3. Ядро выполняет инициализацию устройств и драйверов.

4. Ядро монтирует корневую файловую систему.

5. Ядро запускает команду init с идентификатором процесса 1. Эта точка является началом пространства пользователя.

6. Команда init приводит в действие остальные системные процессы.

7. В определенный момент команда init запускает процесс, позволяющий вам войти в систему. Обычно это происходит в конце или незадолго до окончания загрузки системы
tr и НЕ САМЫЙ НАДЕЖНЫЙ СПОСОБ ШИФРОВАНИЯ

Одно забавное применение команды tr — шифрование текста по алгоритму ROT13.

Шифрованием назвать этот алгоритм можно только с большой натяжкой, скорее это алгоритм обфускации (запутывания) текста. Иногда используется для запутывания потенциально уязвимого содержимого.

Метод заключается в простом смещении каждого символа на 13 позиций далее по алфавиту. Так как число 13 соответствует середине набора из 26 символов.

echo "Hello world" | tr a-zA-Z n-za-mN-ZA-M
Получаем: Uryyb jbeyq

Повторное применение той же процедуры приводит к обратному преобразованию:
echo "Uryyb jbeyq" | tr a-zA-Z n-za-mN-ZA-M
Получаем: Hello world
Имена файлов в Linux

В Linux, по сравнению с Windows, несколько иные правила построения имен файлов, и вам придется с этим смириться. В Linux нет такого понятия, как расширение имени файла. В Windows, например, для файла Document1.doc именем файла является фрагмент Documentl, a doc— это его расширение. В Linux же Documentl.doc — это имя файла целиком, никакого разделения на имя и расширение нет.

Максимальная длина имени файла— 254 символа. Имя может содержать любые символы (в том числе и кириллицу), кроме / \ ? < > * " |. Тем не менее кириллицу в именах файлов не рекомендуется использовать вовсе. Впрочем, если вы уверены, что не будете эти файлы передавать Windows-пользователя — используйте на здоровье. А при обмене файлами с Windows-пользователями из-за возможных несовпадений кодировок вместо русскоязычного имени файла адресат может увидеть абракадабру... Так что, имена файлов во всех случаях лучше писать латиницей.

Разделение элементов пути осуществляется символом / (прямой слэш), а не \ (обратный слэш), как в Windows.
Управление фоновыми заданиями

Linux jobs — системные задания, которые создаются пользователем в неограниченных количествах с возможностью переключения от одного к другому (с переднего на задний план и в обратном направлении).

Работа всегда производится с тем заданием, которое находится на переднем плане (foreground).
 • jobs выводит список фоновых процессов
 • fg номер переводит процесс на передний план
 • bg номер переводит процесс на задний план
Методы шифрования в Linux

Шифрование на уровне файловой системы

Этот способ шифрования предполагает наличие какой-то системы-прослойки, которая расположена поверх основной файловой системы и которая защищает файлы пользователя без вмешательства в нижележащие разделы. Рассмотрим, какие же утилиты шифрования этого типа нам предлагает ОС Ubuntu:

eCryptfs – это многоуровневая система шифрования Linux. В Ubuntu именно данный способ используется для шифрования домашней папки пользователя. Файл, зашифрованный этим способом, будет расшифрован в том случае, если у Вас есть ключ.
EncFS – этот метод позволяет установить зашифрованную файловую систему. Используется библиотека FUSE и модуль ядра Linux. Эта система опять же создается поверх существующей файловой системы, как и в первом случае, она не является шифрованным блочным устройством.

Блочное шифрование на уровне устройства

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

Loop-AES – это скоростная и прозрачная файловая система, также с помощью этого метода можно зашифровать и раздел подкачки в Linux. Advanced Encryption Standard (AES) - симметричный алгоритм блочного шифрования.
TrueCrypt – это свободное программное обеспечение с открытым исходным кодом для шифрования диска, программа функционирует, как под ОС Windows, так и под Linux. Но, как нам известно, разработчики прекратили поддерживать TrueCrypt, поэтому шифрование с помощью данной программы сейчас применяется нечасто.
dm-crypt/LUKS – поддерживает шифрование целых дисков, съемных носителей, разделов, томов RAID, логических томов и файлов. dm-crypt – позволяет создавать криптоконтейнер с помощью device-mapper и CryptoAPI ядра. LUKS (Linux Unified Key Setup) - протокол шифрования блочного устройства. Используя пакет dm-crypt, в папке /dev/mapper мы можем создать виртуальное блочное устройство с прозрачным шифрованием, как для файловой системы, так и для пользователя. Причем вся информация расположена на зашифрованном физическом разделе. Когда мы записываем данные на виртуальное устройство, они моментально шифруются и происходит их запись на диск, при чтении с виртуального устройства выполняется обратная операция.