Pe un sistem se găsesc mai multe aplicații. Utilizatorul pornește aplicația potrivită pentru o nevoie pe care o are. De exemplu, pornește un browser web pentru a accesa Wikipedia sau pornește aplicația Spotify pentru a asculta muzică.
Utilizatorul poate porni aplicațiile folosind interfața grafică (Graphical User Interface, GUI) sau interfața în linia de comandă (Command Line Interface, CLI). În cazul interfeței grafice pornirea se face folosind elementele grafice (mouse, meniuri, iconuri de desktop). În cazul interfeței în linia de comandă pornirea se face introducând și rulând comenzi.
Am prezentat informații despre pornirea și oprirea aplicațiilor grafice în Laboratorul 1: Acomodarea în Linux
. Am văzut că o aplicație grafică poate fi pornită în 2 moduri:
Alt+F2
. În Windows se folosește combinația de taste Windows+r
. În macOS se folosește combinația de taste Command+Space
. La acest prompt se introduce șirul (comanda) care identifică aplicația.Alt+F2
. În Ubuntu 22.04 GNOME browserul de sistem de fișiere este Nautilus, identificat de șirul (comanda) nautilus
.gnome-control-center
, folosind Alt+F2
.ls
(de listare a conținutului unui director în linia de comandă (CLI)) folosind Alt+F2
. Observați că nu este afișat nimic. Acest lucru se întâmplă pentru că aplicația ls
nu are interfața grafică; are sens să fie rulată doar din linia de comandă.
Pe lângă cele două moduri de mai sus, pornirea unei aplicații grafice poate fi realizată din linia de comandă (CLI), folosind șirul care identifică aplicația, la fel că în cazul folosirii Alt+F2
. Pentru a porni o aplicație grafică din linia de comandă, avem nevoie de un terminal. Terminalul este un dispozitiv în care rulează o aplicație numită shell, care este interpretorul comenzilor introduse. Pe parcursul acestui capitol și a întregii cărți vom folosi interschimbabil shell și terminal.
Pornim o aplicație de terminal folosind fie iconul corespunzător, fie Alt+F2
urmat de șirul (comanda) gnome-terminal
. În aplicația de terminal, pornim aplicația Firefox scriind șirul (comanda) firefox
, urmat de apăsarea tastei Enter
, ca în imaginea de mai jos. Aplicația Firefox va porni.
În acest moment, în aplicația de terminal nu mai putem introduce noi comenzi pentru a porni alte aplicații. Va trebui să oprim aplicația Firefox. Oprim aplicația Firefox din mediul grafic (click pe butonul de închidere a ferestrei sau folosirea combinației de taste Alt+F4
) sau din terminal, folosind combinația de taste Ctrl+c
.
nautilus
.Atunci când pornim o aplicație grafică din linia de comandă, aplicația “acaparează” terminalul; nu mai putem introduce noi comenzi pentru a porni alte aplicații. Putem rezolva acest lucru prin trecerea aplicației grafice în backgroundul shellului. Adică urmăm pașii:
firefox
. Spunem că aplicația rulează în foreground și controlează terminalul; adică nu permite rularea unei alte comenzi.Ctrl+z
pentru a trece aplicația în background. În acest moment, avem din nou promptul terminalului, ca mai jos:student@uso:~$ firefox ^Z [1]+ Stopped firefox
bg
, ca mai jos:student@uso:~$ bg [1]+ firefox &
În acest mod, avem aplicația Firefox în rulare și avem acces la terminal să introducem noi comenzi.
Exercițiu: Folosiți pașii de mai sus pentru a porni și aplicația Settings din linie de comandă și să mențineți accesul la terminal.
Rularea aplicațiilor
.
Porniți aplicațiile grafice:
gedit
), editorgnome-calculator
), calculator basicnautilus trash://
), coș de gunoiPorniți fiecare aplicație în două moduri:
Alt+F2
.
Aplicațiile CLI, numite și utilitare, sunt proiectate pentru a fi pornite și folosite în linia de comandă. Cel mai adesea numim aplicațiile în linie de comandă utilitare sau, pur și simplu, comenzi. Scriem numele utilitarului / comenzii într-un terminal și utilitarul va fi pornit1). De exemplu, dacă dorim să afișăm utilizatorii prezenți în sistem, pornim o aplicație de terminal și folosim utilitarul who
:
student@uso:~$ who student :0 2020-09-04 17:42 (:0) student pts/0 2020-09-19 15:57 (192.168.56.1)
Sau, dacă dorim să vedem câtă memorie avem (disponibilă) în sistem, folosim utilitarul free
:
student@uso:~$ free total used free shared buff/cache available Mem: 2040972 1025716 83824 32916 931432 794692 Swap: 777300 37056 740244
ls
(de listare a conținutului unui director în linia de comandă (CLI)) folosind linia de comandă.df
(de afișare a spațiului ocupat pe disc) folosind linia de comandă.
Pentru a porni aplicații / utilitare în linia de comandă, folosim comenzi care conțin numele utilitarului urmate, eventual, de argumente. Astfel, pentru a porni utilitarele ls
sau ps
, folosim comenzi precum cele de mai jos, simple sau cu argumente:
student@uso:~$ ls Desktop Documents Downloads examples.desktop Music Pictures Public snap Templates uso.git Videos vm-actions-log.txt student@uso:~$ ls -l total 60 drwxr-xr-x 2 student student 4096 Aug 6 2018 Desktop drwxr-xr-x 3 student student 4096 Aug 20 2018 Documents drwxr-xr-x 2 student student 4096 Aug 6 2018 Downloads -rw-r--r-- 1 student student 8980 Aug 6 2018 examples.desktop drwxr-xr-x 2 student student 4096 Aug 6 2018 Music drwxr-xr-x 2 student student 4096 Aug 8 11:52 Pictures drwxr-xr-x 2 student student 4096 Aug 6 2018 Public drwxr-xr-x 3 student student 4096 Aug 8 09:02 snap drwxr-xr-x 2 student student 4096 Aug 6 2018 Templates drwxr-xr-x 14 student student 4096 Aug 20 2018 uso.git drwxr-xr-x 2 student student 4096 Aug 6 2018 Videos -rw-r--r-- 1 student student 4827 Aug 21 2018 vm-actions-log.txt student@uso:~$ ps PID TTY TIME CMD 3370 pts/4 00:00:00 bash 7979 pts/4 00:00:00 ps student@uso:~$ ps -f UID PID PPID C STIME TTY TIME CMD student 3370 3369 0 08:55 pts/4 00:00:00 -bash student 7982 3370 0 13:17 pts/4 00:00:00 ps -f
Utilitarele ls
și ps
, pe care le-am folosit mai sus, pornesc, rulează, afișează informații utilizatorului în terminal și apoi se opresc. Alte utilitare în linia de comandă sunt interactive. Adică folosesc date introduse de utilizator și își încheie execuția doar după introducerea acestor date sau la comanda utilizatorului.
De exemplu, utilitarul less
, folosit pentru afișarea paginată a conținutului unui fișier, este interactiv. Îl folosim ca mai jos:
student@uso:~$ less /etc/services
O dată pornit utilitarul, putem controla afișarea sa folosind tastele săgeți sau alte combinații de taste precum Ctrl+b
(pagină sus) sau Ctrl+f
(pagină jos). Pentru a opri utilitarul folosim tasta q
(quit) și obținem controlul terminalului pentru a introduce noi comenzi.
Exercițiu: Porniți în linia de comandă aplicația interactivă vim
pentru a edita fișierul ~/.bashrc
. Opriți aplicația folosind combinația de taste <Esc>:q!
urmată de Enter
.
Se poate întâmpla ca o aplicație în linia de comandă să ruleze pentru prea mult timp sau să se blocheze. Caz în care dorim să o oprim. Soluția de avarie este să închidem fereastra de terminal, lucru care, de obicei, închide și aplicația. Soluția mai bună este să închidem doar aplicația. Acest lucru îl facem folosind combinația de taste Ctrl+c
care oprește aplicația care rulează în terminal2). Acest lucru poate fi realizat și pentru aplicații grafice, așa cum am văzut mai sus.
De exemplu, dacă folosim comanda sleep 100
care se va bloca pentru 100 de secunde, o vom opri folosind Ctrl+c
ca mai jos:
student@uso:~$ sleep 100 ^C student@uso:~$
Exercițiu: Folosiți următoarele comenzi care pornesc aplicații care durează mult și opriți-le forțat:
ls -R /usr
: pentru a afișa recursiv conținutul directorului /usr
watch ps
: pentru a monitoriza procesele din terminalul curentAlt+F2
, când folosim aplicații CLI în linia de comandă, mesajele vor fi vizibile. Acest lucru se întâmplă pentru că linia de comandă înseamnă existența unui terminal unde putem vizualiza mesajele.
Ctrl+c
poate să nu funcționeze. În acest caz putem folosi combinația de taste Ctrl+\
, mai puternică. Dacă nici Ctrl+\
nu funcționează, va trebui să trimitem aplicației un semnal mai puternic care să o oprească. Vom discuta despre semnale în Oprirea proceselor. Semnale
.