Перейти до основного вмісту

Публікації

Показано дописи з міткою "Ubuntu"

Cron в Linux

cron — це механізм Linux для автоматичного виконання команд і скриптів за розкладом. Він використовується для регулярних завдань: резервного копіювання, очищення тимчасових файлів, запуску скриптів, перевірки сервісів тощо. Фоновий процес, який виконує заплановані завдання, називається cron daemon . У сучасних Linux-системах його часто реалізовано через cronie або сумісний cron-сервіс. Crontab Розклад завдань зберігається у crontab — таблиці cron-завдань. Переглянути завдання поточного користувача: crontab -l Відредагувати їх: crontab -e Для редагування системного crontab потрібні права адміністратора: sudo crontab -e Важливо: crontab -e і sudo crontab -e працюють з різними таблицями. Перша належить поточному користувачу, друга — користувачу root . Формат cron-запису Звичайний запис crontab має п'ять полів часу та команду: * * * * * команда Поля означають: * хвилина (0–59) * година (0–23) * день місяця (1–31) * місяць (1–12) * день тижня (0–7)...

Монтування в Linux

У Linux файлова система не прив'язується до окремої літери диска, як це відбувається у Windows. Замість цього вона підключається до певного каталогу в єдиному дереві файлової системи. Така операція називається монтуванням (mounting) . Наприклад, фізичний диск або його розділ може містити файлову систему ext4. Щоб отримати доступ до її файлів, її можна змонтувати в каталог /mnt/data . Після цього вміст файлової системи буде доступний за шляхом /mnt/data . Важливо розрізняти пристрій , файлову систему та точку монтування . Наприклад: /dev/sdb1 → пристрій (розділ) /dev/sdb1 → файлова система ext4 /mnt/data → точка монтування Після монтування: /dev/sdb1 /mnt/data /mnt/data/file.txt /mnt/data/photos/ ... Точки монтування Точка монтування (mount point) — це звичайний каталог, у який підключається файлова система. Наприклад, створимо каталог: sudo mkdir /mnt/data Після цього можна змонтувати розділ: sudo mount /dev/sdb1 /mnt/data Тепер вміст /dev/sdb1 досту...

Права доступу до файлів і папок у Linux

Однією з ключових особливостей Linux є гнучка система керування правами доступу. Вона дозволяє визначити, хто може переглядати, змінювати або запускати файли й каталоги. Завдяки цьому можна підвищити безпеку системи та уникнути випадкового пошкодження важливих даних. Основні типи прав Для кожного файлу або каталогу існують три базові права: r (read) — читання файлу або перегляд вмісту каталогу. w (write) — зміна файлу або створення й видалення елементів у каталозі. x (execute) — запуск виконуваного файлу або можливість перейти до каталогу. Ці права задаються окремо для трьох категорій користувачів: u (user) — власник файлу. g (group) — група користувачів. o (others) — усі інші користувачі. Перегляд прав доступу Переглянути права можна за допомогою команди ls -l : ls -l Приклад результату: -rwxr-xr-- 1 user developers 2048 Jul 31 12:00 script.sh Перший символ показує тип об'єкта ( - — файл, d — каталог), а наступні д...

Робота Spring-застосунку через Tor

Якщо потрібно виконувати HTTP-запити через мережу Tor із Java-застосунку, найкраще використовувати окремий системний сервіс Tor, а не Tor Browser. Системний Tor працює у фоновому режимі, підтримує SOCKS-проксі, ControlPort та дозволяє програмно змінювати IP-адресу за допомогою команди SIGNAL NEWNYM . У цій інструкції розглянемо встановлення Tor на Ubuntu, налаштування SOCKS-проксі та інтеграцію зі Spring Boot через RestTemplate . Встановлення Tor Оновіть список пакетів та встановіть Tor: sudo apt update sudo apt install tor Переконайтеся, що сервіс працює: systemctl status tor Якщо сервіс не запущений: sudo systemctl start tor sudo systemctl enable tor Налаштування Tor Основний файл конфігурації знаходиться за адресою: /etc/tor/torrc Додайте до нього наступні параметри: # SOCKS-проксі SocksPort 9052 # Порт керування ControlPort 9051 # Використовуємо пароль CookieAuthentication 0 HashedControlPassword 16:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX У...

