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

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

Регистрация в перечне РКН https://clck.ru/3EpL9L
Download Telegram
Вам не нужен Docker, чтобы ограничить процесс по CPU или памяти. В современных Linux (с cgroup v2) это делается через systemd-run или прямую запись в cgroupfs.

Запустить команду с ограничением в 50% одного ядра и 512МБ памяти:
systemd-run --scope -p CPUQuota=50% -p MemoryMax=512M ./heavy_script.sh

Или ограничить уже работающий процесс (зная его PID):
# Найти slice процесса
systemctl status <pid>
# Изменить лимиты динамически
systemctl set-property system.slice CPUQuota=20%


Позволяет изолировать «прожорливый» скрипт или процесс так, чтобы он не положил весь сервер, без настройки контейнеров.
Модификаторы переменных

Bash умеет манипулировать строками внутри переменных без вызова внешних утилит вроде sed, awk или cut. Это работает быстрее, так как не создает новых процессов.

Удалить расширение файла:

FILE="archive.tar.gz"
echo "${FILE%.*}" # Выведет: archive.tar (удаляет кратчайшее совпадение с конца)
echo "${FILE%%.*}" # Выведет: archive (удаляет longest совпадение с конца)


Заменить подстроку:
URL="http://example.com"
echo "${URL/http/https}" # Выведет: https://example.com


Значение по умолчанию:
echo "${VAR:-default_value}" # Если VAR пуст или не установлена, вернет "default_value"
Начиная с Bash 4.0, поддерживаются хеш-таблицы (словари). Это позволяет хранить данные в формате ключ-значение прямо в памяти скрипта.

Зачем: Избавляет от необходимости парсить CSV/JSON внешними утилитами для простых задач.

Пример:
declare -A users
users[ivan]="1001"
users[maria]="1002"

# Доступ по ключу
echo "UID Ивана: ${users[ivan]}"

# Перебор всех ключей
for key in "${!users[@]}"; do
echo "User: $key, UID: ${users[$key]}"
done
Довольно интересен с практической точки зрения каталог /sys/power.
В файле state находится состояние питание. Изменив должным образом содержимое этого файла, можно изменить состояние питания.

Например, вот как можно перевести систему в состояние "Suspend to RAM", когда питание процессора отключается, но питание на память подается, благодаря чему ее содержимое не уничтожается:
sudo echo -n mem > /sys/power/state

При желании можно отправить систему в состояние "Suspend to Disk", когда содержимое памяти будет записано на жесткий диск, после чего питание будет отключено:
sudo echo -n disk > /sys/power/state
Traffic Control. Команда tc 

Это набор инструментов для управления сетевым трафиком внутри Linux. 

То, что вы можете сделать с помощью tc, одновременно впечатляет и вызывает отвращение. Это не для слабонервных, и настройка различных манипуляций с трафиком отнюдь не проста, но научитесь понимать это, и вы сможете использовать всю мощь управления трафиком в Linux.


Распространенным примером использования tc является применение некоторой задержки пакетов к сетевому соединению. 

Чтобы создать задержку 100мс с помощью tc:
sudo tc qdisc add dev eth0 root netem delay 100ms

Теперь вы можете это проверить, пиганув например на 8.8.8.8

Чтобы убрать задержку, которую вы только что установили, выполните:
sudo tc qdisc del dev eth0 root
Создаем пользовательский отчет

Скрипт создает отчет о текущих пользователях в системе и сохраняет его в файл user_report.txt. (Отчет  содержит имя пользователя, его UID и время последнего входа).

#!/bin/bash
output_file="user_report.txt"
echo "User  Report" > "$output_file"
echo "===================" >> "$output_file"
cut -d: -f1,3,6 /etc/passwd | while IFS=: read user uid home; do
    last_login=$(last -n 1 "$user" | head -n 1 | awk '{print \$4, \$5, \$6, \$7}')
    echo "$user (UID: $uid) - Last login: $last_login" >> "$output_file"
done


cut -d: -f1,3,6 /etc/passwd — извлекает имя пользователя, UID и домашнюю директорию из файла /etc/passwd.
last -n 1 "$user" — получает информацию о последнем входе пользователя.
Команда pstree 

Похожа на ps, но вместо перечисления запущенных процессов, она показывает их в виде дерева.

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

Чтобы отключить объединение идентичных веток, примените:
pstree -c

Если в качестве аргумента указано имя пользователя, pstree отображает только процессы, принадлежащие этому пользователю:
pstree username

pstree также позволяет выделить процессы для лучшего визуального представления. Аргумент -h выделит текущий процесс и все его предки:
pstree -h
Как работает cron

Его основная задача выполнять нужные процессы в нужное время.

