Linux / Линукс
12.5K subscribers
5.68K photos
147 videos
27 files
5.91K links
№ 4922181359
Все о мире Свободного Программного Обеспечения

🤝 Для связи - @raz_raz
💬 Чат - t.iss.one/linuxgram_chat
🔷 ВК - vk.com/linux0ids
💡 Предложка - @linux_gram_bot

Заказать рекламу через биржу:
https://telega.in/c/linux_gram
Download Telegram
Посты, из которых можно почерпнуть что-то новое:

▪️ Linux Roadmap

▪️ #alphabet - алфавит команд

▪️ #security - инструменты безопасности

▪️ #monitoring - инструменты и сервисы для мониторинга серверов Linux

▪️ Комбинации клавиш терминала

▪️ #Памятка по Git, FHS, bash и многому другому

▪️ #Bash

▪️ #Vim

▪️ Тренажер для изучения терминала Linux

▪️ Опенсорсные альтернативы ChatGPT, Twitter, GitHub, Figma и другого закрытого софта.

▪️ Полезные ресурсы

▪️ 10 команд Linux, которые убьют ваш сервер

▪️ Ресурсы для освоения Git и GitHub

▪️ Игры для изучения Linux

▪️ Сервис даёт прямо в браузере потрогать разные версии ОС и выбрать для себя самый удобный Linux дистрибутив

Linux / Линукс
🥸
Please open Telegram to view this post
VIEW IN TELEGRAM
👍30105
Необычные и малоизвестные трюки с перенаправлениями в bash, которые могут значительно упростить работу.

▪️ /dev/tcp
bash особым образом обрабатывает перенаправление в файл /dev/tcp/host/port, и если host - это допустимое имя хоста или ip адрес, а port - целое число порта или имя службы, пытается открыть соответствующий TCP-сокет.

Например, перенаправим вывод TCP сервера времени на cat и выведем на экран:
$cat < /dev/tcp/time.nist.gov/13
60311 24-01-02 10:43:53 00 0 0 798.9 UTC(NIST) *


Более сложный пример - HTTP запрос. Давайте создадим новый файловый дескриптор, перенаправим на него строку HTTP-запроса, затем прочитаем ответ.
$exec 5<>/dev/tcp/google.de/80
$echo -e "GET / HTTP/1.1\nhost: google.de\n\n" >&5
$cat <&5 | head
HTTP/1.1 301 Moved Permanently
Location: https://www.google.de/
Content-Type: text/html; charset=UTF-8
Date: Thu, 18 Nov 2021 08:27:18 GMT
Expires: Sat, 18 Dec 2021 08:27:18 GMT
Cache-Control: public, max-age=2592000
Server: gws
Content-Length: 218
X-XSS-Protection: 0
X-Frame-Options: SAMEORIGIN


▪️ Placeholder -
Некоторые команды, например tar, воспринимают символ - как перевод на стандартный вывод, что позволит воспользоваться результатом работы команды без создания промежуточных файлов, например создадим бэкап директории /www/data и скопируем по ssh:
tar zcvf - /www/data | ssh user@remoter "cat > /backup/wwwdata.tar.gz"


▪️ Группировка команд
Передача стандартного вывода одной команды в стандартный ввод другой команды - мощный инструмент. Но что, если вам нужно передать стандартный вывод нескольких команд? Для того чтобы объединить вывод нескольких команд можно использовать группировку команд, для этого используется синтаксис:{ command1; command2; }, например объединим вывод команд ls, чтобы подсчитать количество файлов в двух директориях:
$mkdir dir{1,2}
$touch dir1/test1.txt
$touch dir2/test2.txt
${ ls dir1; ls dir2; } | wc -l
2


▪️ Подмена процессов
Подстановка(подмена) процессов позволяет обрабатывать выходные данные команды как файл, упрощая объединение и манипулирование данными из нескольких команд. Для реализации использует следующий синтаксис:

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

>(команда) – этот синтаксис также создает именованный канал, но подключает его к вводу команды внутри скобок. Это позволяет перенаправить вывод одной команды на ввод другой команды.

Таким образом, можно сравнить вывод двух команд с помощью diff, как если бы мы сохранили его в файлы:
$diff <(ls dir1) <(ls dir2)
< test1.txt
---
> test2.txt


Или перенаправим вывод ls на вход grep и wc:
ls | tee >(grep 'txt$') >(wc -l) > /dev/null 


