en
Feedback
Linux

Linux

Open in Telegram

Все для системного администратора, новости и информация из мира Linux По всем вопросам @evgenycarter

Show more
2 346
Subscribers
-524 hours
-347 days
-20730 days
Posts Archive
Linux
2 346
Носители информации Друзья, кто застал? 👉@linuxchmod
+9
Носители информации Друзья, кто застал? 👉@linuxchmod

Linux
2 346
+1
Пакетная фильтрация в Linux Бесконтекстная пакетная фильтрация (iptables): stateless Контекстная пакетная фильтрация (iptables): stateful источник 👉@linuxchmod

Linux
2 346
Трюки терминала Bash Полезные комбинации клавиш (хоткеи) и небольшие хитрости, которые сделают Вашу работу в Linux более эффективной. Горячие клавиши Bash с Ctrl Ctrl + n — то же самое, что и стрелка вниз. Ctrl + p — то же самое, что и стрелка вверх. Ctrl + r — поиск по предыдущим командам из истории команд (history). Продолжайте нажимать Ctrl + r, чтобы искать дальше. Ctrl + Shift + r — поиск в другую сторону. Ctrl + s — остановить вывод в терминал. Ctrl + q — восстановить вывод в терминал после Ctrl + s. Ctrl + a — перейти к началу строки (аналог клавиши Home). Ctrl + e — перейти к концу строки (аналог клавиши End). Ctrl + d — если вы ввели что-то, то Ctrl + d удаляет символ под курсором. В противном случае означает конец ввода и завершает текущую сессию Bash. Ctrl + k — удалить весь текст от курсора до конца строки. Ctrl + x + backspace — удалить весь текст от начала строки до курсора. Ctrl + t — переставить символ до курсора на символ под курсором. Нажмите Esc + t для перестановки двух слов до курсора. Ctrl + w — удалить слово до курсора; затем Ctrl + y, чтобы вставить его. Ctrl + u — удалить строку перед курсором; Ctrl + y для вставки его. Ctrl + _ — отменить ввод. Ctrl + l — очищает окно терминала. То же самое, что и clear. Ctrl + x + Ctrl + e — запускает редактор, определённый в переменной $EDITOR, для ввода команды. Полезно для многострочных команд. Изменить заглавные на строчные и наоборот Esc + u — преобразовать буквы от курсора до конца строки в заглавные буквы. Esc + l — преобразовать буквы от курсора до конца строки в нижний регистр. Esc + c — заменить букву под курсором на заглавную. Запустить предыдущую команду ещё раз Запустить команду из истории по номеру (например, 53) !53 !! — запуск последней команды. sudo !! — запустить предыдущую команду с sudo. Запускает последнюю команду и меняет какой-то параметр. Например, меняем "aaa" на "bbb": # Последняя команда: echo 'aaa' $ ^aaa^bbb $ echo 'bbb' bbb Важно: предыдущая команда заменит только первое вхождение "aaa". Если вы хотите заменить все вхождения, используйте :&: ^aaa^bbb^:& # или !!:gs/aaa/bbb/ Запустить последнюю команду, которая начинается с... Например, до этого в истории команд была команда cat filename: !cat # или !c — запускает cat filename ещё раз. Указание файлов по шаблону в Bash /etc/pa*wd/etc/passwd — символ * означает "несколько любых символов". /b?n/?at/bin/cat — символ ? означает "один любой символ". ls -l [a-z]* — вывести список файлов, содержащих только буквы латинского алфавита. В квадратных скобках [] перечисляются символы, которые будут искаться. А символ * после [] означает "хоть сколько раз". ls {*.sh,*.py} — вывести все .sh и .py файлы. {} используется для группировки нескольких шаблонов по принципу "или". Полезные переменные окружения Bash Короткие переменные: $0 — оболочка командной строки или путь до запускаемого файла. $1, $2, $3, ... — аргументы запуска скрипта. $# — число аргументов, переданных в скрипт из терминала. $? — код завершения последней команды. $- — текущие опции, установленные для оболочки. $$ — идентификатор текущего процесса. $! — идентификатор процесса, завершённого последним. Более длинные, но тоже полезные переменные: $DESKTOP_SESSION — текущий менеджер дисплеев. $EDITOR — редактор текста по умолчанию. $LANG — используемый системой язык. $PATH — список директорий, в которых будут искаться исполняемые файлы. $PWD — текущая директория. $SHELL — текущая оболочка командной строки. $USER — имя текущего пользователя. $HOSTNAME — имя текущего хоста (компьютера). 👉@linuxchmod

Linux
2 346
📈Picosnitch - мониторинг сетевого трафика на каждый исполняемый файл с помощью BPF Получение уведомлений при подключении к с
📈Picosnitch - мониторинг сетевого трафика на каждый исполняемый файл с помощью BPF Получение уведомлений при подключении к сети новой программы или при ее изменении Контролирует пропускную способность сети, разбивая трафик по исполняемым файлам, хэшам, родителям, доменам, портам или пользователям с течением времени При желании можно проверить хэши или исполняемые файлы с помощью VirusTotal Хеши исполняемых файлов кэшируются на основе устройства + inode для повышения производительности и работают с приложениями, запущенными в контейнерах Используется BPF для точного мониторинга пропускной способности с низкими накладными расходами и fanotify для контроля исполняемых файлов на предмет модификации Поскольку приложения могут вызывать других пользователей для отправки/получения данных для них, родительский исполняемый файл и хэш также регистрируются для каждого соединения Прагматичный и минималистичный дизайн, сфокусированный на точном обнаружении с четким сообщением об ошибке, когда это невозможно https://github.com/elesiuta/picosnitch https://elesiuta.github.io/picosnitch/ 👉@linuxchmod

Linux
2 346
Центр обработки данных внутри ядерного бункера времен холодной войны 📸 +20 фото В центре Стокгольма находится штаб-квартира
Центр обработки данных внутри ядерного бункера времен холодной войны 📸 +20 фото В центре Стокгольма находится штаб-квартира Bahnhof, шведского интернет-провайдера и хостера с одним из самых крутых дата-центров на планете. Он получил известность благодаря тому, что там раньше располагался дом Wikileaks. Названный Pionen White Mountains, он расположен на высоте 30 метров под гранитными скалами парка Вита Берг в Стокгольме. Это место было бывшим ядерным бункером и командным центром во время холодной войны. Потребовалось более двух лет, чтобы взорвать 3992,6 кубических метров дополнительного пространства, которое понадобилось Bahnhof для размещения в пещерах резервных генераторов и серверных стоек. Общая площадь помещения составляет примерно 1 200 квадратных метров, и перед архитектурным бюро Albert France-Lanord Architects стояло несколько задач. https://bookflow.ru/tsentr-obrabotki-dannyh-vnutri-yadernogo-bunkera-vremen-holodnoj-vojny/ 👉@linuxchmod

Linux
2 346
+3
Основы работы с терминалом и BASH Основные команды терминала. Первый скрипт на BASH. Основы BASH | Условия Основы Bash | Циклы Основы BASH | for, let, trap Основы BASH | Функции, рекурсия, модули, массивы Основы терминала | GNU awk Основы BASH | expect, who, mesg, autoexpect Все видео доступны на youtube 👉@linuxchmod

Linux
2 346
+9
Анализ сетевого трафика и устранение неполадок 1.Обзор 2.Три направления 3.Tcpdump 4.Кадр, пакет, сегмент 5.Основы перехвата трафика 6. Обнаружение сети 7.Основы фильтрации 8.Основы TCP 9.RTT и размер окна 10.Проблемы источник 👉@linuxchmod

Linux
2 346
GoAccess - это реал тайм анализатор веб логов и интерактивная программа просмотра с открытым исходным кодом, который запускае
+1
GoAccess - это реал тайм анализатор веб логов и интерактивная программа просмотра с открытым исходным кодом, который запускается в терминале в системах * nix или через ваш браузер. Demo https://rt.goaccess.io/?20210208192039 Github https://github.com/allinurl/goaccess 👉@linuxchmod