Существует конфигурационный файл /etc/crontab, из которых он берет информацию о том что и когда нужно выполнять. Часто, в современных дистрибутивах там прописан запуск утилиты run-parts, которая запускает нужные скрипты из следующих папок:
/etc/cron.minutely - каждую минуту
/etc/cron.hourly - каждый час
/etc/cron.daily - каждый день
/etc/cron.weekly - каждую неделю
/etc/cron.monthly - каждый месяц

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

Cкрипт будет удалять файлы из директории /tmp, которые не изменялись более 7 дней.

#!/bin/bash
find /tmp -type f -mtime +7 -exec rm {} \;


find /tmp — ищет файлы в директории /tmp.
-type f — ищет только файлы (не каталоги).
-mtime +7 — находит файлы, которые не изменялись более 7 дней.
-exec rm {} \; — удаляет найденные файлы.
Изменение прав доступа командой chmod с помощью чисел.

Чтобы изменить права доступа к файлу, можно воспользоваться командой chmod. В таком случае каждому праву доступа (чтение, запись и выполнение) присваивается номер — r=4, w=2 и x=1 соответственно, то есть для задания прав доступа используются наборы чисел.

Например, чтобы установить полные права доступа для себя как владельца, необходимо определить первое число — 7 (4 + 2 + 1), а затем дать группе и другим пользователям право только на чтение, указав второе и третье числа — 4 (4 + 0 + 0), чтобы в итоге получилось число 744. Любая комбинация прав доступа включает числа от 0 (нет прав доступа) до 7 (полные права доступа).

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

Установим права доступа rwxrwxrwx:
chmod 777 some_file
Установим права доступа rwxr-xr-x:
chmod 755 some_file
Установим права доступа rw-r--r--:
chmod 644 some_file
Установим права доступа ---------:
chmod 000 some_file
Для проверки скорости записи/чтения можно использовать утилиту dd

Измеряем скорость записи:
dd if=/dev/zero of=testfile bs=1M count=1000 conv=fdatasync
Команда создаст файл testfile размером 1000 МБ, заполненный нулями, и измерит скорость записи данных в этот файл.

Измеряем скорость чтения:
dd if=testfile of=/dev/null bs=1M
Команда прочитает содержимое файла testfile и измерит скорость чтения данных из него.
Смотрим общую информацию о жёстком диске

Для регулировки и просмотра параметров жёстких дисков с интерфейсом ATA существует утилита hdparm.

Утилита может установить такие параметры как объём кеш-памяти накопителя, спящий режим, управление питанием, управление акустикой и настройки DMA.

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

Для просмотра общей информации о жёстком диске используется команда: hdparm -i /dev/sd<буква>
👻 Заставь Linux зарабатывать деньги

Многие учат Linux, чтобы попасть в IT, стать сисадмином, DevOps-инженером, работать с серверами или просто лучше понимать, как всё устроено под капотом

Но Linux можно использовать не только как навык для работы

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

И сейчас для этого уже не обязательно быть senior-разработчиком или годами пилить стартап

ИИ сильно упростил путь:
ты задаёшь направление, описываешь задачу, собираешь архитектуру — и нейронка помогает быстрее написать код, собрать MVP и довести идею до рабочего продукта

Для этого мы открыли доступ к видео «Архитектор кода»

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

В видео ты увидишь реальные примеры:
— как ребята заработали 150 000 ₽ на своём приложении в App Store
— как сделали 300 000 ₽ на продаже простой CRM под конкретную нишу
— как можно собирать такие решения с помощью ИИ, серверов, кода и правильной постановки задачи

Главная мысль простая:
Linux, код и нейронки — это не только про работу «на кого-то»

Это база, с помощью которой можно собирать свои инструменты, тестировать идеи и постепенно создавать дополнительный источник дохода

ПОЛУЧИТЬ ВИДЕО

Доступ к видео открыт на 24 часа
Кликай по тексту выше и посмотри, как начать делать свои приложения и сервисы
Кроме bash в Linux существуют и другие оболочки: sh, csh, ksh, zsh, tcsh и пр. Все командные оболочки, установленные в системе, прописаны в файле /etc/shells.

Иногда в файле /etc/shells можно найти /bin/false и /bin/true, которые не являются оболочками. Это «заглушки», которые можно использовать, если вы хотите отключить ту или иную учетную запись пользователя.

Как известно, при входе пользователя в систему запускается установленная для него оболочка. Так вот, если для какого-либо пользователя задать оболочку /bin/false (или /bin/true), он не сможет войти в систему. Точнее, в систему-то он войдет, но и сразу выйдет из нее, поскольку сессия пользователя длится до завершения работы его оболочки, а обе заглушки ничего не делают, кроме того, что просто возвращают значение 0 (для false) или 1 (для true).