15%

Economisește 15% la toate serviciile de găzduire

Testează-ți abilitățile și obține Reducere la orice plan de găzduire

Utilizați codul:

Skills
Începeți
02.09.2025

Cum să rulezi un fișier .sh în Linux: Ghid complet pentru începători și administratori de sisteme

Shell scripts sunt coloana vertebrală a automatizării Linux. Indiferent dacă implementezi o aplicație web, programezi copii de rezervă sau configurezi un server nou aprovizionat, .sh fișierele îți permit să grupezi secvențe complexe de comenzi într-un singur executabil repetabil. Acest ghid te ghidează prin fiecare metodă de executare a shell scripts în Linux — de la execuția de bază la procese în fundal și programarea cron — cu cele mai bune practici care se mențin în mediile de producție.

Ce este un fișier .sh în Linux?

Un fișier .sh este un script în text simplu scris în limbaj shell (de obicei Bash sau POSIX sh) pe care shell-ul Linux îl interpretează și execută linie cu linie. Shell scripts sunt utilizate pentru:

  • Automatizarea sarcinilor repetitive de administrare a sistemului
  • Implementarea și configurarea aplicațiilor
  • Gestionarea utilizatorilor, permisiunilor și sistemelor de fișiere
  • Programarea sarcinilor de întreținere cum ar fi copiile de rezervă și rotația jurnalelor
  • Bootstrapping a serverelor noi după aprovizionare

Dacă gestionezi un mediu VPS Hosting sau un Server Dedicat, scripting-ul shell este o abilitate indispensabilă care îți va economisi ore de muncă manuală în fiecare săptămână.

Cerințe preliminare

Înainte de a executa orice fișier .sh, asigură-te că ai:

  • Acces la un terminal Linux (local sau prin SSH)
  • Un cont de utilizator cu permisiuni corespunzătoare
  • Fișierul script deja pe sistem (creat local sau transferat prin SCP/SFTP)

Metoda 1: Fă fișierul executabil cu chmod

În mod implicit, fișierele .sh nou create sau descărcate nu au permisiuni de execuție. Înainte de a executa scriptul ca program, trebuie să acorzi în mod explicit drepturi de execuție folosind comanda chmod.

chmod +x script.sh

Pentru a verifica dacă permisiunile au fost aplicate corect:

ls -l script.sh

Ar trebui să vezi o ieșire similară cu:

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

Steagurile x confirmă că fișierul este acum executabil de proprietar, grup și alții.

> Sfat de securitate: Dacă dorești să restricționezi execuția doar la proprietarul fișierului, folosește chmod 700 script.sh în loc de chmod +x.

Metoda 2: Execută scriptul folosind o cale relativă sau absolută

Odată ce fișierul este executabil, îl poți executa direct din terminal.

Folosind o cale relativă (directorul curent)

Dacă scriptul se află în directorul tău de lucru curent, prefixează-l cu ./:

./script.sh

./ spune shell-ului să caute în directorul curent mai degrabă decât să caute în $PATH sistemului.

Folosind o cale absolută

Dacă scriptul este stocat într-o altă locație, furnizează calea sa completă:

/home/user/scripts/script.sh

sau

/usr/local/bin/script.sh

Utilizarea căilor absolute este deosebit de importantă atunci când execuți scripturi din joburi cron sau alte contexte automatizate unde directorul de lucru poate diferi.

Metoda 3: Execută scriptul cu bash sau sh (nu este necesară permisiunea de execuție)

Poți invoca un shell script apelând în mod explicit interpretul, chiar dacă fișierul nu are permisiuni de execuție. Acest lucru este deosebit de util pentru testarea rapidă a unui script înainte de a-l face permanent executabil.

bash script.sh

sau, pentru scripturi compatibile cu POSIX:

sh script.sh

Diferența dintre bash și sh

ComandăInterpretSuportă caracteristici specifice Bash
bash script.shGNU BashDa
sh script.shPOSIX sh (adesea dash pe Ubuntu)Nu

Dacă scriptul tău folosește sintaxă specifică Bash cum ar fi matrici, condiționale [[ ]] sau substituție de proces, folosește întotdeauna bash mai degrabă decât sh.

Metoda 4: Execută scriptul ca superuser (sudo)

Unele scripturi necesită privilegii la nivel root pentru a modifica fișierele de sistem, a gestiona serviciile, a instala pachete sau a schimba configurații de rețea. Folosește sudo pentru a ridica permisiunile:

sudo ./script.sh

sau transmite scriptul direct la bash cu drepturi ridicate:

sudo bash script.sh

Considerații importante de securitate

  • Nu executa niciodată un script ca root fără a-l citi mai întâi. Un script rău intenționat sau prost scris cu acces sudo poate cauza daune ireversibile sistemului.
  • Preferă executarea scripturilor cu privilegiile minime necesare.
  • Dacă un script trebuie doar să scrie într-un anumit director, ia în considerare ajustarea permisiunilor directorului mai degrabă decât executarea întregului script ca root.

Metoda 5: Execută scriptul în fundal

În mod implicit, executarea unui script în terminal blochează sesiunea ta până când scriptul se completează. Pentru sarcini de lungă durată — cum ar fi transferuri mari de fișiere, migrări de baze de date sau construcții de servere — vei dori să trimiți procesul în fundal.

Folosind operatorul &

./script.sh &

Simbolul & bifurcă procesul în fundal și returnează imediat controlul terminalului tău. Shell-ul tipărește PID-ul (ID-ul procesului) jobului din fundal, pe care îl poți folosi pentru a-l monitoriza sau termina mai târziu.