#Bash
Linux / Линукс 🥸
Please open Telegram to view this post
VIEW IN TELEGRAM
24👍16🔥441
JShielder

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

JSHielder автоматизирует процесс установки всех необходимых пакетов для размещения веб-приложения и защиты Linux-сервера при минимальном взаимодействии с пользователем.

📌 https://github.com/Jsitech/JShielder

#Bash
Linux / Линукс
🥸
Please open Telegram to view this post
VIEW IN TELEGRAM
14
Приёмы командной строки

▪️ Как обращаться с каталогами с большим количеством файлов
Возможно, вы сталкивались с этой проблемой: вы пытались выполнить ls в каталоге с очень большим количеством файлов, но команда выдавала ошибку "список аргументов слишком длинный". Есть несколько вариантов обойти это ограничение.

• Использование встроенной командной строки
Встроенный Bash не имеет ограничения ARG_MAX.

• Используйте "find", когда вам нужны параметры форматирования.
find /data/test_xargs -type f -ls -printf '%name'


Или с помощью форматирования, имитирующего ls:
find /data/test_xargs -type f -printf '%f\n


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

Нужен способ регулировать количество запросов на сжатие, чтобы вы не запускали больше процессов, чем количество имеющихся у вас процессоров.

Попробуем сделать это с помощью find и xargs:
find /data/test_xargs -type f -print0| xargs -0 -P $(($(nproc)-1)) -I % gzip %


▪️ Совместимость процессора с набором задач для максимального увеличения времени выполнения
Несмотря на ограничение количества процессоров, некоторые интенсивные задания могут замедлять другие процессы на вашем компьютере при поиске ресурсов. Есть несколько вещей, которые вы можете сделать, чтобы держать производительность сервера под контролем, например, с помощью taskset.

Команда taskset используется для установки или получения привязки к процессору запущенного процесса с учетом его pid или для запуска новой команды с заданным привязкой к процессору.

В общем, мы всегда хотим оставлять один из процессоров "свободным" для задач операционной системы. Обычно ядро довольно хорошо работает, привязывая запущенные процессы к определенному процессору, чтобы избежать переключения контекста, но если вы хотите принудительно установить, на каких процессорах будет выполняться ваш процесс, вы можете использовать taskset.
taskset -c 1,2,3,4,5,6,7 find /data/test_xargs -type f -print0| xargs -0 -P $(($(nproc)-1)) -I % gzip %


#Bash
Linux / Линукс
🥸
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11
Bash-Snippets — полезные сценарии Bash для пользователей командной строки

• Cheat — шпаргалка по командам Linux.
• Cloudup — инструмент для резервного копирования репозиториев GitHub в Bitbucket.
• Crypt — шифрование и расшифровка файлов.
• Cryptocurrency — конвертирует криптовалюту на основе обменных курсов 10 топовых криптовалют в реальном времени.
• Currency — конвертер валют.
• Geo — предоставляет сведения о глобальной сети, локальной сети, маршрутизаторе, DNS, Mac и IP.
• Gist — управление gist.
• Lyrics — быстро извлекайте тексты песен из командной строки.
• Meme — создатель мемов из командной строки.
• Movies — поиск и отображение сведений о фильме.
• Newton — выполняет числовые вычисления вплоть до символьного математического анализа.
• Qrify — превращает заданную строку в qr-код.
• Short — сокращение URL-адресов
• Siteciphers — проверьте, какие шифры включены или отключены для данного https-сайта.
• Stocks — предоставляет определенную информацию об акциях.
• Taste — система рекомендаций, которая предоставляет три похожих элемента, подобных поставляемому элементу (это могут быть книги, музыка, исполнители, фильмы, игры и т. д.).
• Todo — менеджер задач из командной строки.
• Transfer — быстрая передача файлов из командной строки.
• Weather — отображает информацию о погоде в вашем месте.
• Youtube-Viewer — смотрите YouTube с помощью терминала.

📌 https://github.com/alexanderepstein/Bash-Snippets

#Bash
Linux / Линукс 🥸
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15
Bash Scripting on Linux

Обширный курс на YouTube по Bash Scripting (на английском). Учит всему, что нужно знать для написания эффективных сценариев bash в Linux. Начинается с вводных концепций, каждое видео основывается на предыдущем. Подойдет для начинающих.

#Bash
Linux / Линукс
🥸
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20😢21😁1