15%

Zaoszczędź 15% na wszystkich usługach hostingowych

Sprawdź swoje umiejętności i zdobądź Rabat na dowolny plan hostingowy

Użyj kodu:

Skills
Rozpocznij
02.09.2025

Jak uruchomić plik .sh w systemie Linux: Kompletny przewodnik dla początkujących i administratorów systemów

Skrypty powłoki są podstawą automatyzacji Linux. Niezależnie od tego, czy wdrażasz aplikację internetową, planujesz kopie zapasowe, czy konfigurujesz nowo aprowizowany serwer, pliki .sh pozwalają na połączenie złożonych sekwencji poleceń w jeden, powtarzalny plik wykonywalny. Ten przewodnik przeprowadzi Cię przez każdą metodę uruchamiania skryptów powłoki w Linux — od podstawowego wykonania po procesy w tle i planowanie cron — z najlepszymi praktykami, które sprawdzają się w środowiskach produkcyjnych.

Co to jest plik .sh w Linux?

Plik .sh to zwykły skrypt tekstowy napisany w języku powłoki (zazwyczaj Bash lub POSIX sh), który powłoka Linux interpretuje i wykonuje linia po linii. Skrypty powłoki są używane do:

  • Automatyzacji powtarzających się zadań administracji systemu
  • Wdrażania i konfiguracji aplikacji
  • Zarządzania użytkownikami, uprawnieniami i systemami plików
  • Planowania zadań konserwacyjnych, takich jak kopie zapasowe i rotacja dzienników
  • Uruchamiania nowych serwerów po aprowizacji

Jeśli zarządzasz środowiskiem VPS Hosting lub Dedicated Server, skrypty powłoki są niezbędną umiejętnością, która zaoszczędzi Ci wiele godzin pracy ręcznej każdego tygodnia.

Wymagania wstępne

Przed uruchomieniem jakiegokolwiek pliku .sh upewnij się, że masz:

  • Dostęp do terminala Linux (lokalnie lub przez SSH)
  • Konto użytkownika z odpowiednimi uprawnieniami
  • Plik skryptu już w systemie (utworzony lokalnie lub przesłany przez SCP/SFTP)

Metoda 1: Uczyń plik wykonywalnym za pomocą chmod

Domyślnie nowo utworzone lub pobrane pliki .sh nie mają uprawnień do wykonania. Przed uruchomieniem skryptu jako programu musisz jawnie przyznać prawa do wykonania za pomocą polecenia chmod.

chmod +x script.sh

Aby sprawdzić, czy uprawnienia zostały zastosowane prawidłowo:

ls -l script.sh

Powinieneś zobaczyć dane wyjściowe podobne do:

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

Flagi x potwierdzają, że plik jest teraz wykonywalny przez właściciela, grupę i innych.

> Wskazówka bezpieczeństwa: Jeśli chcesz ograniczyć wykonanie tylko do właściciela pliku, użyj chmod 700 script.sh zamiast chmod +x.

Metoda 2: Uruchom skrypt przy użyciu ścieżki względnej lub bezwzględnej

Po uczynieniu pliku wykonywalnym możesz go uruchomić bezpośrednio z terminala.

Używając ścieżki względnej (bieżący katalog)

Jeśli skrypt znajduje się w bieżącym katalogu roboczym, poprzedź go znakiem ./:

./script.sh

Znak ./ mówi powłoce, aby szukała w bieżącym katalogu zamiast przeszukiwać system $PATH.

Używając ścieżki bezwzględnej

Jeśli skrypt jest przechowywany w innej lokalizacji, podaj jego pełną ścieżkę:

/home/user/scripts/script.sh

lub

/usr/local/bin/script.sh

Używanie ścieżek bezwzględnych jest szczególnie ważne przy uruchamianiu skryptów z zadań cron lub innych zautomatyzowanych kontekstów, gdzie katalog roboczy może się różnić.

Metoda 3: Uruchom skrypt za pomocą bash lub sh (nie wymagane uprawnienie do wykonania)

Możesz wywołać skrypt powłoki, jawnie wywołując interpreter, nawet jeśli plik nie ma uprawnień do wykonania. Jest to szczególnie przydatne do szybkiego testowania skryptu przed uczynieniem go trwale wykonywalnym.

bash script.sh

lub dla skryptów zgodnych z POSIX:

sh script.sh

Różnica między bash a sh

PolecenieInterpreterObsługuje funkcje specyficzne dla Bash
bash script.shGNU BashTak
sh script.shPOSIX sh (często dash na Ubuntu)Nie

Jeśli Twój skrypt używa składni specyficznej dla Bash, takiej jak tablice, warunkowe [[ ]] lub podstawienie procesów, zawsze używaj bash zamiast sh.

Metoda 4: Uruchom skrypt jako superuser (sudo)

Niektóre skrypty wymagają uprawnień na poziomie root do modyfikacji plików systemowych, zarządzania usługami, instalacji pakietów lub zmiany konfiguracji sieci. Użyj sudo do podniesienia uprawnień:

sudo ./script.sh

lub przekaż skrypt bezpośrednio do bash z podwyższonymi prawami:

sudo bash script.sh

Ważne zagadnienia bezpieczeństwa

  • Nigdy nie uruchamiaj skryptu jako root bez wcześniejszego przeczytania go. Złośliwy lub źle napisany skrypt z dostępem sudo może spowodować nieodwracalne uszkodzenie systemu.
  • Preferuj uruchamianie skryptów z minimalnymi wymaganymi uprawnieniami.
  • Jeśli skrypt musi tylko pisać do określonego katalogu, rozważ dostosowanie uprawnień katalogu zamiast uruchamiania całego skryptu jako root.

Metoda 5: Uruchom skrypt w tle

