This is an old revision of the document!
PID
-ul procesului bash ce rulează în terminal./proc/PID
, unde PID
este cel aflat anterior.fd
. Listați conținutul în format lung.ps
fără niciun argument.pts/0
?Fiecare terminal deschis în interfața grafică este de fapt un pseudo-terminal. Link-urile simbolice din directorul fd duc către device-ul corespunzător pseudo-terminal-ului.
yes a
. ls -l /proc/`pidof yes`/fd
.Intrare și ieșirile standard.
echo > my_out_file
.Este creat un fișier nou.
yes > a
.ls -l /proc/`pidof yes`/fd
.a
și repetați task-ul.Ieșirea standard este redirecționată.
echo Text > a
.a
.cat
.Fișierul a fost suprascris.
echo File >> a
.a
.Fișierul nu a mai fost suprascris. Textul a fost adăugat la final.
yes > /dev/null
./dev/null
./dev/null este folosit pentru a redirecționa output-ul (a îl face să nu mai apară pe ecran) și a îi face drop. Se evită practic scrierea acestuia într-un fișier care ocupă spațiu pe hard.
ls -l /proc/`pidof yes`/fd
.Ieșirea standard este redirecționată spre /dev/null.
read var
.thales
apoi enter
.echo $var
?read citește de la tastatură text și îl salvează în variabila var. Comanda echo $var afișează conținutul variabilei. În acest caz afișează textul citit anterior.
a
.(read var) < a
.a
este fișierul de la task-ul anteriorecho $var
.Comanda de citire nu a mai așteptat comenzi de la tastatură și a citit din fișierul a.
ls > out
.out
.Output-ul comenzii ls a fost redirecționat în fișierul out.
reboot > out
.out
.Comanda reboot dă eroare din cauza permisiunilor insuficiente. Se încearcă redirectarea output-ului în fișierul out, însă fișierul este suprascris și gol (deoarece nu se scrie nimic). Pe ecran apare mesajul scris la stderr de eroare.
reboot >& out
.out
.Pe ecran nu mai apare eroarea. Aceasta a fost redirecționată împreună cu ieșirea standard în fișierul out.
ls >& out
.out
.Operatorul redirecționează și standard output și standard error.
(ls > /dev/tty) >& out
.Se încearcă redirecționarea erorilor în fișierul out. Cum nu se produce nicio eroare, fișierul out o să fie gol, iar pe ecran o să apară output-ul comenzii ls.
mkfifo my_pipe
.echo
, scrieți ceva în fișierul my_pipe
.Terminal-ul se blochează. Comanda nu se termină.
my_pipe
.Apare textul scris mai devreme în pipe.
Primul terminal se deblochează
my_pipe
.Comanda se blochează. Pipe-ul cu nume nu reține date pe disk. Terminalul va rămâne agățat până când un alt proces va scrie în pipe.
echo
pentru a scrie ceva în fișier.Terminalele se deblochează. Textul a ajuns dintr-o parte în alta.
my_pipe
folosind comanda echo
.Închiderea terminal-ului a distrus mesajul din buffer-ul pipe-ului. (buffer-ul nu este persistent)
ls | cat
.Comanda cat primește ca input output-ul comenzii ls și îl afișează pe ecran.
ls | cat | cat | cat | cat
.Același lucru.
ls -l | less
.less te ajută să vizualizezi mai facil un output de dimensiune mare.
ls -lR / | less
.ls -l | grep rwx
.rwx
.grep filtrează input-ul primit după un anumit pattern. În acest caz afișează linile ce conțin gruparea "rwx"
cat /proc/cpuinfo | less
.Informații despre procesor.
ls -a | grep bash
.Fișier ascuns de history.
ls -l | wc -l wc -l: numără câte linii există în input-ul primit
yes
pentru a scrie într-un fișier.trap
pentru a scrie ceva în fișierul /tmp/file.log
la închiderea terminalului.man bash
și /trapDorim să afișăm anumite procese într-o anumită ordine.
Afișați procesele care aparțin utilizatorului student.
Pentru procesele de mai sus afișați PID-ul, comanda completă, timpul de rulare pe procesor, comanda completă, memoria RAM consumată (RSS – resident set size).
Sortați procesele de mai sus în ordinea memoriei RAM consumate (RSS – resident set size).
Din procesele sortate rețineți doar primele 10 intrări. Să afișați și antetul oferit de ps
.
Dorim să lucrăm cu grupuri de procese care țin de un utilizator.
Pe un tab nou de terminal adăugăm utilizatorul ana
folosind comenzile
$ sudo su # adduser ana [...] # exit # sau puteti folosi combinatia de taste Ctrl+d $
În acel tab nou ne autentificăm ca utilizatorul ana
folosind comanda
$ su - ana
În cel nou tab, din contul utilizatorului ana
, porniți în background mai multe procese: sleep
, emacs
, gedit
.
Din primul tab, folosiți pkill
pentru a încheia execuția proceselor utilizatorului ana
. Este posibil să fie necesar să folosiți semnalul SIGKILL
ca să fie garantată încheierea execuției.
Pe un tab nou de terminal porniți în background procese ca utilizatorul root
, student
și ana
.
În acel tab aflăm care este identificatorul terminalului curent folosind comanda
$ tty
Din primul tab, folosiți pkill
pentru o încheia execuția proceselor de pe al doilea terminal. Este posibil să fie necesar să folosiți semnalul SIGKILL
ca să fie garantată încheierea execuției.