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

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

Регистрация в перечне РКН https://clck.ru/3EpL9L
Download Telegram
Идентифицировать тип неизвестного вам файла, поможет команда: file

В Linux это особенно актуально, так как большинство файлов не имеют расширения, которое можно использовать для идентификации (в отличие от Windows, где расширения файлов есть, например .exe).

К примеру, даже если вы переименуете файл-изображение А.png и присвоите ему имя и расширение С.jpg, изменив тем самым его тип, команда file сможет понять это и сообщит вам правильный тип файла (в данном случае это PNG-файл)


Пример использования:
file some_file
Глобальные системные журналы
/var/log/syslog
/var/log/messages 
(в зависимости от дистрибутива) содержат сообщения с момента запуска системы, от ядра Linux, различных служб, обнаруженных устройствах, сетевых интерфейсов и др.

С помощью команды logger можно добавить собственное сообщение в журнал, к примеру:

logger 'Тестовая запись'

Чтобы увидеть запись сразу после ее фиксации:

tail -n 1 /var/log/syslog

Можно записать вывод прямо из команды, передав их в logger. Это может быть особенно полезно для сбора выходных данных или сообщений об ошибках, генерируемых автоматизированными задачами, такими как задания cron.
Сначала мы, чтобы вывести список всех файлов в корневом каталоге, используем команду find / -type f.

Каждый файл прогоняется через команду ls -s, которая определяет его размер в блоках (не в байтах).

Затем список сортируется по убыванию, а первые пять строк отображаются с помощью команды head.

Чтобы увидеть самые маленькие файлы в системе, вместо head можно использовать tail или удалить параметр -r из сортировки.
При взгляде на имя файла /etc/passwd может сложиться впечатление, что в нем хранится информация о паролях.

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

В современных системах пароли находятся в другом файле — /etc/shadow, который обычные пользователи не могут прочитать. Он связывает между собой учетные записи и хешированные, модифицированные пароли. Эта информация позволяет деактивизировать учетную запись по прошествии какого-то времени или в случае, если пользователь долго не менял пароль. 

Посмотреть его в более удобном виде можно так:
sudo cat /etc/shadow | column -t -s :
В Linux предусмотрена специальная переменная $?, в которой хранится значение статуса выхода последней выполненной команды.

[ Пост с примером использования ]

Значение переменной $? необходимо рассматривать или использовать сразу после выполнения команды, статус выхода которой должен быть проверен.
В папке /proc существуют отдельные директории для каждого работающего процесса (названные в соответствии с их ID), которые содержат информацию о процессе.

Кроме того, в ней хранятся файлы, содержащие данные о некоторых других свойствах системы.

Следующие примеры показывают, какую информацию можно получить из папки /proc в системе Linux:

cat /proc/cmdline Показывает параметры, переданные ядру при загрузке. 

cat /proc/cpuinfo Показывает информацию о процессоре. 

cat /proc/devices Отображает существующие устройства посимвольного ввода-вывода и блочные устройства.

cat /proc/diskstats Отображает диски, разделы и статистику по ним. 

cat /proc/filesystems Выводит список поддерживаемых ядром файловых систем. nodev означает. что данный тип не используется ни одним устройством. 

cat /proc/interrupts Просмотр присвоенных IRQ каналов.

cat /proc/iomem Показывает адреса физической памяти. 

cat /proc/ioports Показывает адреса виртуальной памяти.

cat /proc/loadavg  Показывает 1-. 5-и 15-минутные средние загрузки. Запущенные процессы/общий и наивысший PID.

cat /proc/meminfo Доступная оперативная память и файл подкачки.

cat /proc/modules Загруженные модули, размер памяти, загруженные копии программы, состояние загруженных зависимостей и память ядра. 

cat /proc/mounts Информация о смонтированных локальных/удаленных файловых системах.

cat /proc/stat Статистика ядра с момента запуска системы.

cat /proc/swaps Информация о размере файла подкачки.

cat /proc/uptime Секунды с момента загрузки системы/общее количество секунд простоя.

cat /proc/version Версия ядра и соответствующего компилятора.
KDE, GNOME или XFCE?

В Linux существует много видов рабочих столов и менеджеров окон. Кто из них лучше - это вопрос личных предпочтений и возможностей вашего ПК.

Три самые популярные графические оболочки:

1. KDE
Во многих отношениях KDE имеет схожесть с Windows, поэтому, если вы только переходите на линукс, то это отличный вариант. Требует меньше системных ресурсов, чем Unity, и меньше оперативки, чем GNOME 3.

2. GNOME
Оболочка GNOME сосредоточена на свободе. Хоть и более требовательна к ресурсам компьютера, чем KDE. Включает в себя несколько оконных менеджеров, то есть можно выбрать внешний вид окон и других системных элементов из нескольких существующих вариантов.

3. XFCE
XFCE — Менее ресурсоемкий, чем KDE или Gnome. По своему внешнему виду напоминает Mac OS X. Рабочий стол прост и не перегружен значками. Оболочка занимает очень мало места в памяти, а низкая загрузка ЦП также является его отличительной чертой.
Разбивка текста на столбцы с помощью команды column

Текст можно прочитать как из файла, так и со стандартного ввода, если файл не указан.

Формат вызова:
column [параметры] [файл] 

Параметры:
-с n - Задает количество столбцов (число n).
-s «символ» - указанный символ будет использоваться в качестве разделителя столбцов.
-t - Текст будет форматироваться как таблицы. По умолчанию разделителем полей считается пробел, но с помощью параметра -s можно задать другой разделитель.

Пример полезного использования команды - в предыдущем посте.
Команда diff , для сравнения двух файлов, упоминалась ранее, но что если нужно сравнить сразу три файла?

Команда diff3

Формат вызова:
diffЗ [параметры] файл1 файл2 файлЗ 

Выводит следующую информацию:
==== - все три файла разные; 
===1 - первый файл отличается от второго и третьего; 
===2 - второй файл отличается от первого и третьего; 
===З - третий файл отличается от первого и второго. 

Параметры:
-a - сравнивать файлы как текстовые, даже если они бинарные
- Создание сценария для редактора ed, который показывает в квадратных скобках все отличия между файлами.
-e - Создает сценарий для ed, который помещает все отличия между файлами файл2 и файлЗ в файл файл1 (будьте осторожны!)
Сгенерировать случайные или последовательные данные можно с помощью заранее установленной утилиты Jot

Генерирует числа, текст, все вместе.
Чтобы вывести последовательность чисел, можно воспользоваться командой:
jot [кол-во чисел] [начиная с]

Чтобы вывести случайные числа:
jot -r [кол-во чисел] [нижний предел] [верхний предел]

К примеру, вывести 26 строк начиная с xaa до xaz:
jot -w xa%c 26 a
Анализ и перехват сетевого трафика

Утилита tcpdump — отличный инструмент, который способен перехватывать и анализировать сетевой трафик. 

Для захвата пакетов, проходящих через определенный интерфейс, к примеру eth1:
tcpdump -i eth1

Захватает только определенное кол-во строк, например 5:
tcpdump -c 5

Чтобы просматривать пакеты, приходящие на определенный порт, используем:
tcpdump -i eth1 port 80

Для перехвата пакетов, приходящих или исходящих от определенного хоста:
tcpdump host 10.0.2.15

Для перехвата пакетов протокола ICMP, проходящие через все сетевые интерфейсы компьютера:
tcpdump –i any icmp
Cкрипт сравнивает указанные в качестве параметров две директории по содержимому на основе информации дате их изменения.

Пример вывода:
> test1 (старее в dir2/)
> test2 (старее в dir2/)
- test4 (отсутствует в dir2/)
< test5 (старее в dir1/)
+ test3 (отсутствует в dir1/)