Налаштування віртуального середовища в Python

venv (Virtual Environment) — це віртуальне середовище Python, яке дозволяє створити ізольований набір бібліотек для окремого проєкту. Це означає, що різні проєкти можуть використовувати різні версії пакетів і навіть різні налаштування Python, не конфліктуючи між собою. Наприклад, один проєкт може використовувати pandas==2.2 , а інший — pandas==1.5 . Завдяки venv ці версії працюватимуть незалежно. Переваги використання venv Ізоляція залежностей — пакети встановлюються лише для конкретного проєкту. Відсутність конфліктів версій — різні проєкти можуть використовувати різні версії бібліотек. Безпечність для системи — не потрібно встановлювати пакети глобально в Ubuntu. Зручність перенесення — залежності можна зберегти у файл requirements.txt . Краща інтеграція з VS Code та Jupyter Notebook . Встановлення підтримки venv в Ubuntu У деяких версіях Ubuntu підтримка venv встановлена не за замовчуванням. Для її встановлення виконайте: sudo apt upda...

Samba

Samba — це програмне забезпечення для Linux/Unix-систем, яке реалізує протокол SMB (Server Message Block). Саме цей протокол використовується в Windows для спільного доступу до файлів, папок і принтерів у локальній мережі. Завдяки Samba комп’ютер з Ubuntu може: надавати доступ до папок для Windows; підключатися до спільних папок Windows; працювати як файловий сервер у локальній мережі; обмежувати доступ за логіном і паролем; керувати правами читання та запису. Основні можливості Samba обмін файлами між Linux, Windows і macOS; створення захищених мережевих папок; доступ без авторизації (guest access); авторизація за логіном і паролем; налаштування прав доступу для окремих користувачів; робота через локальну мережу без додаткового програмного забезпечення. Встановлення Samba в Ubuntu Для встановлення Samba достатньо виконати команду: sudo apt update sudo apt install samba Після встановлення можна перевірити верс...

Bash-скрипти

Bash-скрипт — це текстовий файл, що містить послідовність команд для командної оболонки Bash , яка є стандартною для більшості Linux-дистрибутивів та macOS. Створення Bash-скрипта nano script.sh # створити файл у редакторі nano vim script.sh # або через vim touch script.sh # створити порожній файл Shebang (обов’язково на початку) Перший рядок скрипту, який вказує системі, який інтерпретатор використовувати для виконання файлу. #!/bin/bash # або більш універсально #!/usr/bin/env bash Надання прав на виконання chmod +x script.sh Запуск скрипта ./script.sh # запуск як виконуваного файлу bash script.sh # запуск через bash sh script.sh # запуск через sh (обережно: не всі фічі Bash підтримуються) Передача аргументів у скрипт ./script.sh arg1 arg2 # всередині скрипта: echo $1 # перший аргумент echo $2 # другий аргумент echo $@ # всі аргументи echo $# # кількість аргументів Обробка аргументів if [ $# -eq 0 ]; then ...

Базові команди Bash

Bash (Bourne Again SHell) — це оболонка командного рядка + мова сценаріїв, яка використовується для: виконання команд автоматизації задач написання скриптів Bash — це повноцінна мова програмування, але з важливим уточненням — це скриптова мова для автоматизації в Unix/Linux-середовищі, а не універсальна мова на рівні Java чи Python. Bash має всі базові можливості програмування: змінні умовні конструкції (if, case) цикли (for, while) функції обробку вводу/виводу роботу з файлами обробку помилок Основні команди pwd # показати поточну директорію ls # список файлів ls -la # детальний список (з прихованими) cd /path # перейти в директорію cd .. # на рівень вище clear # очистити термінал Робота з файлами та папками touch file.txt # створити файл mkdir dir # створити папку mkdir -p a/b/c # створити вкладені папки rm file.txt # видалити файл rm -r dir ...

GraalVM Native Image для прискорення Java-застосунків

