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

Публікації

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

Налаштування порядку завантаження в Ubuntu за допомогою Grub

У випадку, коли на машині встановлені кілька операційних систем, наприклад, Ubuntu та Windows, буває зручно налаштувати операційну систему, яка має запускатися по замовчуванню першою. Для зміни налаштування потрібно виконати команду: sudo nano /etc/default/grub Щоб змінити номер пункту у grub, який завантажується першим, потрібно у файлі змінити номер: GRUB_DEFAULT=0 Щоб змінити час очікування вибору перед завантаженням, можна змінити значення (в секундах): GRUB_TIMEOUT=5 Інші параметри можна залишити без зміни. Для збереження даних в nano потбіно натиснути Ctrl+S, для закриття редактора - Ctrl+X. щоб зміни вступили в силу, потрібно виконати команду sudo update-grub

Запуск застосунку Spring Boot як системного сервісу Ubuntu

Для більш стабільної роботи web-застосунки краще запускати на сервері як системні сервіси. Для цього спершу потрібно створити власний системний сервіс: sudo nano /etc/systemd/system/myapp.service У цей файл потрібно додати код: [Unit] Description=Spring Boot Application After=network.target [Service] Type=simple User=ubuntu Group=ubuntu WorkingDirectory=/opt/myapp ExecStart=/usr/bin/mvn spring-boot:run -Dspring-boot.run.profiles=prod Restart=on-failure RestartSec=10 SuccessExitStatus=143 [Install] WantedBy=multi-user.target User та Group - це дані користувача, WorkingDirectory - шлях до застосунку, ExecStart - команда для запуску (в даному випадку запускається з сирцевого коду, але краще скомпілювати і запускати jar-файл). Далі потрібно зберегти файл та виконати команду: sudo systemctl daemon-reload Перевірити статус сервісу: sudo systemctl status myapp.service Запустити сервіс: sudo systemctl start myapp.service Щоб сервіс запускався автоматично після переза...

Запуск Java-застосунків без root-доступу на портах 443, 80

За замовчуванням на Linux користувачі з без прав доступу root не мають права запускати Java-застосунки на портах менших за 1024. Зокрема, при запуску Spring Boot можна отримати помилку java.net.BindException: Permission denied . Розберемо варіанти, як це можна виправити. Запуск через sudo Перед командою запуску можна додати sudo , якщо користувач має право його використовувати. Більше про запуск проєктів на Spring Boot . Надати користувачу відповідні права Власне, користувачу можна надати відповідні права адміністратора. Більше про права користувачів у Linux . Запуск на іншому порту Якщо на машині є Apache, nginx або інший сервер або його можна встановити, то можна запустити Java-застосунок на іншому порті: 8080, 8443 тощо і зробити відповідні налаштування переадресації. Надати додаткові дозволи для JDK Спочатку потрібно дізнати адресу поточного jdk : readlink -f "$(which java)" Наприклад, відповідь може бути типу /usr/lib/jvm/java-17-openjdk-amd64/bin/java . Після...

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 — каталог), а наступні д...

Налаштування віртуального середовища в 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 Після встановлення можна перевірити верс...

Dockerfile

Dockerfile — це текстовий файл з інструкціями, які описують, як зібрати Docker-образ (image). Навіщо потрібен Dockerfile Основні задачі: автоматизація збірки середовища створення відтворюваних образів деплой додатків ізоляція залежностей Як використовується Dockerfile # Збірка образу docker build -t my-app . # Запуск контейнера docker run -p 8080:8080 my-app Базовий приклад Dockerfile # базовий образ FROM openjdk:17 # робоча директорія WORKDIR /app # копіювання файлів COPY target/app.jar app.jar # команда запуску CMD ["java", "-jar", "app.jar"] Основні інструкції Dockerfile FROM (базовий образ) FROM ubuntu:22.04 FROM node:20 FROM openjdk:17 WORKDIR (робоча директорія) WORKDIR /app COPY (копіювання файлів) COPY . . COPY file.txt /app/file.txt ADD (розширене копіювання) ADD archive.tar.gz /app/ # автоматично розпаковує архіви RUN (виконання команд) RUN apt update && apt install -y curl RUN npm install RUN mvn pa...

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 ...

Термінал на Android

Часто є необхідність користуватися теміналом на ОС Android. Наприклад, для підключення по SSH до сервера. Для цього є кілька можливостей. Розглянемо досить популярну із них - Termux Для початку потрібно встановити F-Droid: зайти на сайт f-droid.org/ , завантажити apk-файл та встановити його на свій смартфон. Власне після цього можна встановити Termux , скориставшись пошуком у F-Droid (F-Droid - це альтернатива Google Play Market). Після цього можна запускати програму і користуватися терміналом. Важливо розуміти, що у Termux не можна напряму використовувати apt-репозиторії Debian/Ubuntu. Але є власний репозиторій пакетів, адаптований під Android (ARM, sandbox, відсутність root тощо). Наприклад, оновлення пакетів: pkg upgrade Встановити git pkg install git Встановити JDK25 pkg install openjdk-25 У репозиторії Termux є кілька тисяч пакетів, зокрема: gcc / clang python nodejs rust go php nginx redis postgres openssh neovim tmux Налаштування, як сервера З допом...

Посилання на файли в 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 кожен файл — це дані на диску + імена, які на них вказують. Жорстке посилання — це просто ще одне ім’я для тих самих даних. Тобто кілька різних ...