15%

Збережіть 15% на всі хостинг-послуги

Перевірте свої навички і отримайте Знижку на будь-який план хостингу

Використовуй код:

Skills
Почати
02.09.2025

Як запустити файл .sh у Linux: повний посібник для початківців та системних адміністраторів

Shell-скрипти є основою автоматизації Linux. Незалежно від того, чи ви розгортаєте веб-додаток, плануєте резервні копії або налаштовуєте щойно підготовлений сервер, .sh файли дозволяють об’єднати складні послідовності команд в один повторюваний виконуваний файл. Цей посібник проведе вас через кожен метод запуску shell-скриптів у Linux — від базового виконання до фонових процесів і планування cron — з найкращими практиками, які витримують виробничі середовища.

Що таке .sh файл у Linux?

Файл .sh — це звичайний текстовий скрипт, написаний мовою shell (зазвичай Bash або POSIX sh), який Linux shell інтерпретує та виконує рядок за рядком. Shell-скрипти використовуються для:

  • Автоматизації повторюваних завдань системного адміністрування
  • Розгортання та налаштування додатків
  • Управління користувачами, дозволами та файловими системами
  • Планування завдань обслуговування, таких як резервне копіювання та ротація журналів
  • Завантаження нових серверів після підготовки

Якщо ви керуєте середовищем VPS Hosting або Dedicated Server, shell-скриптинг — це незамінна навичка, яка заощадить вам години ручної роботи щотижня.

Передумови

Перед запуском будь-якого .sh файлу переконайтеся, що у вас є:

  • Доступ до терміналу Linux (локально або через SSH)
  • Обліковий запис користувача з відповідними дозволами
  • Файл скрипту вже в системі (створений локально або передачений через SCP/SFTP)

Метод 1: Зробіть файл виконуваним за допомогою chmod

За замовчуванням новостворені або завантажені .sh файли не мають дозволів на виконання. Перед запуском скрипту як програми ви повинні явно надати права на виконання за допомогою команди chmod.

chmod +x script.sh

Щоб перевірити, чи були дозволи застосовані правильно:

ls -l script.sh

Ви повинні побачити вихід, подібний до:

-rwxr-xr-x 1 user user 1024 Jun 10 14:32 script.sh

Прапори x підтверджують, що файл тепер виконуваний власником, групою та іншими.

> Порада безпеки: Якщо ви хочете обмежити виконання лише власником файлу, використовуйте chmod 700 script.sh замість chmod +x.

Метод 2: Запустіть скрипт за допомогою відносної або абсолютної шляху

Після того, як файл стане виконуваним, ви можете запустити його безпосередньо з терміналу.

Використання відносної шляху (поточний каталог)

Якщо скрипт знаходиться у вашому поточному робочому каталозі, додайте до нього префікс ./:

./script.sh

Префікс ./ вказує shell шукати в поточному каталозі, а не в системному $PATH.

Використання абсолютної шляху

Якщо скрипт зберігається в іншому місці, надайте його повну шляху:

/home/user/scripts/script.sh

або

/usr/local/bin/script.sh

Використання абсолютних шляхів особливо важливо при запуску скриптів із завдань cron або інших автоматизованих контекстів, де робочий каталог може відрізнятися.

Метод 3: Запустіть скрипт за допомогою bash або sh (дозвіл на виконання не потрібен)

Ви можете викликати shell-скрипт, явно викликавши інтерпретатор, навіть якщо файл не має дозволів на виконання. Це особливо корисно для швидкого тестування скрипту перед тим, як зробити його постійно виконуваним.

bash script.sh

або для POSIX-сумісних скриптів:

sh script.sh

Різниця між bash та sh

КомандаІнтерпретаторПідтримує Bash-специфічні функції
bash script.shGNU BashТак
sh script.shPOSIX sh (часто dash на Ubuntu)Ні

Якщо ваш скрипт використовує Bash-специфічний синтаксис, такий як масиви, [[ ]] умови або підстановка процесів, завжди використовуйте bash замість sh.

Метод 4: Запустіть скрипт як суперкористувач (sudo)

Деякі скрипти вимагають привілеїв кореневого рівня для зміни системних файлів, управління сервісами, встановлення пакетів або зміни конфігурацій мережі. Використовуйте sudo для підвищення дозволів:

sudo ./script.sh

або передайте скрипт безпосередньо bash з підвищеними правами:

sudo bash script.sh

Важливі міркування безпеки

  • Ніколи не запускайте скрипт як root без його попереднього прочитання. Шкідливий або погано написаний скрипт з доступом sudo може спричинити незворотну шкоду системі.
  • Надавайте перевагу запуску скриптів з мінімально необхідними привілеями.
  • Якщо скрипту потрібно лише писати в певний каталог, розглядайте можливість коригування дозволів каталогу замість запуску всього скрипту як root.

Метод 5: Запустіть скрипт у фоні

За замовчуванням запуск скрипту в терміналі блокує вашу сесію до завершення скрипту. Для довгострокових завдань — таких як великі передачі файлів, міграція баз даних або побудова серверів — ви захочете відправити процес у фон.

Використання оператора &

./script.sh &

Символ & розгалужує процес у фон і негайно повертає контроль вашому терміналу. Shell виводить PID (ідентифікатор процесу) фонового завдання, який ви можете використовувати для моніторингу або припинення його пізніше.

Утримуйте скрипт запущеним після виходу за допомогою nohup

Якщо ви відключитеся від SSH, фонові завдання, запущені за допомогою &, зазвичай припиняються. Використовуйте nohup для запобігання цьому:

nohup ./script.sh &

Вихід перенаправляється на nohup.out за замовчуванням. Щоб вказати користувацький файл журналу:

nohup ./script.sh > /var/log/myscript.log 2>&1 &

Моніторинг фонових завдань

jobs          # List background jobs in the current session
ps aux | grep script.sh   # Find the process by name
kill PID      # Terminate a specific background process

Метод 6: Планування виконання скрипту за допомогою Cron

Для повторюваних завдань — нічних резервних копій, щотижневих очисток, щогодинних перевірок здоров’я — вбудований планувальник cron Linux є стандартним рішенням.

Відкрийте редактор Crontab

crontab -e

Синтаксис Cron

* * * * * /path/to/script.sh
│ │ │ │ │
│ │ │ │ └── Day of week (0–7, Sunday = 0 or 7)
│ │ │ └──── Month (1–12)
│ │ └────── Day of month (1–31)
│ └──────── Hour (0–23)
└────────── Minute (0–59)

Практичні приклади Cron

РозкладВираз CronПриклад використання
Щодня о 2:00 ранку0 2 * * *Нічна резервна копія бази даних
Кожного понеділка о 6:00 ранку0 6 * * 1Щотижневе обертання журналу
Щогодини0 * * * *Перевірка моніторингу доступності
Кожні 15 хвилин*/15 * * * *Оновлення кешу
При перезавантаженні системи@rebootЗапуск сервісу або скрипту при завантаженні

Приклад: Автоматизована щоденна резервна копія

0 2 * * * /home/user/scripts/backup.sh >> /var/log/backup.log 2>&1

Це запускає backup.sh щодня о 2:00 ранку і додає як стандартний вихід, так і помилки до файлу журналу для аудиту.

> Порада професіонала: Завжди використовуйте абсолютні шляхи в записах cron. Cron запускається з мінімальним середовищем і може не мати доступу до того ж $PATH як ваш інтерактивний shell.

Метод 7: Джерело скрипту (запуск у контексті поточного shell)

Існує ще один метод виконання, який варто знати: sourcing скрипту. На відміну від методів вище, sourcing запускає скрипт у поточній сесії shell, а не створює підshell. Це означає, що будь-які змінні або функції, визначені в скрипті, зберігаються у вашому поточному середовищі.

source script.sh

або еквівалентно:

. script.sh

Це зазвичай використовується для завантаження змінних середовища, активації віртуальних середовищ або застосування змін конфігурації до поточної сесії.

Усунення неполадок поширених помилок

Повідомлення про помилкуЙмовірна причинаРішення
Permission deniedФайл не має дозволу на виконанняЗапустіть chmod +x script.sh
No such file or directoryНеправильна шляха або відсутній файлПеревірте шляху за допомогою ls та pwd
bad interpreter: No such file or directoryНеправильний рядок shebang (наприклад, кінцеві символи Windows)Запустіть dos2unix script.sh для виправлення кінцевих символів
command not foundСкрипт не в $PATH і немає префіксу ./Використовуйте ./script.sh або повну абсолютну шляху
syntax error near unexpected tokenСкрипт написаний для bash, але запущений з shВикористовуйте bash script.sh явно

Найкращі практики для написання та запуску Shell-скриптів

Дотримання цих практик зробить ваші скрипти безпечнішими, легшими в обслуговуванні та простішими для налагодження — особливо в серверних середовищах.

1. Завжди починайте з рядка Shebang

Перший рядок кожного скрипту повинен оголошувати інтерпретатор:

#!/bin/bash

або для максимальної портативності:

#!/usr/bin/env bash

2. Увімкніть суворий режим

Додайте це біля верхівки кожного виробничого скрипту:

set -euo pipefail
  • -e — Вийти негайно, якщо будь-яка команда не вдасться
  • -u — Розглядайте невстановлені змінні як помилки
  • -o pipefail — Перехопіть помилки в конвеєрних командах

3. Прочитайте скрипт перед його запуском

Ніколи не виконуйте .sh файл з зовнішнього або ненадійного джерела без попереднього перегляду його вмісту:

cat script.sh

або відкрийте його в текстовому редакторі. Це особливо критично при запуску з sudo.

4. Використовуйте коментарі щедро

#!/bin/bash
# backup.sh — Daily backup script for /var/www
# Author: sysadmin@example.com
# Last updated: 2024-06-10

# Define source and destination directories
SOURCE="/var/www"
DEST="/mnt/backup"

5. Організуйте скрипти в спеціальних каталогах

15%

Збережіть 15% на всі хостинг-послуги

Перевірте свої навички і отримайте Знижку на будь-який план хостингу

Використовуй код:

Skills
Почати