Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19
Inode могут закончиться на файловых системах, где общее количество inode фиксировано при создании файловой системы. Это ограничение обычно встречается в традиционных файловых системах типа ext2, ext3, ext4 и других файловых системах, использующих фиксированное количество inode, определенное при инициализации файловой системы.
Когда файловая система создается (например, с помощью команды
mkfs
), задается определенное количество inode. Это число определяется на основе размера раздела и коэффициента inode (обычно 1 inode на каждые несколько килобайт дискового пространства). После создания файловой системы количество inode не может быть изменено без переразметки файловой системы, что приведет к потере данных.Cоздания файловой системы с указанием количества inode
Здесь
-i 8192
указывает, что один inode создается на каждые 8192 байта пространства. mkfs.ext4 -i 8192 /dev/sdX1
Исчерпание inode может произойти на файловой системе с большим количеством небольших файлов. Например, если у вас есть много маленьких файлов (например, миллионы мелких логов или временных файлов), inode могут закончиться, даже если еще есть свободное место на диске.
Вы можете проверить количество используемых и доступных inode с помощью команды
df -i
:df -i
Вывод будет примерно таким:
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda1 1000000 500000 500000 50% /
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚Базу Знанийм
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🤔1
В Dockerfile можно указать как
ENTRYPOINT
, так и CMD
. Они оба определяют, какая команда будет выполнена при запуске контейнера, но имеют разные цели и взаимодействие между собой. Устанавливает основную команду и аргументы, которые не могут быть переопределены во время запуска контейнера с помощью
docker run
, за исключением явного использования опции --entrypoint
.Устанавливает команду и аргументы по умолчанию для запуска контейнера. Эти параметры могут быть переопределены при запуске контейнера, если передать другие аргументы в
docker run
.Когда в Dockerfile указаны оба,
ENTRYPOINT
и CMD
, они работают совместно. CMD
предоставляет аргументы по умолчанию для команды, указанной в ENTRYPOINT
. Таким образом, CMD
будет использоваться в качестве аргументов для ENTRYPOINT
, если при запуске контейнера не указаны другие аргументы.FROM ubuntu:latest
ENTRYPOINT ["echo"]
CMD ["Hello, World!"]
ENTRYPOINT
используется для фиксированной команды, которую контейнер должен всегда выполнять, а CMD
для указания аргументов по умолчанию.CMD
используется для задания аргументов по умолчанию для команды, указанной в ENTRYPOINT
.ENTRYPOINT
, то команда и аргументы из ENTRYPOINT
будут выполнены при запуске контейнера.CMD
, то команда и аргументы из CMD
будут выполнены при запуске контейнера.ENTRYPOINT
будет выполнена с аргументами из CMD
по умолчанию. Если при запуске контейнера указать дополнительные аргументы, они заменят аргументы из CMD
.FROM python:3.9
ENTRYPOINT ["python", "-m"]
CMD ["http.server"]
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤5
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🤔2
Unix и Linux — это две операционные системы, которые часто сравнивают из-за их схожести и общего происхождения. Однако у них есть значительные различия, касающиеся их истории, лицензирования, архитектуры и использования.
Unix: Большинство версий Unix являются коммерческими и проприетарными. Для их использования требуется лицензия. Некоторые версии, такие как BSD (Berkeley Software Distribution), являются открытыми и лицензируются по лицензии BSD.
Linux: Распространяется по лицензии GNU General Public License (GPL), что означает, что он бесплатен и открыт для использования, модификации и распространения. Исходный код доступен всем, что позволяет пользователям вносить изменения и улучшения.
Unix: Часто имеют монолитное ядро, где основные системные службы интегрированы в одно ядро. Обеспечивает многозадачность, многопользовательский режим и защищенную память. Включает стандартные утилиты и шеллы, такие как Bourne Shell (sh).
Linux: Также имеет монолитное ядро, но с модульной архитектурой, что позволяет загружать и выгружать модули в ядро без перезагрузки системы. Включает широкий набор утилит и инструментов GNU, таких как Bash (Bourne Again Shell).
Unix: Следуют стандартам POSIX (Portable Operating System Interface), что обеспечивает совместимость между различными версиями Unix. Существует несколько проприетарных версий Unix.
Linux: Также совместим с POSIX, что обеспечивает высокую степень совместимости с Unix-системами. Существует множество дистрибутивов Linux (Debian, Ubuntu, CentOS, Fedora и т.д.), каждый из которых имеет свои особенности и наборы пакетов, но все они основаны на общем ядре Linux.
Unix: Используется в крупных корпоративных и научных средах. Часто применяется в критически важных системах благодаря своей надежности и стабильности.
Linux: Широко используется в серверах, суперкомпьютерах, встраиваемых системах, настольных ПК и мобильных устройствах (например, Android). Популярен среди разработчиков и энтузиастов благодаря своей открытости, гибкости и сообществу.
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17❤1
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🔥6
Коды ответа (HTTP status codes) от веб-сервера представляют собой числовые коды, которые отправляются клиенту (обычно веб-браузеру) в ответ на его запрос. Эти коды помогают клиенту понять, что произошло с его запросом: был ли он успешен, произошла ли ошибка, требуется ли дополнительное действие и т.д.
Запрос принят, продолжается обработка.
100 Continue: Сервер получил начальную часть запроса, и клиент должен продолжать.
101 Switching Protocols: Сервер принимает запрос на изменение протокола.
Запрос успешно обработан.
200 OK: Запрос успешно обработан, и сервер возвращает запрошенные данные.
201 Created: Запрос успешно выполнен, и в результате создан новый ресурс.
202 Accepted: Запрос принят для обработки, но обработка еще не завершена.
204 No Content: Запрос успешно выполнен, но сервер не возвращает никакого содержимого.
Для завершения обработки запроса требуется дальнейшее действие со стороны клиента.
301 Moved Permanently: Запрашиваемый ресурс был перемещен на новый постоянный URL.
302 Found: Запрашиваемый ресурс временно доступен по другому URL.
304 Not Modified: Запрашиваемый ресурс не изменился со времени последнего доступа (кэширование).
307 Temporary Redirect: Запрашиваемый ресурс временно доступен по другому URL. Клиент должен использовать исходный метод для нового запроса.
Ошибка в запросе клиента.
400 Bad Request: Сервер не может обработать запрос из-за неверного синтаксиса.
401 Unauthorized: Запрос требует аутентификации.
403 Forbidden: Сервер понял запрос, но отказывается его выполнять.
404 Not Found: Запрашиваемый ресурс не найден на сервере.
405 Method Not Allowed: Метод, указанный в запросе, не разрешен для запрашиваемого ресурса.
409 Conflict: Запрос не может быть выполнен из-за конфликта с текущим состоянием ресурса.
Ошибка на стороне сервера при попытке обработки запроса.
500 Internal Server Error: Общая ошибка сервера. Сервер не может выполнить запрос.
501 Not Implemented: Сервер не поддерживает функциональность, необходимую для выполнения запроса.
502 Bad Gateway: Сервер, действуя как шлюз или прокси, получил неверный ответ от вышестоящего сервера.
503 Service Unavailable: Сервер временно недоступен, обычно из-за перегрузки или технического обслуживания.
504 Gateway Timeout: Сервер, действуя как шлюз или прокси, не дождался ответа от вышестоящего сервера.
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤2🔥1
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥1😁1
Конфликты зависимостей или поврежденные пакеты.
sudo apt-get install -f
sudo apt-get clean
sudo apt-get update
Нет доступа к интернету или неправильная настройка сети.
ip a
sudo systemctl restart NetworkManager
cat /etc/resolv.conf
Недостаточно прав для выполнения команды или доступа к файлу.
sudo
для выполнения команд с привилегиями суперпользователя. sudo <command>
sudo chmod 755 /path/to/directory
sudo chown user:user /path/to/file
Система не загружается или застревает на экране загрузки.
sudo grub-install /dev/sda
sudo update-grub
sudo fsck /dev/sda1
Недостаточно места на диске для выполнения операций.
df -h
sudo apt-get clean
sudo rm -rf /var/cache/apt/archives/*
Нет доступа к файловой системе NFS.
sudo systemctl status nfs-server
sudo systemctl status nfs-client
sudo systemctl restart nfs-server
sudo systemctl restart nfs-client
Проблемы с установкой пакетов Python из-за конфликтов версий.
Использование виртуальных окружений для изоляции зависимостей.
python3 -m venv myenv
source myenv/bin/activate
pip install <package>
Блокировка доступа к файлам или портам из-за правил SELinux.
sudo ausearch -m avc -ts recent
sudo setenforce 0
Модуль ядра не загружается или вызывает ошибку.
lsmod
sudo modprobe <module>
Неправильные правила фаервола блокируют трафик.
sudo iptables -L
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18🤯1
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥4
Эти утилиты показывают информацию о системных процессах в реальном времени, включая использование CPU, памяти и дискового ввода-вывода.
top
htop
Показывает список активных процессов.
ps aux
Показывают сетевые соединения, таблицы маршрутизации, интерфейсы и другую сетевую информацию
netstat -tuln
ss -tuln
Показывает открытые файлы и порты.
lsof
lsof -i :80
Показывают информацию о дисковом пространстве.
df
показывает общий объем использования диска, а du
- использование дискового пространства отдельными файлами и директориями. df -h
du -sh /var/log/*
Используются для диагностики сетевых проблем.
ping
проверяет доступность хоста, а traceroute
показывает путь пакетов к хосту. ping google.com
traceroute google.com
Используются для отправки HTTP-запросов и загрузки файлов с веб-серверов. Полезны для проверки доступности веб-сервисов.
curl -I https://www.example.com
wget https://www.example.com/file.zip
Используется для просмотра системных журналов, управляемых systemd.
journalctl -xe
journalctl -u nginx.service
Показывает сообщения ядра. Полезно для диагностики аппаратных и загрузочных проблем.
dmesg | grep error
Трассирует системные вызовы и сигналы. Полезно для диагностики проблем с приложениями.
strace -p <PID>
Анализатор сетевых пакетов. Полезно для диагностики сетевых проблем.
tcpdump -i eth0
vmstat
показывает статистику виртуальной памяти, процессов и CPU. iostat
показывает статистику ввода-вывода на устройстве. vmstat 1
iostat 1
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18🤔1
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🤔3🔥2
df
disk freе показывает объем свободного и используемого пространства на файловой системе.
df -h
-h
: Показывает информацию в человекочитаемом формате (например, 1K, 234M, 2G). Filesystem Size Used Avail Use% Mounted on
/dev/sda1 50G 20G 30G 40% /
tmpfs 1.9G 1.2M 1.9G 1% /dev/shm
du
disk usage показывает использование дискового пространства файлами и директориями. Это полезно для поиска крупных файлов и директорий.
du -sh /var/log/*
-s
: Показывает общий размер каждой аргументированной директории.-h
: Человекочитаемый формат. 12M /var/log/apache2
4.0K /var/log/boot.log
56M /var/log/kern.log
lsblk
Показывает информацию о блочных устройствах, включая диски и их разделы.
lsblk
Вывод команды
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 50G 0 disk
├─sda1 8:1 0 50G 0 part /
sdb 8:16 0 100G 0 disk
└─sdb1 8:17 0 100G 0 part /mnt/data
ncdu
NCurses Disk Usage — интерактивная командная утилита для анализа дискового пространства.
ncdu /
Вывод команды
--- / ---
. 16.0 GiB [##########] /usr
. 8.0 GiB [##### ] /var
. 4.0 GiB [## ] /home
btrfs filesystem df
Используется для файловых систем Btrfs и показывает использование дискового пространства.
sudo btrfs filesystem df /mnt
Вывод команды
Data, single: total=10.00GiB, used=8.54GiB
System, DUP: total=32.00MiB, used=16.00KiB
Metadata, DUP: total=1.00GiB, used=532.25MiB
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17🔥5❤1
Это может быть связано с тем, что файлы все еще открыты каким-либо процессом. В таких случаях система не освобождает пространство до тех пор, пока процесс не завершится. Вот шаги для диагностики и решения этой проблемы:
Используйте команду
df
для проверки использования дискового пространства.df -h
Проверьте, сколько места занимают файлы в проблемной директории.
du -sh /path/to/directory
Найдите процессы, которые держат открытыми удаленные файлы.
lsof | grep deleted
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
myprocess 1234 user 10r REG 8,1 12345678 567890 /path/to/deleted/file (deleted)
Найдите процесс, держащий файл открытым, по PID (идентификатор процесса) из вывода
lsof
. Завершите процесс, чтобы освободить место на диске. kill -9 <PID>
kill -9 1234
После завершения процесса, повторно проверьте использование дискового пространства.
df -h
Убедитесь, что место в директории освободилось.
du -sh /path/to/directory
Поиск удаленных файлов
lsof | grep deleted
Завершение процесса
kill -9 <PID>
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19❤2🤯1
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20🔥6
Это команда в Linux, которая используется для изменения размера файла. С ее помощью можно как увеличивать, так и уменьшать размер файла. При уменьшении размера файла данные, находящиеся за новой границей, будут потеряны, а при увеличении — файл будет дополнен нулями.
Если указанный файл не существует, команда
truncate
создаст его с нулевым размером или с заданным размером. При уменьшении размера файла данные, находящиеся за новой границей, будут потеряны.
При увеличении размера файла он будет дополнен нулями до указанного размера.
Синтаксис команды
truncate
truncate [OPTIONS] FILE...
Создание файла размером 1 МБ
truncate -s 1M myfile
Создание файла размером 512 байт
truncate -s 512 myfile
Увеличение файла до 2 ГБ
truncate -s 2G myfile
Уменьшение файла до 100 КБ:
truncate -s 100K myfile
Установка размера файла
myfile
на размер файла referencefile
truncate -r referencefile myfile
Создаст пустой файл с именем
emptyfile
.truncate -s 0 emptyfile
Увеличит размер файла
logfile
на 500 МБ.truncate -s +500M logfile
Уменьшит размер файла
largefile
на 100 КБ.truncate -s -100K largefile
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥3
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🔥7
Деплой в OpenShift выполняется через контейнерное изображение, которое загружается в репозиторий. Затем приложение разворачивается с помощью команд
oc
или через веб-интерфейс, после чего OpenShift управляет контейнерами, обеспечивая масштабирование и обновления без простоя.Установите OpenShift CLI (oc), чтобы взаимодействовать с кластером OpenShift.
# Скачать и установить OpenShift CLI
wget https://mirror.openshift.com/pub/openshift-v4/clients/ocp/latest/openshift-client-linux.tar.gz
tar -xvf openshift-client-linux.tar.gz
sudo mv oc /usr/local/bin/
Создайте новый проект в OpenShift, который будет использоваться для развертывания вашего приложения.
# Войти в OpenShift
oc login https://<openshift-cluster-url> --token=<your-token>
# Создать проект
oc new-project my-project
Создайте Dockerfile для вашего приложения или используйте S2I для автоматической сборки образов.
FROM node:14
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 8080
CMD ["node", "server.js"]
Создайте BuildConfig для сборки вашего образа Docker.
# Создать BuildConfig из Dockerfile
oc new-build --strategy=docker --binary --name=my-app
# Запустить билд
oc start-build my-app --from-dir=. --follow
Если вы используете S2I
# Создать BuildConfig с использованием S2I
oc new-app nodejs:14~https://github.com/username/my-app.git --name=my-app
Создайте DeploymentConfig для развертывания вашего приложения.
# Создать DeploymentConfig из ранее созданного BuildConfig
oc new-app my-app
# Или, если используется S2I
oc new-app nodejs:14~https://github.com/username/my-app.git --name=my-app
Создайте Route для доступа к вашему приложению извне.
# Создать маршрут
oc expose svc/my-app
# Проверить созданный маршрут
oc get routes
Пример деплоя с полным процессом
# Вход в OpenShift
oc login https://<openshift-cluster-url> --token=<your-token>
# Создание проекта
oc new-project my-project
# Создание билда
oc new-build --strategy=docker --binary --name=my-app
oc start-build my-app --from-dir=. --follow
# Развертывание приложения
oc new-app my-app
# Настройка маршрута
oc expose svc/my-app
# Проверка статуса маршрута
oc get routes
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6