În ciuda faptului că Linux este mai stabil decât Windows, planul programelor de lucru și o varietate de servicii, lucruri se întâmplă, și, uneori, este necesar pentru a finaliza procesul de Linux. Acest lucru poate fi necesar în cazul în care programul este ondulată atunci când executați un serviciu de sistem în fundal prin intermediul terminalului, în loc de inițializarea sistemului, precum și în multe alte cazuri, atunci când pentru a ucide un proces Linux mai ușor pentru a reporni întregul sistem.
În acest articol ne vom uita la unele dintre cele mai comune modalități de a finaliza un proces Linux. Vom descrie în detaliu modul în care se oprește procesul și cum să-l dreapta.
Cum este finalizarea procesului?
Managementul proceselor în sistemul de operare Linux, prin intermediul semnalelor. Inclusiv finalizarea oricărui proces. Sistemul transmite semnale, dar, de asemenea, ele pot transmite utilizatorului prin intermediul unor comenzi speciale, sau chiar combinații de taste în terminal. Când procesul ajunge la un semnal care urmează să fie finalizat, acesta trebuie să facă o anumită pregătire.
Trebuie sa fie finalizate procese copil, șterge fișierele temporare, prize de curent, și așa mai departe. Dar, în funcție de complexitatea situației, procesul nu poate răspunde la toate semnalele. Luați în considerare semnalele principale care sunt folosite pentru a finaliza procesul:
- SIGINT - semnalul de finalizare cel mai inofensiv lucru înseamnă întrerupere. Acesta este trimis la procesul să fie pornit de la terminal prin intermediul tastelor de comenzi rapide Ctrl + C. Procesul de completare corect toate acțiunile și declarațiile sale;
- SIGQUIT - acesta este un alt semnal care este trimis cu o comandă rapidă de tastatură, programul care rulează pe terminal. El îi spune că trebuie să fie finalizată, iar programul poate efectua o oprire ordonată sau pentru a ignora semnalul. Spre deosebire de cea anterioară, generează groapa de memorie. Tastele combinație Ctrl + /;
- SIGHUP - informează procesul că un compus care are un terminal de control deconectat trimis în principal sistem când conexiunea la Internet;
- SIGTERM - se termină imediat procesul, dar procesate de către program, astfel încât să îi permită să completeze procesele copilului și să elibereze toate resursele;
- SIGKILL - De asemenea, se termină imediat procesul, dar, spre deosebire de versiunea anterioară, acesta nu este transmis la procesul în sine, și este procesat de către nucleu. Prin urmare, resursele și procesele copilului continuă să fie difuzate.
Este important să înțelegem că avem nevoie pentru a da posibilitatea de a finaliza procesul corect. Este de dorit ca porturile și soclurile au fost eliberate, închise și șterge fișierele temporare. De aceea, nu doar trimite SIGKILL. Se transferă semnalele de finalizare în secvență în care acestea sunt enumerate mai sus.
Mai întâi, Ctrl + C. dacă este posibil, atunci SIGTERM - deși el finalizează procesul, dar face această cultură, și numai în cazuri extreme SIGKILL. Și acum, uita-te la modul de a ucide proces pid Linux în practică. Dacă utilizați întotdeauna SIGKILL, apoi vine în minte este o imagine:
Cum de a ucide un proces Linux?
Pentru transmiterea semnalelor într-un proces Linux folosind utilitarul ucide. Sintaxa este simplu:
$ Kill -Signal pid_protsessa
Un semnal reprezintă unul dintre semnalele de mai sus pentru a finaliza procesul. În mod implicit, în cazul în care acest parametru nu este specificat, semnalul SIGTERM, care este foarte corect. De asemenea, trebuie să specificați care pentru a finaliza procesul. Acesta utilizează un ID unic proces - PID.
Să presupunem că am efectuat utilitate ping. Vrem să-l completeze folosind ucide. Apoi, la început, vom afla identitatea ei cu PS comandă:
$ Ps aux | grep ping
Prima linie afișează de utilitate în sine ping, iar în al doilea program de ea ps. Ia procesul PID și complet dreapta folosind SIGTERM: