lab 1 SO: Despre Linux - Ce face un SO? Un SO este elementul de software care permite folosirea resurselor hardware disponibile. Un SO ofera servicii si interfete cu care se pot programa aplicatii (ex. executia unei comenzi, citirea sau scrierea intr-un fisier, socketi). - Linux: proiect personal inceput de Linus Torvalds ca sa invete facilitatile arhitecturii 386. Inspirat din minix (la randul lui inspirat din Unix). Linux era proiectat sa functioneze numai cu 386, insa a avut succes pe aceasta arhitectura. La ora actuala i386 este de departe cea mai raspandita arhitectura, lucru care explica popularitatea Linux-ului. Linux a fost portat pe multe alte arhitecturi: PowerPC (IBM), Sparc (Sun), DEC Alpha (HP), device-uri embedded, supercomputere (cam toate folosesc Linux) - Linux este compus din: - kernel, care se ocupa de abstractizarea hardware-ului (si care ofera un API de system call-uri) - librarii (ex. glibc) - aplicatii: - tool-uri de baza (bash, ls, ps, mv, cp, make, gcc etc) - servere (http, ftp, mail, ssh) - interfete grafice, etc - Linux este scris in cea mai mare parte in C. Kernelul si f multe tool-uri sunt distribuite sub licenta GNU GPL. GNU este un proiect inceput in anii 80 care avea ca scop dezvoltarea de "free software" (software liber, mai mult decat gratuit). GNU GPL este un exemplu de licenta copyleft. Numele corect al SO-ului este GNU/Linux, pt ca este o combinatie intre kernel-ul linux si multe tool-uri dezvoltate initial de GNU. Avantaje Linux - Open source => existenta unei comunitati de dezvoltatori active => Viteza mare de reparare a bug-urilor - Open source => dezvoltarea de aplicatii nu pleaca de la zero => dezvoltarea de aplicatii se face mai rapid si exista o permanenta imbunatatire - Open source => utilizatorul are acces la componentele interne ale SO-ului => poate customiza SO-ul dupa propriile nevoi (cele mai multe distributii contin componente customizate) - Grad inalt de flexibilitate si configurare - Stabilitate si securitate in fata softurilor malitioase (viermilor, virusilor, spyware, adware) - GUI nu e integrat in SO - Sunt suportate cele mai multe sisteme de fisiere, exista implementari pe mai multe platforme hardware - Cea mai mare parte din configurare este facuta folosind fisiere text, permitand copierea setarilor intre diferite sisteme. Configurarea este relativ usoara. - Administrarea de la distanta este completa si sigura - etc (see http://www.whylinuxisbetter.net/) Comenzi sudo passwd root su ls [optiuni] [cale] ls ls -l ls -a ls -al ls Desktop ls -d Desktop ls -d D* chmod: chmod 764 a chmod a=r a chmod ug+w a chmod u+x a chwon root a chgrp users a man [sectiune] pagina man ls man mkdir man 1 ls man 1 mkdir man 2 mkdir man 2 open man 3 stdio man 3 printf sectiunea este de regula: 1 e pt comenzi de consola 2 e pentru functii de sistem 3 e pentru functii standard 7, 8 sunt pt informatii mai putin uzuale sunt folosite sectiunile de la 1 la 8 info pagina info mkdir cd [cale] cd Desktop cd .. cd . cd ./Desktop cd cd ~ cd / cd /home/linux1 cd home/linux1 din linux1 nu merge touch [cale] touch a vim: - vim a (default mode) - i (insert mode) - in acest mod functioneaza inserare caractere, delete, backspace, enter, sus, jos, stanga, dreapta, page up, page down, etc - ESC pentru iesire din insert mode - :wq (:w pentru write, :q pentru quit, :x sau :wq pentru write and quit, :q! pentru quit without saving) - vim merge si pe fisiere neexistente (le creeaza la salvare) mkdir [optiuni] mkdir my_dir mv [optiuni] mv [optiuni] mv a c (se foloseste si pt rename) mv a my_dir cp [optiuni] cp [optiuni] cp a aa rm [optiuni] ... rm aa rm -f aa rm -r d (warning: rm nu va intreaba are you sure) rmdir [optiuni] ... rmdir my_dir ln [optiuni] ln [optiuni] [cale director] ln a a1 ln -s a a2 ln a my_dir ln -s ../a my_dir ln my_dir/a a3 file a file a1 file a2 - un fisier e un pointer catre un inode (entitate din SO care caracterizeaza un fisier) - cu hard link nu iti mai dai seama care fisier este originalul. Ambele sunt referinte catre acelasi inode. - soft link este un pointer catre pointerul original: se face o indirectare dubla - limitari hard link: nu se fac linkari pe directoare (evitare recursivitate), nu se fac linkari catre elemente de pe alt sistem de fisiere pwd date who [-H] who am i terminal switching: ctrl+alt+F1 to F7, sau alt+F1 to F7 (depinde de distributie). F1-F6 sunt console de text, F7 e mediul grafic echo [optiuni] [text] echo "Hello!" cat [optiuni] [fisier] cat a cat terminarea proceselor: ctrl+c background / foreground: cat & -> procesul doreste sa citeasca de la stdin; este oprit de SO ctrl+z fg ps [optiuni] ps ps -e kill [-semnal] kill -9 12345 killall [-semnal] killall -9 cat killall -11 cat fg -> segmentation fault top top -h < > redirection / pipes: > (redirect stdout to file, rewrite existing data) >> (redirect stdout to file, append to existing data) < (redirect stdin from file) | (stdout becomes stdin of next command) 2> / 2>> (stderr to file) &> / &>> (stdout and stderr to file) &| (stdout and stderr to stdin of next command) ls -l > file cat < file ls -l | more ls -l | sort find -maxdepth 1 | grep aa > stuff_found locate, updatedb - mai rapid, necesita indexarea sistemului de fisiere intr-o bd - locate .log diff a_original a_new > a.diff patch a_original < a.diff tar tar -cvvf a.tar a tar -xvvf a.tar tar -cvvzf a.tar.gz a tar -xvvzf a.tar.gz tar -cvvjf a.tar.bz2 a tar -cvvjf a.tar.bz2 apt apt-get install mc apt-get remove mc apt-cache search midnight commander apt-cache show moc variabile de mediu: env export MY_VAR=123qwe echo $MY_VAR env echo $PATH export PATH=$PATH:. echo $PATH editare in .bashrc pentru ca modificarile sa fie permanente named pipes: - mkfifo my_fifo - la consola 1, executa comanda ls -l > my_fifo. Obs ca procesul se blocheaza: sistemul de operare a suspendat procesul pana cand un alt proces va lua informatiile din celalalt capat al cozii - la consola 2, executa comanda cat my_fifo. Mesajul obtinut cu ls -l este afisat la consola 2 - acelasi exercitiu, dar cu comenzile inversate: intai cat, apoi ls. Efectul va fi acelasi. - mai multe exemple http://www.linuxjournal.com/article/2156 References: man pages (eg. man ls) info pages (eg. info ls) command help (eg. ls --help) comanda 'vimturor' (tutorial vim de 25-30 de minute) google http://en.wikipedia.org/wiki/Linux http://www.linux.org/lessons/ http://www.ss64.com/bash/index.html cheatsheets http://xinocat.com/refcard/refcard-en-a4.pdf http://fosswire.com/post/2007/08/unixlinux-command-cheat-sheet/ http://fosswire.com/post/2008/04/ubuntu-cheat-sheet/