GraalVM Native Image GraalVM Native Image — це технологія попередньої компіляції (ahead-of-time — AOT) Java-застосунків у самостійні нативні виконувані файли (бінарники). На відміну від звичайної Java, де код виконується у Java Virtual Machine (JVM), Native Image створює файл, який працює безпосередньо в операційній системі, значно прискорюючи запуск (за мілісекунди) та зменшуючи використання пам'яті. Ключові особливості та переваги: Миттєвий запуск . Програми запускаються практично миттєво, що критично важливо для Serverless (наприклад, AWS Lambda) та мікросервісів. Низьке споживання пам'яті . Native Image споживає значно менше оперативної пам'яті, оскільки не потребує завантаження віртуальної машини JVM, метаданих класів та JIT-компілятора. Самодостатність . Створений виконуваний файл містить лише необхідний код програми та бібліотек, що робить його меншим за розміром, ніж JAR-файл разом із JRE. Безпека та ізоляція . Нативні образи забезпечують закриту систему, в...

Запуск Java-проєкту з вказаною JDK через maven

Інколи виникає потреба запустити java-проєкт з використанням іншої JDK/JRE, ніж встановлена по замовчуванню і налаштована в Maven. Якщо це разовий запуск (або інша дія), то змінювати налаштування може зайняти більше часу, ніж хотілося б. В такому випадку можна використати, наприклад, наступні команди (для JDK 17). Всі приклади - для операційної системи Ubuntu. Замість mvn clean install JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 PATH=/usr/lib/jvm/java-17-openjdk-amd64/bin:$PATH mvn clean install Запуск Spring Boot-проєкту: JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 PATH=/usr/lib/jvm/java-17-openjdk-amd64/bin:$PATH mvn spring-boot:run -Dspring-boot.run.profiles=local Як подивитися, які версії JDK встановлені, описано тут . Варто зауважити, що важливою є не лише дефолтна версія JDK, а й налаштування Maven. Подивитися поточне значення JAVA_HOME можна командою: echo $JAVA_HOME Змінити налаштування: nano ~/.bashrc Потрібно додати/змінити рядки на зразок: M2_HOME="/...

Робота з кількома аккаунтами GitHub

Інколи потрібно з однієї машини працювати з різними GitHub-аккаунтами, використовуючи різні облікові дані та ключі. Можна використати локальну конфігурацію на рівні репозиторію. Заходимо в репозиторій і вводимо: git config user.name "Company Dev" git config user.email "your.corp.email@company.com" або відповідно git config user.name "Your Name" git config user.email "your.personal.email@gmail.com" Перевірити налаштування: git config --show-origin user.name git config --show-origin user.email Використання двох SSH-ключів (для GitHub/GitLab/Bitbucket). Всі наступні команди для Linux (Ubuntu). ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_personal ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_corporate Отримати публічний ключ: cat ~/.ssh/id_ed25519_personal.pub Цей код потрібно додати у відповідний аккаунт у GitHub (GitLab/Bitbucket). Для цього перейти в https://github.com/settings/keys Налаштовуємо конфігурацію: nano ~/.ssh/config І д...

Встановлення Visual Studio Code на Ubuntu

Visual Studio Code (VS Code) — це потужний, легкий та кросплатформний редактор коду, який став стандартом для розробників завдяки універсальності та швидкості роботи. Він підтримує Windows, Linux і macOS, запускається швидше за повноцінні IDE, але водночас може перетворюватися на повнофункціональне середовище розробки завдяки тисячам розширень. VS Code має продуману архітектуру, інтуїтивний інтерфейс, вбудований термінал та інтелектуальну систему автодоповнення на базі Language Server Protocol, що забезпечує високоякісну підтримку синтаксису для багатьох мов програмування. Серед ключових можливостей — розумне автодоповнення коду (IntelliSense), навігація між класами, символами та файлами, рефакторинг, форматування коду, інтеграція з Git, підтримка віддаленої розробки через SSH або контейнерні середовища (Dev Containers). Завдяки відлагоджувачу (debugger), який налаштовується під будь-яку мову, розробник може запускати код у контрольованому середовищі, ставити брейкпоїнти, переглядат...

Встановлення розміру swap на Ubuntu