test1..5 - тестовые файлы в тестовых директориях dir1 и dir2
Вывести список устройств USB можно с помощью команды lsusb 

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

Для получения более подробной информации в виде иерархии, включающей в себя драйверы ядра, коды устройств и номера производителей и портов, надо запустить команду с параметром -tv.
Утилита управления сетевым экраном iptables 

С ее помощью создаются правила, которые управляют фильтрацией и перенаправлением пакетов.Есть несколько основных базовых понятий для работы с iptables: правило, таблица и цепочка

Правило состоит из критерия, действия и счетчика. Если пакет соответствует критерию (требованию), то к нему принимается действие и этот пакет учитывается счетчиком.

Таблица – совокупность базовых и пользовательских цепочек, объеди- ненных общим функциональным назначением. 

Цепочкой является упорядоченная последовательность правил. Существует пять базовых цепочек: PREROUTING, INPUT, FORWARD, OUTPUT, POSTROUTING.

Например, чтобы запретить весь входящий трафик:
iptables -A INPUT -j DROP

Чтобы удалить все правила используется команда iptables –F
Часы останутся активны до закрытия сессии терминала.
Однострочник, показывающий 15 самых часто используемых вами команд в Bash:

cat ~/.bash_history | tr "\|\;" "\n" | sed -e "s/^ //g" | cut -d " " -f 1 | sort | uniq -c | sort -n | tail -n 15

Последняя цифра задает нужное количество вывода.

Код текстом, чтобы было удобно просто скопировать и проверить.
Определение оборудования PCI с помощью команды lspci 

Команда lspci читает информацию с шины PCI (локальная аппаратная шина), к которой подключены встроенные компоненты на материнской плате, а также карты расширения, вставленные в слоты PCI. 

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

Получим подобное:
[...]
00:1f.2 SATA controller: Intel Corporation 9 Series Chipset Family SATA Controller [AHCI Mode]
[...

00:1f.2 — это номер BDF устройства: ( шина:устройство.функция ). 
Номер шины — 00, номер устройства — 1f и номер функции — 2

Чтобы получить больше информации, можно увеличить вывод:
lspci -v
lspci -vv 
lspci -vvv
​​Поиск файлов и каталогов с помощью locate

Команда locate- самый быстрый и простой способ поиска файлов и каталогов по их именам. Заранее установленная, команда locate выполняет поиск заданного шаблона в файле базы данных. Найденные результаты отображаются на экране, по одному на строку.

Синтаксис:
locate [параметр] шаблон

К примеру, чтобы найти файл с именем .bashrc, набираем:
locate .bashrc

Вывод будет включать имена всех файлов, содержащих строку .bashrc в их именах.
Gnuplot

Инструмент, который позволяет строить двух- и трехмерные графики, установив утилиту:
sudo apt install gnuplot-x11

Для запуска набираем:
gnuplot

К примеру, построить график синуса:
gnuplot> plot sin(x)

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

gnuplot> plot 'some_file' u 1:2 w lines 

Чтобы построить 3d график, используется splot
Основные конфигурационные файлы GRUB2

В дополнение к посту о программе управления процессом загрузки.

/boot/grub/grub.cfg — НЕ редактируй его. Создается командой grub2-mkconfig (или grub-mkconfig в зависимости от дистрибутива) с использованием набора основных файлов конфигурации и файла grub по дефолту в качестве источника спецификаций настроек юзера. Содержит код, похожий на bash, и список установленных ядер в виде массива.

/etс/default/grub — основной файл конфигурации, который меняет внешний вид загрузочного меню. 

/etc/grub.d/various — файлы скриптов, используемые для создания grub.cfg.
​​Форматирование текста 

fmt — утилита для простого форматирование текста

Синтаксис вызова команды:
fmt [параметры] файлы 

К примеру, разбить текст в файле some_file на строки по 50 символов, можно выполнив:

fmt -w 50 some_file