Domyślnie uruchomienie skryptu w terminalu blokuje Twoją sesję do czasu zakończenia skryptu. W przypadku długotrwałych zadań — takich jak duże transfery plików, migracje baz danych lub kompilacje serwerów — będziesz chciał wysłać proces do tła.

Używając operatora &

./script.sh &

Symbol & rozwidla proces do tła i natychmiast zwraca kontrolę do Twojego terminala. Powłoka wypisuje PID (identyfikator procesu) zadania w tle, który możesz użyć do monitorowania lub zakończenia go później.

Utrzymuj skrypt uruchomiony po wylogowaniu za pomocą nohup

Jeśli rozłączysz się z SSH, zadania w tle uruchomione za pomocą & zwykle się zakończą. Użyj nohup aby tego uniknąć:

nohup ./script.sh &

Dane wyjściowe są domyślnie przekierowywane do nohup.out. Aby określić niestandardowy plik dziennika:

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

Monitoruj zadania w tle

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

Metoda 6: Zaplanuj wykonanie skryptu za pomocą Cron

W przypadku powtarzających się zadań — nightly backups, cotygodniowe czyszczenia, godzinowe kontrole zdrowia — wbudowany harmonogram cron Linux jest standardowym rozwiązaniem.

Otwórz edytor Crontab

crontab -e

Składnia 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)

Praktyczne przykłady Cron

HarmonogramWyrażenie CronPrzykład przypadku użycia
Codziennie o 2:00 AM0 2 * * *Nocna kopia zapasowa bazy danych
Każdy poniedziałek o 6:00 AM0 6 * * 1Cotygodniowa rotacja dzienników
Co godzinę0 * * * *Sprawdzenie monitorowania czasu pracy
Co 15 minut*/15 * * * *Odświeżenie pamięci podręcznej
Przy ponownym uruchomieniu systemu@rebootUruchomienie usługi lub skryptu przy starcie

Przykład: Zautomatyzowana codziennie kopia zapasowa

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

To uruchamia backup.sh codziennie o 2:00 AM i dołącza zarówno standardowe dane wyjściowe, jak i błędy do pliku dziennika w celu audytu.

> Wskazówka profesjonalna: Zawsze używaj ścieżek bezwzględnych w wpisach cron. Cron działa ze minimalnym środowiskiem i może nie mieć dostępu do tego samego $PATH co Twoja interaktywna powłoka.

Metoda 7: Źródło skryptu (Uruchom w kontekście bieżącej powłoki)

Jest jeszcze jedna metoda wykonania warta poznania: sourcing skryptu. W przeciwieństwie do powyższych metod, sourcing uruchamia skrypt w bieżącej sesji powłoki zamiast generować podpowłokę. Oznacza to, że wszystkie zmienne lub funkcje zdefiniowane w skrypcie utrzymują się w Twoim bieżącym środowisku.

source script.sh

lub równoważnie:

. script.sh

Jest to powszechnie używane do ładowania zmiennych środowiskowych, aktywacji wirtualnych środowisk lub stosowania zmian konfiguracji do bieżącej sesji.

Rozwiązywanie typowych błędów

Komunikat o błędziePrawdopodobna przyczynaRozwiązanie
Permission deniedPlik nie ma uprawnień do wykonaniaUruchom chmod +x script.sh
No such file or directoryZła ścieżka lub brakujący plikSprawdź ścieżkę za pomocą ls i pwd
bad interpreter: No such file or directoryZła linia shebang (np. zakończenia linii Windows)Uruchom dos2unix script.sh aby naprawić zakończenia linii
command not foundSkrypt nie w $PATH i bez prefiksu ./Użyj ./script.sh lub pełnej ścieżki bezwzględnej
syntax error near unexpected tokenSkrypt napisany dla bash ale uruchomiony z shUżyj bash script.sh jawnie

Najlepsze praktyki pisania i uruchamiania skryptów powłoki

Postępowanie zgodnie z tymi praktykami sprawi, że Twoje skrypty będą bezpieczniejsze, łatwiejsze w utrzymaniu i łatwiejsze do debugowania — szczególnie w środowiskach serwerowych.

1. Zawsze zacznij od linii Shebang

Pierwsza linia każdego skryptu powinna deklarować interpreter:

#!/bin/bash

lub dla maksymalnej przenośności:

#!/usr/bin/env bash

2. Włącz tryb ścisły

Dodaj to blisko szczytu każdego skryptu produkcyjnego:

set -euo pipefail
  • -e — Wyjdź natychmiast, jeśli jakiekolwiek polecenie się nie powiedzie
  • -u — Traktuj niezdefiniowane zmienne jako błędy
  • -o pipefail — Złap błędy w poleciach potokowych

3. Przeczytaj skrypt przed jego uruchomieniem

Nigdy nie wykonuj pliku .sh z zewnętrznego lub niezaufanego źródła bez wcześniejszego przejrzenia jego zawartości:

cat script.sh

lub otwórz go w edytorze tekstu. Jest to szczególnie krytyczne przy uruchamianiu z sudo.

4. Używaj komentarzy obficie

#!/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. Organizuj skrypty w dedykowanych katalogach

KatalogRekomendowane użycie
/usr/local/bin/Skrypty dostępne dla wszystkich użytkowników w całym systemie
~/scripts/ lub ~/bin/Osobiste skrypty użytkownika
/opt/scripts/Skrypty automatyzacji specyficzne dla aplikacji
/etc/cron.daily/Skrypty do uruchomienia codziennie przez cron

6. Rejestruj dane wyjściowe skryptu

Zawsze przek

15%

Zaoszczędź 15% na wszystkich usługach hostingowych

Sprawdź swoje umiejętności i zdobądź Rabat na dowolny plan hostingowy

Użyj kodu:

Skills
Rozpocznij