Ține scriptul în execuție după logout cu nohup

Dacă te deconectezi de la SSH, joburile din fundal lansate cu & se vor termina de obicei. Folosește nohup pentru a preveni acest lucru:

nohup ./script.sh &

Ieșirea este redirecționată la nohup.out în mod implicit. Pentru a specifica un fișier jurnal personalizat:

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

Monitorizează joburile din fundal

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: Programează execuția scriptului cu Cron

Pentru sarcini recurente — copii de rezervă noctune, curățări săptămânale, verificări de sănătate orare — planificatorul cron încorporat al Linux este soluția standard.

Deschide editorul Crontab

crontab -e

Sintaxa 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)

Exemple practice de Cron

ProgramExpresie CronCaz de utilizare exemplu
În fiecare zi la 2:00 AM0 2 * * *Copie de rezervă nocturnă a bazei de date
În fiecare luni la 6:00 AM0 6 * * 1Rotație săptămânală a jurnalelor
În fiecare oră0 * * * *Verificare de monitorizare a timpului de funcționare
La fiecare 15 minute*/15 * * * *Reîmprospătare cache
La repornirea sistemului@rebootPornire serviciu sau script la boot

Exemplu: Copie de rezervă zilnică automatizată

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

Aceasta execută backup.sh în fiecare zi la 2:00 AM și adaugă atât ieșirea standard cât și erorile într-un fișier jurnal pentru audit.

> Sfat profesional: Folosește întotdeauna căi absolute în intrările cron. Cron rulează cu un mediu minimal și poate să nu aibă acces la același $PATH ca shell-ul tău interactiv.

Metoda 7: Sursează un script (execută în contextul shell-ului curent)

Există o altă metodă de execuție care merită să o cunoști: sourcing a unui script. Spre deosebire de metodele de mai sus, sourcing-ul execută scriptul în sesiunea shell-ului curent mai degrabă decât să genereze un subshell. Aceasta înseamnă că orice variabile sau funcții definite în script persistă în mediul tău curent.

source script.sh

sau echivalent:

. script.sh

Aceasta este utilizată în mod obișnuit pentru încărcarea variabilelor de mediu, activarea mediilor virtuale sau aplicarea modificărilor de configurare sesiunii curente.

Depanarea erorilor comune

Mesaj de eroareCauza probabilăSoluție
Permission deniedFișierul nu are permisiune de execuțieExecută chmod +x script.sh
No such file or directoryCale greșită sau fișier lipsăVerifică calea cu ls și pwd
bad interpreter: No such file or directoryLinie shebang greșită (de ex., terminații de linie Windows)Execută dos2unix script.sh pentru a fixa terminațiile de linie
command not foundScript nu este în $PATH și nu are prefix ./Folosește ./script.sh sau cale absolută completă
syntax error near unexpected tokenScript scris pentru bash dar executat cu shFolosește bash script.sh în mod explicit

Cele mai bune practici pentru scrierea și executarea shell scripts

Urmând aceste practici, scripturile tale vor fi mai sigure, mai ușor de întreținut și mai ușor de depanat — mai ales în mediile de server.

1. Începe întotdeauna cu o linie Shebang

Prima linie a fiecărui script ar trebui să declare interpretul:

#!/bin/bash

sau pentru portabilitate maximă:

#!/usr/bin/env bash

2. Activează modul strict

Adaugă aceasta lângă începutul fiecărui script de producție:

set -euo pipefail
  • -e — Ieși imediat dacă orice comandă eșuează
  • -u — Tratează variabilele nesetate ca erori
  • -o pipefail — Prinde eșecurile în comenzi cu pipe

3. Citește scriptul înainte de a-l executa

Nu executa niciodată un fișier .sh din surse externe sau nesigure fără a-i revizui mai întâi conținutul:

cat script.sh

sau deschide-l într-un editor de text. Aceasta este deosebit de critică atunci când execuți cu sudo.

4. Folosește comentarii în abundență

#!/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. Organizează scripturile în directoare dedicate

DirectorUtilizare recomandată
/usr/local/bin/Scripturi la nivel de sistem accesibile tuturor utilizatorilor
~/scripts/ sau ~/bin/Scripturi personale ale utilizatorului
/opt/scripts/Scripturi de automatizare specifice aplicației
/etc/cron.daily/Scripturi de executat zilnic prin cron

6. Jurnalizează ieșirea scriptului

Redirecționează întotdeauna ieșirea către un fișier jurnal pentru scripturile care rulează nesupravegheat:

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

7. Testează scripturile într-un mediu sigur mai întâi

Înainte de a implementa un script pe un server de producție, testează-l pe un mediu de staging sau pe o instanță VPS jetabilă unde greșelile nu vor cauza timp de inactivitate.

Executarea shell scripts pe un server Linux: considerații practice

Atunci când execuți scripturi pe un server Linux la distanță — indiferent dacă este un mediu partajat sau o mașină dedicată — intră în joc câțiva factori suplimentari:

  • Acces SSH: Majoritatea scripting-ului pe server se întâmplă prin SSH. Instrumente cum ar fi screen sau tmux îți permit să menții sesiuni persistente, astfel încât scripturile de lungă durată să supraviețuiască deconexiunilor.
  • Permisiuni utilizator: În mediile de găzduire
15%

Economisește 15% la toate serviciile de găzduire

Testează-ți abilitățile și obține Reducere la orice plan de găzduire

Utilizați codul:

Skills
Începeți