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

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

Регистрация в перечне РКН https://clck.ru/3EpL9L
Download Telegram
В 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
С точки зрения ОС Linux все пользователи (и запущенные от их имени процессы, помимо имеющихся у них pid) различаются друг от друга по наличию идентификатора пользователя uid (user id).

При разрешении вопросов доступа система ориентируется исключительно по uid номерам. В традиционных системах для хранения uid отведено 2 байта и обычно этого (2^16=65536 пользователей) хватает.

Увидеть свой uid-номер можно командой id

Пользователи с номерами uid до n=1000 называются системными. Обычные пользователи имеют номера ≥n. В некоторых системах граница разделения обычных пользователей и системных проходит по n=500, в каких-то по n=1000.

Индексные дескрипторы файловых систем и файловые дескрипторы операционных систем хранят исключительно uid номера, а не имена пользователей. Однопользовательские файловые системы не хранят никаких uid владельцев файловых объектов.
Узнать объем свободного места на жестком диске или в разделе поможет команда df

Если устройство не указано (в качестве параметра к df), то на экран выводится информация о смонтированных файловых системах, колонки которых, обозначают следующее:

Filesystem — диск, файловая система которого смонтирована;
1k-blocks — количество логических блоков;
Used — количество занятых блоков;
Available — количество свободных блоков;
Use% — процент использованного дискового пространства;
Mounted on — как смонтирована файловая система.
​​Утилита ps (process status) - неоднократно использовалась в постах выше.

Эта консольная программа в Linuх-подобных дистрибутивах, позволяет выводить отчет о запущенных в системе процессах в виде статического снимка.

Синтаксис программы ps следующий:
ps [параметры]
Получить информацию о состоянии оперативной памяти, можно используя команду free -h (параметр -h для удобочитаемого вида), которая опирается на файл /proc/meminfo.

Помимо очевидных колонок, shared - это память, используемая хранилищем tmpfs для поддержки различных псевдофайловых систем наподобие /dev/ и /sys/.
Буферы и кэш связаны с памятью, используемой ядром для операций ввода-вывода на уровне блоков. Как сбросить буфер - был [ отдельный пост ].
Любая память, используемая любым системным процессом, обозначается как used.
available обозначает память, которая в настоящее время доступна для запуска новых приложений.