Linux
2 346
Объединение файлов командой cat Команду cat в большинстве случаев используют только для просмотра файлов. На самом деле одно
Объединение файлов командой cat Команду cat в большинстве случаев используют только для просмотра файлов. На самом деле одно из ее предназначений это конкатенация (объединение) файлов. А название команды происходит от слова catenate (сцепить), то есть присоединение одного после другого. Под объединением файлов понимается их соединение. Например, если мы имеем два текстовых файла и в одном из них записана строка: My text file 1 А в другом: My text file 2 То после объединения мы получим файл с двумя строками: My text file 1 My text file 2 То есть происходит простое соединение файлов. К содержимому одного добавляется содержимое другого. Это касается не только текстовых файлов, но и всех остальных (бинарных, например). Чтобы объединить два файла командой cat нужно просто указать в качестве аргументов названия этих файлов и направить результат выполнения в новый файл. Например, мы хотим объединить два файла file1 и file2, а результат записать в новый файл file12. Тогда мы должны выполнить следующую команду: cat file1 file2 > file12 Вы можете объединить неограниченное количество файлов. Например, чтобы объединить четыре файла и записать результат в файл myfile, выполните команду: cat file1 file2 file3 file4 > myfile 👉@linuxchmod

Linux
2 346
+6
Bash скрипты bash: bash-completion, alias, type bash: переменные (RHCSA) источник 👉@linuxchmod

Linux
2 346
+4
Текстовый интерфейс пользователя (RHCSA) Стандартные потоки (RHCSA) Создание backup скрипта (RHCSA) Инкрементальные бэкапы с tar Глоббинг и регулярные выражения (RHCSA) источник 👉@linuxchmod

Linux
2 346
Наиболее распространенные оболочки 🔹Текстовые оболочки Bash (оболочка типичная для систем GNU/Linux) Bourne оболочки (оболоч
Наиболее распространенные оболочки 🔹Текстовые оболочки Bash (оболочка типичная для систем GNU/Linux) Bourne оболочки (оболочка из первых систем Unix) C оболочки (оболочки популярные на Unix) Z оболочки (известный как Zsh) Korn оболочки (системы оболочки , обычно доступные на Unix) Debian Альмквист оболочки (оболочки , используемый в Debian и производных для запуска системных скриптов) cmd.exe (оболочка операционных систем семейства Windows NT) command. com (оболочка операционной системы MS-DOS и некоторых системах Microsoft Windows) Windows PowerShell (Advanced Shell для систем Microsoft Windows) 🔹Графические оболочки GNOME (что характерно для GNU / Linux и Solaris 10) KDE (что характерно для GNU/ Linux) Xfce (что характерно для систем GNU / Linux) Common Desktop Environment (как правило, доступны для систем Unix) Finder (оболочка систем Mac OS ) File Explorer оболочка системы Microsoft Windows) Unity (Official оболочка Ubuntu) 👉@linuxchmod

Linux
2 346
Badblocks — команда для поиска и исправления поврежденных секторов на жестких дисках Команда badblocks предназначена для поиска и исправления поврежденных секторов на жестких дисках. На сегодняшний день она в некоторой степени утратила свою актуальность из-за того, что современные жесткие диски осуществляют переназначение поврежденных секторов в автоматическом режиме сразу же после возникновения ошибок, связанных с чтением или записью данных. Тем не менее, она может использоваться для активации упомянутого механизма переназначения секторов, так как при работе в основном режиме она осуществляет посектороное чтение данных с жесткого диска, которое позволяет жесткому диску выявить и переназначить поврежденные сектора. Предупреждение: не используйте рассматриваемую команду, если не до конца уверены в правильности своих действий или не понимаете сути происходящих процессов, ведь в результате даже незначительной ошибки вы можете лишиться всех хранящихся на диске данных. Кроме того, не пытайтесь использовать эту команду по отношению к смонтированному разделу или к диску с со смонтирнованными разделами, ведь в этом случае последствия будут непредсказуемыми. Перед использованием badblocks необходимо определиться с жестким диском или его разделом, на котором нужно искать поврежденные сектора. Для этого может использоваться команда lsblk: # lsblk -o NAME,FSTYPE,LABEL,MOUNTPOINT,MODEL NAME FSTYPE LABEL MOUNTPOINT MODEL ... В данном случае в столбце NAME будут выводиться имена файлов устройств накопителей и их разделов (для обозначения разделов используется дополнительная нумерация), в столбце FSTYPE - названия созданных в разделах файловых систем, в столбце LABEL - метки разделов, в столбце MOUNTPOINT - пути к точкам монтирования файловых систем, а в столбце MODEL - информация о моделях устройств. Базовый синтаксис команды: # badblocks -v /dev/<имя файла раздела или устройства> Параметр -v используется для вывода информации о ходе процесса проверки жесткого диска. Если вам по какой-либо причине понадобится запретить использование поврежденных секторов на уровне файловой системы вы всегда можете сохранить список этих секторов и передать его утилите e2fsck. Это делается следующим образом: # badblocks -v /dev/<имя файла раздела или устройства> > /tmp/badblocks.txt # e2fsck -l /tmp/bad-blocks.txt /dev/<имя файла раздела или устройства> # rm /tmp/badblocks.txt Однако, в большинстве случаев будет достаточно однокртного посектороного чтения данных из раздела или со всего устройства. Примеры использования 1. Выбор раздела жесткого диска для проверки # lsblk -o NAME,FSTYPE,LABEL,MOUNTPOINT,MODEL NAME FSTYPE LABEL MOUNTPOINT MODEL sdb MAXTOR STM316081 ├─sdb4 ext4 home /home ├─sdb2 ext4 Debian └─sdb1 swap ... Выберем раздел с корневой файловой сситемой дистрибутива Debian (с соотвествующей меткой), который в данный момент не смонтирован. Ему соответствует файл устройства sdb2. 2. Проверка выбранного раздела на наличие поврежденных секторов # badblocks -v /dev/sdb2 Checking blocks 0 to 12697599 Checking for bad blocks (read-only test): done Pass completed, 0 bad blocks found. (0/0/0 errors) Очевидно, что в ходе проверки раздела поврежденных секторов не было обнаружено. 👉@linuxchmod

Linux
2 346
Скриптик переустановки пароля пользователя MikroTik # Скрипт смены пароля пользователя # только для исполнения в терминале RO
Скриптик переустановки пароля пользователя MikroTik # Скрипт смены пароля пользователя # только для исполнения в терминале ROS # by Sertik 09/06/2020 { :global EnterString do={ :local cont 0; :local string "" :while ($cont!=13) do={ :local key ([:terminal inkey]) :if ($key!=13) do={ :local char [[:parse "(\"\\$[:pick "0123456789ABCDEF" (($key >> 4) & 0xF)]$[:pick "0123456789ABCDEF" ($key & 0xF)]\")"]] :set string ("$string"."$char")} :set cont $key } :return $string} ; :put "Please, enter Username:" :local RegUser [$EnterString]; :put ""; :if ([:len [/user find disabled=no name=$RegUser]]!=0) do={:put "Ok, a user with this name was found"; :put ""; :put "Please, enter new password for this user:" :local newPass [$EnterString]; [/user remove $RegUser]; [/user add name=$RegUser password=$newPass group=full]; :put ""; :put "The user has been re-created, the password has been changed"; :put ("New user`s password: "."$newPass"); :put "Don't forget to set up access restrictions based on ip addresses"; } else={:put ("User "."$RegUser "."not found"); :put ""; } } Скрипт интересен строкой преобразования кода символа из переменной $key, сграбленного с клавиатуры терминала, в сам символ. :local char [[:parse "(\"\\$[:pick "0123456789ABCDEF" (($key >> 4) & 0xF)]$[:pick "0123456789ABCDEF" ($key & 0xF)]\")"]] 👉@linuxchmod

Linux
2 346
Netdata - это высокоточный мониторинг инфраструктуры и производительности в режиме реального времени. 200+ предварительно созданных интеграций Интеграция со все большим количеством операционных систем, коллекторов, платформ уведомлений и цепочек инструментов мониторинга/наблюдения. Если метрика может быть собрана, она будет собрана: с 2 000+ автоопределяемых метрик и 100+ предварительно настроенных предупреждений на каждый узел. https://github.com/netdata/netdata 👉@linuxchmod

Linux
2 346
🔥Зажигаем огонь в терминале с помощью команды: aafire Как установить libaa-bin в Ubuntu / Debian sudo apt update sudo apt install libaa-bin Примеры программ с использованием aalib http://aa-project.sourceforge.net/aalib/ 👉@linuxchmod