Swap дозволяє економити оперативну пам'ять, викоористовуючи замість цього для деяких даних жорсткий диск. Перевірити розмір диску виділеної під swap: free -h або swapon --show Створити swap-файл (в даному випадку 2 Гб): sudo fallocate -l 2G /swapfile Встановити права доступу: sudo chmod 600 /swapfile Ініціалізація swap: sudo mkswap /swapfile Активація: sudo swapon /swapfile Для того, щоб зробити використання постійним, відкрийте файл з налаштуваннями: sudo nano /etc/fstab та додайте в кінець рядок: /swapfile none swap sw 0 0 Оптимізація використання swap: echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf sudo sysctl -p

Встановлення PostgreSQL на Ubuntu-сервер

Встановлення Оновлюємо пакети та встановлюємо PostgreSQL: sudo apt update sudo apt install -y postgresql postgresql-contrib Перевіряємо статус сервісу: sudo systemctl status postgresql Якщо PostgreSQL не запущений, запустимо його: sudo systemctl start postgresql sudo systemctl enable postgresql Налаштування безпеки Зміна пароля: sudo -u postgres psql У консолі PostgreSQL: ALTER USER postgres PASSWORD 'міцний_пароль'; \q \q - вихід з консолі. Список основних команд для роботи з PostgreSQL можна переглянути за посиланням. За замовчуванням PostgreSQL слухає localhost (127.0.0.1). Щоб дозволити доступ із зовнішніх машин, редагуємо конфігурацію: sudo nano /etc/postgresql/17/main/postgresql.conf (замість 17 вкажи версію PostgreSQL, яку встановлено) Шукаємо рядок: #listen_addresses = 'localhost' та замінюємо на listen_addresses = '*' Зберігаємо (Ctrl + X, Y, Enter). Тепер редагуємо pg_hba.conf: sudo nano /etc/postgresql/17/main/pg_hba.conf...

Посилання на файли в Linux

У Linux є два типи посилань: жорсткі (hard links) і символічні (symbolic links, або "симлінки"). Символічне посилання Це ярлик, який вказує на інший файл або директорію. Воно працює майже як ярлик у Windows. Коли користувач викликає програму або відкриває файл через симлінк, система автоматично перенаправляє його на справжнє місце. Симлінк не містить самих даних, лише шлях до них. Приклад: ln -s /opt/.android ~/.android ln — команда створення посилання -s — ключ для символічного посилання /opt/.android — реальне місце, де лежать дані ~/.android — місце, де хочемо бачити посилання (тобто замінити оригінальну папку) Що бачить система: ls -l ~/ дасть щось типу: lrwxrwxrwx 1 user user 14 May 12 16:00 .android -> /opt/.android l на початку — це link , і видно, куди він вказує. Жорсткі посилання У Linux кожен файл — це дані на диску + імена, які на них вказують. Жорстке посилання — це просто ще одне ім’я для тих самих даних. Тобто кілька різних ...

LaTeX

LaTeX LaTeX — це потужна мова розмітки документів, що забезпечує професійну типографіку, неперевершену підтримку математичних формул, чітку структуризацію документів, автоматичну нумерацію та перехресні посилання, ефективне керування бібліографією та широкі можливості розширення завдяки пакетам. Хоча LaTeX вимагає вивчення команд, він є ідеальним інструментом для створення високоякісних наукових, технічних та інших документів. Встановлення на Ubuntu Для встановлення LaTeX на Ubuntu можна використати такі команди: sudo apt update sudo apt install texlive-full Варто враховувати, що повна установка займе більше 6Gb і певний час. Альтернативою є встановлення базової версії з подальшим додаванням необхідних пакетів sudo apt update sudo apt install texlive-latex-base Якщо в LaTeX-документах передбачається використання програмного коду, то для його підсвітки можна використовувати minted . Підсвічування в minted працює не через сам LaTeX, а через зовнішній інструмент Pygments . Тобто ...

Встановлення Elixir на Ubuntu

