Economisiți 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
Secțiuni
Administrație Linux

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 siguranță sau configurezi un server nou aprovizionat, .sh files te lasă să grupezi secvențe complexe de comenzi într-un singur executabil repetabil. Acest ghid te ghidează prin fiecare metodă de rulare 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 text simplu scris în limbajul shell (de obicei Bash sau POSIX sh) pe care shell-ul Linux îl interpretează și execută linie cu linie. Script-urile shell sunt folosite pentru:

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

Dacă gestionați un mediu VPS Hosting sau un Dedicated Server, script-urile shell sunt o abilitate indispensabilă care vă va economisi ore de muncă manuală în fiecare săptămână.

Condiții preliminare

Înainte de a executa orice fișier .sh, asigurați-vă că aveți:

  • 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: Faceți 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 rula scriptul ca program, trebuie să acordați î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ă vedeți o ieșire similară cu:

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

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

> Sfat de securitate: Dacă doriți să restricționați execuția doar la proprietarul fișierului, utilizați chmod 700 script.sh în loc de chmod +x.

Metoda 2: Executați scriptul folosind o cale relativă sau absolută

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

Folosind o cale relativă (directorul curent)

Dacă scriptul se află în directorul dvs. de lucru curent, prefixați-l cu ./:

./script.sh

./ spune shell-ului să caute în directorul curent în loc să caute în sistemul $PATH.

Folosind o cale absolută

Dacă scriptul este stocat într-o altă locație, furnizați 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 executați scripturi din cron jobs sau alte contexte automatizate în care directorul de lucru poate diferi.

Metoda 3: Executați scriptul cu bash sau sh (Permisiune de execuție nu este necesară)

Puteți invoca un script shell apelând 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 POSIX:

sh script.sh

Diferența dintre bash și sh

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

Dacă scriptul dvs. utilizează sintaxă specifică Bash, cum ar fi matrici, [[ ]] condiționali, sau substituția proceselor, utilizați întotdeauna bash în loc de sh.

Metoda 4: Rulați scriptul ca Superuser (sudo)

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

sudo ./script.sh

sau transmiteți scriptul direct la bash cu drepturi ridicate:

sudo bash script.sh

Considerații importante de securitate

  • Nu rulați 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.
  • Preferați rularea scripturilor cu privilegiile minime necesare.
  • Dacă un script trebuie doar să scrie într-un anumit director, luați în considerare ajustarea permisiunilor directorului în loc să rulați întregul script ca root.

Metoda 5: Rulați scriptul în fundal

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

Folosind operatorul &

./script.sh &

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

Păstrați scriptul în execuție după deconectare cu nohup

Dacă vă deconectați de la SSH, joburile din fundal lansate cu & vor fi de obicei terminate. Utilizați 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 &

Monitorizați 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: Programarea Execuției Scripturilor cu Cron

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

Deschideți 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

ProgramareExpresie CronCaz de Utilizare
În fiecare zi la 2:00 AM0 2 * * *Copie de siguranță nocturnă a bazei de date
În fiecare luni la 6:00 AM0 6 * * 1Rotația 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@rebootPornirea unui serviciu sau script la boot

Exemplu: Copie de Siguranță 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: Utilizați întotdeauna căi absolute în intrările cron. Cron se execută cu un mediu minimal și poate să nu aibă acces la același $PATH ca shell-ul interactiv.

Metoda 7: Sursă unui Script (Rulare în Contextul Shell-ului Curent)

Există încă o metodă de execuție care merită cunoscută: sourcing unui script. Spre deosebire de metodele de mai sus, sourcing-ul rulează scriptul în sesiunea shell-ului curent în loc să genereze un subshell. Aceasta înseamnă că orice variabile sau funcții definite în script persistă în mediul dvs. curent.

source script.sh

sau echivalent:

. script.sh

Aceasta este frecvent utilizată pentru încărcarea variabilelor de mediu, activarea mediilor virtuale sau aplicarea modificărilor de configurare sesiunii curente.

Depanare Erori Comune

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

Cele mai bune practici pentru scrierea și rularea scripturilor Shell

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

1. Întotdeauna începe cu o linie Shebang

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

#!/bin/bash

sau pentru portabilitate maximă:

#!/usr/bin/env bash

2. Activează Strict Mode

Adaugă aceasta aproape de î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 comenzile cu pipe

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

Nu executa niciodată un fișier .sh din surse externe sau de încredere redusă 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 rulezi 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 rulat zilnic prin cron

6. Înregistrează 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 disponibilă unde greșelile nu vor cauza timp de inactivitate.

Executarea Shell Scripts pe un Server Linux: Considerații Practice

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

  • Acces SSH: Majoritatea scripturilor executate pe server se realizează prin SSH. Instrumente precum screen sau tmux vă permit să mențineți sesiuni persistente, astfel încât scripturile cu execuție lungă să supraviețuiască deconexiunilor.
  • Permisiuni utilizator: În mediile de hosting partajat, capacitatea dvs. de a executa scripturi poate fi limitată. Un VPS cu cPanel vă oferă acces complet root și control deplin asupra execuției scripturilor.
  • Implementări automate: Combinați shell scripturi cu cron jobs pentru a automatiza implementările, reînnoirile de certificate (deosebit de utile alături de SSL Certificates) și sarcinile de întreținere de rutină.
  • Variabile de mediu: Scripturile care rulează prin cron sau SSH pot să nu moștenească mediul shell-ului dvs. interactiv. Definiți toate variabilele necesare în mod explicit în script sau sursă un fișier de profil.

Referință rapidă: Toate metodele în privința

MetodaComandăCaz de utilizare
Execută cu permisiunechmod +x script.sh && ./script.shExecuție standard
Rulează cu bashbash script.shNu este necesară permisiunea de execuție
Rulează cu shsh script.shScripturi compatibile POSIX
Rulează ca rootsudo ./script.shScripturi care necesită privilegii ridicate
Rulează în fundal./script.sh &Execuție fără blocare
Rulează persistentnohup ./script.sh &Supraviețuiți deconectării SSH
Programează cu croncrontab -eSarcini automate recurente
Sursă a scriptuluisource script.shAplicați modificări shell-ului curent

Concluzie

Executarea fișierelor .sh în Linux este o abilitate fundamentală care deblochează puterea completă a automatizării sistemului. Fluxul de lucru principal este simplu: acordați permisiunea de execuție cu chmod +x, apoi rulați scriptul cu ./script.sh sau bash script.sh. Pentru mediile de producție, combinați căile absolute, modul strict, jurnalizarea și planificarea cron pentru a construi conducte de automatizare robuste și fiabile.

Dacă gestionați scripturi pe un server, calitatea infrastructurii dvs. de hosting contează. VPS Hosting și Dedicated Servers ale AlexHost vă oferă acces complet root, timp de funcționare stabil și performanța de care aveți nevoie pentru a executa cu încredere sarcinile de automatizare — indiferent dacă planificați copii de siguranță nocturne, implementați aplicații sau gestionați fluxuri de lucru complexe cu mai multe scripturi.