Linux
2 346
🕵️ ss вместо netstat: как быстро найти, что слушает порт netstat давно устарел и не показывает точную картину на системах с systemd. Настоящие профи уже давно используют ss. 🔧 Примеры, которые реально полезны: 1️⃣ Кто слушает порт 443:

ss -ltnp 'sport = :443'
📌 -l — только слушающие, -t — TCP, -n — не резолвим имена, -p — покажи PID/имя процесса. 2️⃣ Все открытые соединения от процесса (например, PID 1234):

ss -pant | grep pid=1234
3️⃣ Список соединений в состоянии ESTABLISHED:

ss -ant state established
4️⃣ Сколько вообще активных соединений:

ss -s
💡 Фишка: ss быстрее и точнее netstat, т.к. работает через netlink. Особенно это критично на серверах с тысячами соединений. Для UDP аналогично — просто меняем -t на -u. 👉@linuxchmod

Linux
2 346
Запуск команд в фоновом режиме Синтаксис Задачу (например, команду или скрипт) можно перевести в фоновый режим, добавив символ «&» в конец командной строки. Этот оператор переводит команду в фоновый режим и освобождает место в терминале. Команда, выполняемая в фоновом режиме, называется заданием. Во время работы фоновой команды можно выполнять любые другие команды. Синтаксис выглядит следующим образом: command & script-name & /path/to/command arg1 arg2 & command-1 | command-2 arg1 & command-1 | command-2 -arg1 -arg2 >/path/to/output & Примеры Чтобы перевести команду ls в фоновый режим, введите: $ ls *.py > output.txt & Чтобы перевести следующую команду поиска в фоновый режим, добавьте символ «&» в конец командной строки: find . -iname "*.mp3" > myplaylist.txt & Как найти задания, работающие в фоновом режиме? Выполните следующую команду: jobs Пример вывода данных: [1]- Running find / -iname "*.c" 2> /dev/null > /tmp/output.txt & [2]+ Running grep -R "hostNamed" / 2> /dev/null > /tmp/grep.txt & Где [1] и [2] идентификаторы заданий. Чтобы отобразить идентификаторы процессов для идентификаторов заданий помимо стандартных сведений, передайте параметр -l: jobs –l Пример вывода данных: [1]- 7307 Running find / -iname "*.c" 2> /dev/null > /tmp/output.txt & [2]+ 7324 Running grep -R "hostNamed" / 2> /dev/null > /tmp/grep.txt & Чтобы отобразить только идентификаторы процессов, введите: jobs -p Пример вывода данных: 7307 7324 Как прекратить выполнение заданий, работающих в фоновом режиме? Для принудительного или постепенного завершения процесса следует использовать команду kill. Синтаксис выглядит следующим образом: kill PID kill -15 PID kill -9 PID killall process-Name-Here killall -15 process-Name-Here killall -9 process-Name-Here Как переместить процесс из фонового режима в приоритетный? Синтаксис: %JOB-ID ИЛИ fg JOB-ID Сначала следует вывести список текущих заданий с помощью команды jobs. Для этого введите: jobs -l Пример вывода данных: [1]- 7307 Running find / -iname "*.c" 2> /dev/null > /tmp/output.txt & [2]+ 7324 Running grep -R "hostNamed" / 2> /dev/null > /tmp/grep.txt & Чтобы перевести задание job id #2 в приоритетный режим, введите: %2 ИЛИ используйте команду: fg 2 Пример вывода данных: grep -R "hostNamed" / 2> /dev/null > /tmp/grep.txt Чтобы перевести это задание обратно в фоновый режим, нажмите клавишу Z, удерживая клавишу CTRL. При этом выполнение текущего приоритетного задания будет приостановлено. Введите следующую команду, чтобы перевести задание в фоновый режим: %2 & ИЛИ используйте команду: bg Теперь командное задание grep будет работать в фоновом режиме. 👉@linuxchmod

