Scurt informații teoretice

Scopul lucrării este o introducere practică a metodelor de creare și utilizare a scripturilor Linux

Trebuie să utilizați scripturile shell

Unul dintre motivele pentru care se utilizează scripturile shell este capacitatea de a programa rapid și ușor. Shell-ul este foarte util pentru utilități mici, care efectuează o sarcină relativ simplă pentru care performanța este mai puțin importantă decât ușurința de instalare, întreținere și portabilitate. Carcasa poate fi utilizată pentru a controla procesele, asigurând executarea comenzilor în ordinea specificată, în funcție de finalizarea cu succes a fiecărei etape de execuție.







Deși shell-ul extern este foarte asemănător cu modul de linie de comandă din Windows, acesta este mult mai puternic și capabil să realizeze programe foarte complexe pe cont propriu. Cochilia execută programele shell, deseori numite scripturi sau scripturi, care sunt interpretate în timpul rulării. Această abordare facilitează depanarea, deoarece puteți rula linia de program în linie și nu pierdeți recompilarea timpului. Dar pentru sarcinile care sunt importante pentru a rula timpul sau pentru a necesita o utilizare intensă a procesorului, shell-ul nu este un mediu adecvat.

1.2 Cochilie comandă

O shell este un program care funcționează ca o interfață între utilizator și sistemul de operare Linux, permițându-vă să introduceți comenzi pe care trebuie să le efectueze sistemul de operare. În Linux, mai multe shell-uri instalate pot coexista și diferiți utilizatori pot alege cel care le place cel mai bine. Deoarece sistemul OSLinux este un sistem modular, puteți introduce și aplica una dintre mai multe cochilii standard diferite. VLmuxstandartnaya coajă, este instalat ca / ​​bin / shi uneltele incluse proektaGNU, nazyvaetsyabash (GNUBourne-AgainSHell). În această lucrare folosim shell-ul versiunii 3, funcționalitatea sa fiind comună pentru toate coajările care îndeplinesc cerințele standardului POSIX.

Scurt informații teoretice

Fig. 1. Arhitectura extinsă a sistemului de operare Linux

Canale și redirecționare

Înainte de a studia detaliile programelor shell, este necesar să spun câteva cuvinte despre posibilitățile de redirecționare a intrărilor și ieșirilor de programe (nu doar a programelor shell) în sistemul de operare Linux.

Anterior, s-au luat în considerare anumite tipuri de redirecționare, cum ar fi:







Salvați ieșirea comenzii ls într-un fișier numit logoutput.txt.

Cu toate acestea, redirecționarea vă permite să faceți mai mult decât demonstrează acest exemplu simplu. Ceychas trebuie să știe doar că descriptor de fișier 0 este intrarea standard, fisierul 1 - iesirea standard, și descriptor de fișier 2 - stderr. Fiecare dintre aceste fișiere poate fi redirecționat independent una de cealaltă. caz Na.samom, puteți redirecționa și alți descriptori de fișiere, dar, de regulă, nu este necesar să redirecționeze orice alte descriptori, cu excepția standardului: 0, 1 și 2.

În exemplul anterior, ieșirea standard este redirecționată către fișier utilizând operatorul>. În mod implicit, dacă există deja un fișier cu numele specificat, acesta va fi suprascris. Pentru a adăuga la sfârșitul fișierului, utilizați operatorul >>. De exemplu, comanda

Adăugați ieșirea comenzii ps la sfârșitul fișierului specificat. În acest exemplu, apoi semnul $ înaintea comenzii este promptul Linux.

Pentru a redirecționa fluxul de eroare standard înaintea operatorului> introduceți numărul descriptorului de fișier pe care doriți să îl redirecționați. Deoarece fluxul de eroare standard are descriptorul de fișiere 2, specificați operatorul 2>. Adesea este util să ascundeți fluxul de eroare standard, împiedicându-l să apară pe ecran.

Să presupunem că doriți să utilizați comanda kill pentru a termina procesul din script. Există întotdeauna un risc mic ca procesul să se încheie înainte ca comanda kill să fie executată. Dacă se întâmplă acest lucru, comanda kill va afișa un mesaj de eroare la fluxul de eroare standard, care va apărea în mod implicit pe ecran. Redirecționând ieșirea standard a comenzii și o eroare, puteți împiedica comanda să genereze orice text pe ecran.

Comanda $ kill -HUP 1234> killout.txt 2> killer.txt

Puneți informațiile de ieșire și de eroare în diferite fișiere.

Dacă preferați să colectați ambele seturi de ieșiri într-un singur fișier, puteți utiliza operatorul> 2 pentru a conecta două fluxuri de ieșire. Astfel, echipa

$ kill-1 1234> killerr.txt2> 41

va pune fluxul de eroare de ieșire și standard în același fișier. Acordați atenție ordinului operatorilor. Exemplul de mai sus este citit ca „redirecționeze ieșirea standard, într-un fișier killerr.txt, și apoi redirecționa stderr în același loc ca și ieșirea standard.“ Dacă întrerupeți comanda, redirecționarea nu va fi executată așa cum vă așteptați.

Deoarece rezultatul comenzii kill poate fi detectat utilizând codul de ieșire, adesea nu este necesar să stocați niciun flux standard de ieșire sau de eroare standard. Pentru a renunța complet la orice ieșire, puteți folosi "gun bin" universal pentru Linux, / dev / null, după cum urmează:

$ kill-1 1234> / dev / null2> Fil

La fel ca ieșirea, puteți redirecționa intrarea. De exemplu, mai mult

Procesele pot fi conectate folosind operatorul de canal |. De exemplu, puteți utiliza comanda de sortare pentru a sorta ieșirea comenzii theps.

Dacă nu utilizați canale, va trebui să utilizați câțiva pași, cum ar fi:

$ sortare psout.txt> pasoirt.out

Conectarea proceselor la canal va oferi o soluție mai elegantă:

Dacă doriți să vedeți ieșirea împărțită în pagini de pe ecran, puteți conecta al treilea proces, mai mult:

Să presupunem că doriți să vedeți toate numele proceselor care rulează, cu excepția shell-urilor. Puteți utiliza următoarea linie de comandă:

Este nevoie de ieșire de PS, sortate în ordine alfabetică, sunt extrase din ea prelucrează folosind komandyuniq aplicate utilitagrep-vshdlya Procesul de eliminare a imenemshi în completarea paginii cu lista de pagini este afișată. Aceasta este o soluție mai elegantă decât o linie de comenzi individuale, fiecare cu propriile fișiere temporare.







Articole similare

Trimiteți-le prietenilor: