Nou Generator de prompt AI — scrie prompturi mai bune pentru ChatGPT, Claude și Gemini →

Depanarea Apelurilor de Sistem în Timp Real cu strace în Linux / Bash

Ghid complet pentru depanarea aplicațiilor în Linux cu strace: interceptarea apelurilor de sistem (syscalls), diagnosticarea proceselor blocate și identificarea fișierelor lipsă.

Sintaxă comandă
strace -p 4812 -e trace=openat,read,write -s 200 -T -tt

Adesea un program compilat, un binar terț sau un script Python eșuează fără niciun mesaj clar în loguri (sau îngheață la nesfârșit consumând resurse). În loc să ghicești ce face procesul în culise, comanda strace interceptează și afișează toate apelurile de sistem (system calls) pe care programul le transmite nucleului Linux (deschidere fișiere, alocare memorie, scrieri în socket-uri de rețea).

1. Aflarea cauzei pentru care o comandă eșuează la pornire
# Rulăm un binar sub strace și filtrăm doar apelurile legate de fișiere:
strace -e trace=openat,access php script.php

# Output-ul dezvăluie exact fișierele căutate:
# openat(AT_FDCWD, "/etc/php/8.4/cli/php.ini", O_RDONLY) = 3
# openat(AT_FDCWD, "/var/www/.env", O_RDONLY) = -1 ENOENT (No such file or directory)
# -> Am descoperit instantaneu că programul căuta fișierul '.env' care lipsea de pe disc!

2. Atașarea la un Proces de Producție Blocat (-p PID)

Dacă un proces existent (de exemplu un worker cu PID 4512) nu mai răspunde la cereri, vă puteți atașa direct la el fără a-l reporni:

Diagnosticarea unui proces agățat în fundal
# -p 4512 : ID-ul procesului urmărit
# -T      : Afișează timpul exact (în secunde) petrecut în interiorul fiecărui apel de sistem
# -tt     : Adaugă timestamp cu microsecunde la fiecare linie
# -s 200  : Mărește lungimea șirurilor afișate la 200 caractere (pentru a vedea căile complete)

sudo strace -p 4512 -T -tt -s 200

# Dacă vedeți:
# 18:20:15.123456 read(5, ... ) = ? ERESTARTSYS (sau rămâne blocat aici)
# Procesul este blocat pe descriptorul de fișier numărul 5!
# Verificați cu 'lsof -p 4512' ce reprezintă descriptorul 5 (de regulă un socket de rețea fără timeout configurat).

Opțiuni Utile în strace

  • -f: Urmărește automat și toate procesele sau thread-urile copil lansate prin fork() / clone().
  • -c: Mod sumar statistic: colectează apelurile și afișează la final un tabel agregat cu numărul total de apeluri, procentul de timp și erorile survenite per syscall.
Comunitate & Schimb de cunoștințe

Întrebări & Exemple de Cod: Depanarea Apelurilor de Sistem în Timp Real cu strace

Ai o nelămurire despre utilizarea comenzii Depanarea Apelurilor de Sistem în Timp Real cu strace sau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!

💬

Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!

Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.

Comunitate Adaugă o întrebare sau distribuie un cod

Moderare & Siguranță:

Pentru a menține calitatea și securitatea informațiilor, fiecare întrebare sau fragment de cod/prompt este analizat (manual sau prin moderare asistată de AI) înainte de publicare.