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.
Folosiți ps
cu opțiunea corectă pentru a afișa procesele care aparțin utilizatorului student
. Căutați în pagina de manual după șirul user.
Pentru procesele de mai sus afișați PID-ul, comanda completă (cale completă cu parametri), timpul de rulare pe procesor, memoria RAM consumată (RSS – resident set size). Pentru a selecta doar anumite atribute ale unui proces folosiți comanda ps
cu parametrul -o
urmat de opțiunile specifice; urmăriți și pagina de manual.
Sortați procesele de mai sus în ordinea inversă a memoriei RAM consumate (RSS – resident set size). Adică cele mai consumatoare de memorie procese la început.
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, ca root
, pkill
pentru o încheia execuția proceselor utilizatorului ana
; adică rulați sudo pkill …
(cu ce opțiuni sunt utile). 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, ca root
, pkill
pentru o încheia execuția proceselor de pe al doilea terminal; adică rulați sudo pkill …
(cu ce opțiuni sunt utile). Este posibil să fie necesar să folosiți semnalul SIGKILL
ca să fie garantată încheierea execuției.
Sunt cazuri în care dorim să pornim procese detașate de terminal. Adică după pornirea procesului să închidem terminalul și procesul să nu fie “omorât” ci să își încheie execuția. Aceste procese sunt echivalente unor procese daemon.
Pentru a detașa un proces de un terminal se folosesc comenzi precum nohup
, dtach
și disown
.
Folosiți comanda wget
pentru a descărca fișierul .torrent
de aici.
Porniți un proces BitTorrent
folosind comanda:
btdownloadheadless lin-prog.torrent
Transferați procesul pornit în starea de rulare în background. Detașați procesul de terminal folosind comanda disown
. Închideți terminalul. Investigați prezența procesului în alt terminal. Folosiți comanda lsof
pentru a vedea ce folosește procesul pe post de standard input, standard output și standard error.
Apoi încheiați execuția acelui proces.
Creați un proces BitTorrent precum cel de mai sus, detașat de terminal, folosind comanda nohup
. Închideți terminalul. Investigați prezența procesului în alt terminal. Folosiți comanda lsof
pentru a vedea ce folosește procesul pe post de standard input, standard output și standard error.