Мова програмування Erlang Erlang — це функційна мова програмування, створена в 1987 році шведською компанією Ericsson для розробки телекомунікаційних систем. Основною її метою є забезпечення високої надійності, масштабованості та паралельності, що робить її ідеальною для систем, які потребують обробки великої кількості одночасних запитів, наприклад, телефонні станції, месенджери або ігрові сервери. Головною особливістю Erlang є його модель акторів, яка використовується для паралельного програмування. Кожен процес в Erlang є незалежним і взаємодіє з іншими через передачу повідомлень, що забезпечує відмовостійкість та ізоляцію помилок. Це робить мову дуже ефективною для створення розподілених систем, де збої в одній частині програми не впливають на її інші компоненти. Erlang також має вбудовану підтримку гарячого оновлення коду, що дозволяє змінювати програму без зупинки її виконання, що є критично важливим для багатьох бізнесів. Мова програмування Elixir Elixir — це сучасна функ...

Генерація RSA-ключів на Ubuntu

Щоб згенерувати RSA-ключі в поточній директорії для входу на сервер по SSH, можна виконати наступні кроки: 1. Відкрити термінал. 2. Перейдіть у потрібну директорію, якщо ви ще не в ній: cd /шлях/до/потрібної/директорії 3. Виконати команду для генерації нового RSA ключа в поточній директорії: ssh-keygen -t rsa -b 4096 -C "ваша_електронна_пошта@example.com" -f ./id_rsa Пояснення параметрів: -t rsa: вказує тип ключа (RSA). -b 4096: задає довжину ключа (4096 біт). -C "ваша_електронна_пошта@example.com": додає коментар, зазвичай використовується ваша електронна пошта. -f ./id_rsa: вказує шлях і назву файлів для збереження ключів у поточній директорії (файли будуть названі id_rsa та id_rsa.pub). 4. Далі буде запропоновано створити парольну фразу для ключа. Mожна ввести її для додаткової безпеки або залишити порожньою, натиснувши Enter. Після виконання цих кроків, публічні і приватні ключі будуть збережені у поточній директорії. Щоб переглянути вміст публі...

Встановлення безкоштовного SSL сертифікату від Let's Encrypt на Ubuntu-сервер

SSL-сертифікат - важливий компонент сучасного web-сайту. Let's Encrypy надає можливість отримати такий сертифікат абсолютно безкоштовно. Сертифікат реєструється на 3 місяці. Після цього його можна автоматично продовжити. Розглянемо випадок, коли домен вже зареєстрований і налаштований на відповідний сервер. На сервері встановлена операційна система Ubuntu. Apache Server Для початку не сервері має бути встановлений та запущений web-сервер. Наприклад, Apache. Якщо це не зроблено, то потрібного його встановити. Оновлюємо apt: sudo apt update Встановлення Apache: sudo apt install apache2 Корисними будуть команди Перевірити статус: sudo systemctl status apache2.service Старт: sudo systemctl start apache2.service Зупинка: sudo systemctl stop apache2.service Рестарт: sudo systemctl restart apache2.service Certbot Сертифікат найпростіше згенерувати за допомогою Certbot. Детальну інструкцію можна отримати на сайті https://certbot.eff.org/ Далі команди, які використовують...

Встановлення Jenkins на Ubuntu

Встановлення Jenkins на Ubuntu 22.04 Оновлюємо список встановлених пакетів: sudo apt-get update На машині має бути встановлена одна із актуальних версій JDK. В даному прикладі використовується JDK 17. Як встановити та переключати версії Java на Ubuntu в попередній статті Підключаємо необхідний репозиторій. Для цього спершу додаємо GPG-ключ: curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key | sudo tee /usr/share/keyrings/jenkins-keyring.asc > /dev/null Додаємо репозиторій: echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] https://pkg.jenkins.io/debian-stable binary/ | sudo tee /etc/apt/sources.list.d/jenkins.list > /dev/null Для активації зроблених змін знову виконуємо команду sudo apt-get update Встановлюємо Jenkins: sudo apt install jenkins Запуск: sudo systemctl start jenkins Налаштування портів Jenkins використовує по замовчуванню порт 8080. Тому для роботи з Jenkins цей порт має бути відкритий. Перевіряємо статус ufw: sudo...