Linux
2 346
Понимание Inode’ов Понимание inode’ов критически важно для понимания файловых систем Unix. Файлы содержат данные и метаданные. Метаданные — это информация о файле. Метаданные хранятся в inode. Содержимое inode включает: - Номер inode - UID - GID - Размер - Atime (время последнего доступа) - Mtime (время последней модификации) - Ctime (время последнего изменения метаданных) - Размер блока - Режим (права доступа и тип файла) - Количество жёстких ссылок - ACL (списки контроля доступа) Обычно inode занимает 256 байт. Имена файлов не хранятся в inode — они находятся в данных, относящихся к директории. Как правило, имена файлов хранятся линейно, из-за чего поиск по имени может быть медленным. Файловые системы Ext4 и XFS используют более эффективные B-деревья (Btrees) для хранения имён файлов в директориях, что обеспечивает постоянное время поиска, в отличие от линейного. Dentry (сокращение от directory entry — запись в директории) используется для хранения связи между inode и именем файла в директории. Inode может содержать как прямые (direct), так и косвенные (indirect) указатели на блоки данных файла. Прямой указатель означает, что inode содержит номер блока, в котором находятся данные файла. Косвенный указатель означает, что inode содержит номер блока, в котором находятся номера других блоков с данными. Файловая система Ext создаёт фиксированное количество inode’ов при форматировании. Если inode’ы заканчиваются, необходимо форматировать файловую систему. В отличие от неё, XFS не использует фиксированное количество inode’ов — они создаются по мере необходимости. При удалении файла системный вызов unlink() удаляет запись в директории, указывающую на inode, и помечает inode как свободный. Сами блоки данных при этом не удаляются. Количество жёстких ссылок на файл хранится в inode. Каждый раз при создании жёсткой ссылки это число увеличивается. Символические (soft) ссылки не увеличивают счётчик ссылок на файл или директорию. Суперблок содержит метаданные о файловой системе. Обычно в файловой системе хранится несколько копий суперблока на случай повреждения основной. Некоторые из данных, хранящихся в суперблоке: – Размер файловой системы – Размер блока – Количество свободных и занятых блоков – Размер и расположение таблицы inode’ов – Карта блоков диска Информацию о суперблоке можно получить с помощью команды: dumpe2fs /dev/mount | grep -i superblock 👉@linuxchmod

Linux
2 346
Советы по настройке history команд в Bash Каждая вводимая в терминале команда сохраняется в файле ~/.bash_history. Чтобы посм
Советы по настройке history команд в Bash Каждая вводимая в терминале команда сохраняется в файле ~/.bash_history. Чтобы посмотреть историю команд – введите history. Настройка истории команд в Bash осуществляется путем добавления переменных окружения в файл ~/.bashrc. Чтобы изменения в ~/.bashrc вступили в силу, выполните: source ~/.bashrc 1. Добавляем Отображение Даты и Времени в Bash History Иногда очень полезно узнать время, когда какая-либо команда была выполнена. Установите HISTTIMEFORMAT, чтобы сохранять время выполнения каждой команды. Для этого добавьте следующую строку в файл ~/.bashrc: export HISTTIMEFORMAT="%h %d %H:%M:%S " Теперь, набрав history, Вы получите следующий вывод: 113 Jun 08 16:31:06 sudo ifconfig 114 Jun 08 16:31:10 top 115 Jun 08 16:31:19 ping disnetern.ru 116 Jun 08 16:31:22 history 2. Увеличиваем Размер Хранимой Истории Увеличьте HISTSIZE — количество команд, которые необходимо запоминать в списке истории (стандартное значение — 500). export HISTSIZE=5000 Увеличьте HISTFILESIZE — максимальное количество строк, содержащееся в файле истории (стандартное значение — 500). export HISTFILESIZE=5000 3. Добавляем Команды Bash в Файл с Историей Bash перезаписывает файл .bash_history? Чтобы добавлять новые команды в файл с историей, а не переписывать его каждый раз, добавьте следующую строку в ~/.bashrc: shopt -s histappend 4. Мгновенно Сохранять Историю Команд По умолчанию, Bash записывает историю команд в .bash_history, при завершении сессии. Если сессия внезапно оборвется Вы потеряете текущую историю команд. Используйте переменную $PROMPT_COMMAND, чтобы сохранять команды сразу после выполнения: Добавьте следующую строку в файл ~/.bashrc, если переменная $PROMPT_COMMAND не была задана ранее: PROMPT_COMMAND='history -a' Добавьте следующую строку, если переменная $PROMPT_COMMAND уже была задана: PROMPT_COMMAND='$PROMPT_COMMAND; history -a' 👉@linuxchmod