Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
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
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18🔥3
Это команда и настройка в Unix-подобных операционных системах, которая определяет права доступа по умолчанию для новых файлов и каталогов, создаваемых пользователем.
umask
устанавливает маску, которая определяет, какие разрешения будут отключены для вновь создаваемых файлов и каталогов.Для файлов: 666 (чтение и запись для всех). Для каталогов: 777 (чтение, запись и выполнение для всех).
Значение
umask
указывается в восьмеричной системе счисления и вычитается из базовых прав доступа для определения окончательных прав доступа.Когда создается новый файл или каталог, операционная система сначала применяет базовые права доступа, а затем вычитает значение
umask
из этих прав.Базовые права доступа: 666
Значение
umask
: 022Окончательные права доступа: 666 - 022 = 644 (rw-r--r--)
Базовые права доступа: 777
Значение
umask
: 022Окончательные права доступа: 777 - 022 = 755 (rwxr-xr-x)
umask
umask 027
Проверка текущего значения
$ umask
0022
Установка нового значения. После выполнения этой команды новые файлы будут создаваться с правами
640
(rw-r-----), а новые каталоги с правами 750
(rwxr-x---).$ umask 027
Новый файл
myfile
будет создан с правами 644
.$ umask 0022
$ touch myfile
$ ls -l myfile
-rw-r--r-- 1 user user 0 Jul 26 12:00 myfile
Создание каталога с umask 0027. Новый каталог
mydir
будет создан с правами 750
.$ umask 0027
$ mkdir mydir
$ ls -ld mydir
drwxr-x--- 2 user user 4096 Jul 26 12:00 mydir
Чтобы задать значение umask для всех команд в скрипте, можно указать его в начале скрипта.
#!/bin/bash
umask 027
# Все команды ниже будут создавать файлы и каталоги с правами, определенными umask 027
touch file1
mkdir dir1
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥2❤1
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14👍8
Права доступа по умолчанию зависят от базовых прав доступа и значения
umask
. Базовые права доступа — это значения, которые система использует для определения разрешений перед применением маски umask
.Это означает, что по умолчанию все пользователи могут читать и записывать в файл.
Это означает, что по умолчанию все пользователи могут читать, записывать и выполнять (заходить) в каталог.
Это маска, которая определяет, какие права будут отключены при создании нового файла или каталога. Значение
umask
указывается в восьмеричной системе счисления. Базовые права доступа: 666
Значение
umask
: 022Окончательные права доступа: 666 - 022 = 644 (rw-r--r--)
Базовые права доступа: 777
Значение
umask
: 022Окончательные права доступа: 777 - 022 = 755 (rwxr-xr-x)
umask 0022
touch myfile
ls -l myfile
Вывод
Права доступа: 644 (rw-r--r--)
-rw-r--r-- 1 user user 0 Jul 26 12:00 myfile
umask 0027
mkdir mydir
ls -ld mydir
Вывод
Права доступа: 750 (rwxr-x---)
drwxr-x--- 2 user user 4096 Jul 26 12:00 mydir
Вы можете установить umask в скрипте для задания прав доступа по умолчанию для всех создаваемых файлов и каталогов.
#!/bin/bash
umask 027
touch file1
mkdir dir1
Для файлов: По умолчанию права доступа 666 минус umask.
Для каталогов: По умолчанию права доступа 777 минус umask.
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥3😁2
Хранится в специальной структуре данных, называемой директорией (или каталогом), а не в самом файле. Файловая система Linux использует иноды для хранения метаданных о файле, таких как размер, права доступа и местоположение данных на диске, но не имя файла.
Инод хранит метаданные о файле: права доступа, владельца, размер, временные метки и указатели на блоки данных. Иноды не содержат имя файла.
Это специальный тип файла, который содержит записи о файлах и поддиректориях, находящихся в ней. Каждая запись в директории связывает имя файла с номером инода.
Директория содержит список записей, каждая из которых состоит из имени файла и номера инода. Эта структура позволяет файловой системе быстро находить инод по имени файла.
touch myfile.txt
ls -i myfile.txt
Пример вывода
Здесь
123456
— это номер инода файла myfile.txt
. 123456 myfile.txt
stat myfile.txt
Пример вывода
File: myfile.txt
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 802h/2050d Inode: 123456 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ user) Gid: ( 1000/ group)
Access: 2024-07-26 12:00:00.000000000 +0000
Modify: 2024-07-26 12:00:00.000000000 +0000
Change: 2024-07-26 12:00:00.000000000 +0000
Файловая система выделяет новый инод для хранения метаданных файла.
Файловая система добавляет запись в директорию, содержащую имя файла и номер инода.
Данные файла сохраняются в блоках данных, и указатели на эти блоки хранятся в иноде.
Команда
touch myfile.txt
создает новый инод и добавляет запись в текущую директорию. Директория связывает имя myfile.txt
с новым номером инода.Команда
rm myfile.txt
удаляет запись в директории, но не обязательно сразу удаляет данные файла. Если инод больше не связан с другими именами файлов (жесткими ссылками), он и связанные с ним блоки данных освобождаются.Команда
mv myfile.txt newfile.txt
изменяет имя файла, изменяя соответствующую запись в директории, но не трогает сам инод или данные файла.Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13
В Ansible роли — это шаблоны, которые организуют задачи, переменные и файлы в структуру для многократного использования и удобства. Плейбуки же являются последовательностью задач, которая выполняется на хостах, и могут включать в себя одну или несколько ролей. Роли помогают структурировать плейбуки и разделять логику на многократно используемые модули. Плейбуки, в свою очередь, содержат инструкции по выполнению ролей или отдельных задач.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤7🔥1
В Unix-подобных операционных системах права доступа для файлов и директорий контролируются тремя основными типами разрешений: чтение (read), запись (write) и выполнение (execute). Права на выполнение для директорий играют особую роль и имеют специфические функции, которые отличаются от прав на выполнение для файлов.
Для файла: разрешает просмотр содержимого файла.
Для директории: разрешает просмотр списка файлов и поддиректорий в этой директории (команда
ls
).Для файла: разрешает изменение содержимого файла.
Для директории: разрешает создание, удаление и переименование файлов и поддиректорий в этой директории.
Для файла: разрешает выполнение файла как программы или скрипта.
Для директории: разрешает доступ к файлам и поддиректориям внутри этой директории (переход в директорию с помощью
cd
и доступ к ее содержимому).Право на выполнение позволяет пользователю переходить в директорию с помощью команды
cd
. Без этого права пользователь не сможет получить доступ к содержимому директории, даже если у него есть права на чтение.Право на выполнение позволяет пользователю получить доступ к файлам и поддиректориям внутри директории. Например, если у пользователя есть права на выполнение для директории, он может открывать файлы в этой директории, использовать команды для изменения файлов (например,
cat
, less
, vi
), и переходить в поддиректории.Проверка прав доступа
ls -ld /path/to/directory
Пример вывода
Здесь
rwxr-xr-x
означает, что владелец имеет права на чтение, запись и выполнение, а группа и остальные пользователи имеют права на чтение и выполнение.drwxr-xr-x 2 user user 4096 Jul 26 12:00 /path/to/directory
chmod +x /path/to/directory
chmod -x /path/to/directory
mkdir /tmp/testdir
touch /tmp/testdir/testfile
chmod 600 /tmp/testdir/testfile
chmod 400 /tmp/testdir
ls /tmp/testdir
Вывод:
ls: cannot open directory '/tmp/testdir': Permission denied
Попытка перехода в директорию
Вывод:
bash: cd: /tmp/testdir: Permission denied
cd /tmp/testdir
chmod +x /tmp/testdir
ls /tmp/testdir
Вывод:
testfile
Переход в директорию
cd /tmp/testdir
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤2
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🔥4👾1
Обычно это делается с помощью команды
kill
, но есть и другие команды, такие как pkill
и killall
, которые могут быть полезны в разных ситуациях.Используется для отправки сигналов процессам. Наиболее часто используемый сигнал — это
SIGTERM
(15), который вежливо просит процесс завершиться. Если процесс не реагирует на SIGTERM
, можно использовать сигнал SIGKILL
(9), который принудительно завершает процесс. <PID>: идентификатор процесса, который вы хотите завершить.kill [опции] <PID>
Это вежливая просьба процессу завершиться.
kill <PID>
Это принудительное завершение процесса.
kill -9 <PID>
Используется для отправки сигналов процессам по имени. Она удобна, если вы хотите завершить все процессы с определенным именем.
pkill [опции] <имя процесса>
Завершение процесса по имени с
SIGTERM
pkill <имя процесса>
Принудительное завершение процесса по имени с
SIGKILL
pkill -9 <имя процесса>
Команда
killall
завершает все процессы с заданным именем. Она похожа на pkill
, но позволяет использовать более сложные шаблоны и опции.killall [опции] <имя процесса>
Завершение всех процессов с именем
processname
с SIGTERM
killall processname
Принудительное завершение всех процессов с именем
processname
с SIGKILL
killall -9 processname
Используется для завершения графических приложений. При вызове команда позволяет выбрать окно, которое нужно закрыть.
xkill
Используются для интерактивного мониторинга процессов. Вы можете завершить процесс, выбрав его в списке и нажав
k
в htop
или top
. htop
top
Поиск PID процесса
ps aux | grep <имя процесса>
Завершение процесса
kill <PID>
Принудительное завершение процесса
kill -9 <PID>
Завершение всех процессов с именем
nginx
pkill nginx
killall nginx
Принудительное завершение всех процессов с именем
nginx
pkill -9 nginx
killall -9 nginx
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥4
Это плагины, которые позволяют Terraform взаимодействовать с различными облачными провайдерами, сервисами и другими API. Они выступают в роли интерфейсов между Terraform и целевыми инфраструктурами, обеспечивая возможность создания, управления и изменения ресурсов в этих инфраструктурах.
Провайдеры определяют типы ресурсов, которые можно создавать и управлять с их помощью. Например, для провайдера AWS это могут быть ресурсы типа
aws_instance
, aws_s3_bucket
и т.д.Провайдеры содержат логику для создания, обновления, чтения и удаления ресурсов в целевой системе. Они используют API целевых систем для выполнения этих операций.
Провайдеры обрабатывают аутентификацию и настройки соединения, необходимые для взаимодействия с API целевых систем.
Управление ресурсами в AWS, такими как EC2, S3, RDS и другие.
Управление ресурсами в Microsoft Azure, такими как виртуальные машины, базы данных и сети.
Управление ресурсами в GCP, такими как Compute Engine, Cloud Storage и другие.
Управление кластерами Kubernetes и ресурсами внутри них.
Управление репозиториями, организациями и командами на GitHub.
Пример использования провайдера в Terraform
# Определение провайдера
provider "aws" {
region = "us-west-2"
access_key = "your_access_key"
secret_key = "your_secret_key"
}
# Определение ресурса
resource "aws_instance" "example" {
ami = "ami-0c55b159cbfafe1f0"
instance_type = "t2.micro"
tags = {
Name = "example-instance"
}
}
Провайдеры определяются в конфигурационных файлах Terraform (с расширением
.tf
). В примере выше это блок provider "aws"
.После определения провайдеров в конфигурации необходимо инициализировать рабочее окружение с помощью команды
terraform init
. Эта команда скачивает и устанавливает все необходимые плагины провайдеров.terraform init
Пример команды инициализации
Initializing provider plugins...
- Finding latest version of hashicorp/aws...
- Installing hashicorp/aws v3.37.0...
- Installed hashicorp/aws v3.37.0 (signed by HashiCorp)
Terraform has been successfully initialized!
Провайдеры обеспечивают единый интерфейс для управления различными инфраструктурами, что упрощает процессы DevOps и автоматизацию.
Существует множество провайдеров, что позволяет работать с различными облачными платформами, сервисами и инструментами.
Провайдеры позволяют описывать инфраструктуру как код (Infrastructure as Code, IaC), что упрощает автоматизацию и управление инфраструктурой.
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM