Issuu on Google+

ASI1

Entorn d'usuari – Variables d'entorn – Fitxers de configuració Sistemes Operatius LINUX

1

ENTORN DE SISTEMA / ENTORN D'USUARI Anem a estudiar de quins recursos disposem en LINUX, tant comandaments com fitxers de configuració de l'entorn d'usuari, com variables d'entorn (o de sistema), per obtenir informació tant de l'usuari amb el que treballem i estem loguejats al sistema, com del propi LINUX. env Qualsevol sistema operatiu manté una llista de “variables d'entorn” o també anomenades “variables de sistema”. Aquestes variables contenen valors rellevants, tant pel que fa a dades del sistema operatiu, com de l'entorn gràfic actual, com de l'usuari. El comandament “env”, o entorn (environtment en anglès), ens permet visualitzar a la línia de comandaments del Shell, totes aquestes variables i els valors que tenen actualment. L'exemple més clàssic i conegut és la variable PATH, que veurem a la captura següent: kibuntu@kibu:~$ env USER=kibu USERNAME=kibu PATH=/home/kibu/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games DESKTOP_SESSION=gnome GDM_XSERVER_LOCATION=local PWD=/home/kibu LANG=ca_ES@euro HOME=/home/kibu LANGUAGE=ca_ES:ca:en_GB:en GNOME_DESKTOP_SESSION_ID=Default LOGNAME=kibu ... La variable PATH Conté una col·lecció de rutes del sistema, que apunten cap als directoris del sistema que contenen arxius “binaris” (executables), com per exemple /bin, /sbin, /usr/bin, etc. LINUX, i de fet qualsevol altre sistema operatiu, mantenen i usen aquesta variable per a trobar amb facilitat i rapidesa els arxius binaris dels principals programes, tant del sistema operatiu, com de les aplicacions d'usuari, sense que se n'hagi d'especificar manualment la ruta. Això permet a l'usuari el poder executar un programa com per exemple l'OpenOffice, sense haver-ne de saber la ruta, on es troba l'arxiu executable d'aquest programa. Per comprovar-ne el valor actual, a demés de fent servir env, tenim una altra manera d'accedir al valor actual de la variable PATH, que ens serà molt útil quan fem programació de Scripts de sistema, usant el comandament echo. kibuntu@kibu:~$ echo $PATH /home/kibuntu/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games o bé, echo “El valor de la variable path es: $PATH” Podem modificar-ne el valor podem fer PATH=ruta1:ruta2:ruta3:...

© Document escrit per Joaquim Sabrià Bernaus, sota llicència Creative Commons. Es permès d'emprar, reproduir i/o modificar aquest document, sempre que es faci menció de la font d'informació i de l'autor.


ASI1

Entorn d'usuari – Variables d'entorn – Fitxers de configuració Sistemes Operatius LINUX

2

uname És un programa/comandament que ens permet obtenir valuosa informació del sistema, com ara: Nom del kernel. Tipus de sistema operatiu. Nom del sistema. Nom de la màquina (host), o node de xarxa (màquina en xarxa). Tipus de processador. Plataforma hardware. Versió del kernel. etc. Amb l'opció -a (all en anglès), amb que podem executar aquest programa, obtenim tota aquesta informació junta.

date Aquest comandament (programa), ofereix informació tant de la data com de l'hora del sistema, en diferents formats. Per obtenir informació d'aquestes opcions disponibles, executem “man date”. El format al comandament “date”, li subministrem de la següent manera: '+%d/%m/%y' whereis Permet localitzar fitxers binaris (executables), que es trobin a alguna de les rutes incloses a la variable de sistema PATH. Ens informa de la ruta on es troben: el binari (executable), els fitxers font, Els fitxers amb les pàgines d'ajuda (man), del programa que cerquem. Exemples Cercarem a on del sistema estan ubicats: L' intèrpret de bash L' intèrpret del llenguatge de programació python L' executable del paquet OpenOffice. whereis bash kibuntu@kibu:~$ whereis bash bash: /bin/bash /etc/bash.bashrc /usr/share/man/man1/bash.1.gz kibuntu@kibu:~$ whereis python python: /usr/bin/python2.4-pyrexc /usr/bin/python /usr/bin/python2.4 ... kibuntu@kibu:~$ whereis soffice soffice: /usr/bin/soffice /usr/X11R6/bin/soffice /usr/bin/X11/soffice

© Document escrit per Joaquim Sabrià Bernaus, sota llicència Creative Commons. Es permès d'emprar, reproduir i/o modificar aquest document, sempre que es faci menció de la font d'informació i de l'autor.


ASI1

Entorn d'usuari – Variables d'entorn – Fitxers de configuració Sistemes Operatius LINUX

3

COMPTES D'USUARI (locals i remots) whoami / id Amb “whoami”, el bash shell ens retorna, el nostre nom d'usuari, amb el que estem loguejats al sistema actualment. El comandament “id”, ens informa del meu UID, nom d'usuari, GID i grups del meu usuari. who Ens permet veure quin(s) usuaris(s), tenen sessió oberta al sistema, tant en mode local, com remot via xarxa (telnet, ftp, ssh, etc). S'acostuma a executar amb l'opcio -a (all en angles) finger Ens permet obtenir informació de l'usuari(s), connectats al sistema de la màquina sobre el que l'executem. El podem emprar tant en model local, la màquina local on s'executa aquest programa, com en mode remot, a una altra màquina de la xarxa, o d'Internet, que tingui activat el servei “finger”, i que per tant pugui contestar-nos a la petició d'informació que li fem des del client finger del nostre ordinador. kibuntu@kibu:~$ finger Login

Name

Tty

Idle Login Time Office

kibuntu jo

*:0

Nov 2 16:35

kibuntu jo

ttyp0

Nov 2 16:50 (:0.0)

Office Phone

kibuntu@kibu:~$ finger kibu finger: kibu: no such user. kibuntu@kibu:~$ finger kibuntu Login: kibuntu

Name: jo

Directory: /home/kibuntu

Shell: /bin/bash

On since Sun Nov 2 16:35 (CET) on :0 (messages off) On since Sun Nov 2 16:50 (CET) on ttyp0 from :0.0 New mail received Mon Oct 27 02:17 2008 (CET) Unread since Wed Apr 30 00:35 2008 (CEST) No Plan. Informació de tots els usuaris, amb una sessió de Shell oberta a la màquina remota “kinu” kibuntu@kibu:~$ finger @kibu [kibu] finger: connect: Connection refused Com podem observar ens aquests exemples, “finger” ens dona informació en mode local, però no en mode remot (quan emprem la @ i el nom de màquina remota), donat que no hi ha el servei “finger” activat i escoltant pel port 69 del TCP/IP.

© Document escrit per Joaquim Sabrià Bernaus, sota llicència Creative Commons. Es permès d'emprar, reproduir i/o modificar aquest document, sempre que es faci menció de la font d'informació i de l'autor.


ASI1

Entorn d'usuari – Variables d'entorn – Fitxers de configuració Sistemes Operatius LINUX

Fitxer .profile o .bash_profile Per a poder fer una modificació permanent de característiques del perfil d'un usuari, cal que anem al seu directori d'usuari i cerquem un arxiu ocult, que s'anomenarà .profile, o bé també pot ser .bash_profile o fins i tot podria ser .bashrc (depenent de la distribució de LINUX, etc). Si mirem el contingut d'algun d'aquests arxius veurem que hi ha definida (entre d'altres coses), el valor de la variable PATH. Si en modifiquem el seu valor, editant l'arxiu, quedarà modificat de manera permanent el valor de la variable PATH. Si volem modificar, el valor de la variable PATH de manera permanent, i que afecti a qualsevol sessio de Shell que obrim, i no sol a l'actual, ho farem modificant-ne el valor que te aquesta variable a l'arxiu .bash_profile.

Exercicis: 1) Obrir una sessió/finestra de Shell i des de la línia de comandaments invocar el programa gedit a l'entorn GNOME, o bé kedit, si treballem amb l'entorn gràfic KDE. O bé executem soffice, si volem obrir el programa principal de l'OpenOffice. Veurem que se'ns obre la finestra del programa i no ens cal especificar-ne la ruta. Després executarem, PATH=/tmp kibuntu@kibu:~$ PATH=/tmp kibuntu@kibu:~$ gedit El programa «gedit» no està instal·lat actualment. Podeu instal·lar-lo si escriviu: sudo apt-get install gedit bash: gedit: command not found I observem que no podem obrir cap d'aquests programes. PREGUNTES Què ha passat amb el valor de la variable PATH? Com pots fer per executar algun d'aquests programes, sense deixar d'invocar-lo a ma, especificant-ne la ruta fins al binari del programa, des de la mateixa sessió de Shell, on estaves treballant fins ara? Com pots arreglar-ho i restaurar la situació anterior, amb el valor antic de la variable PATH? Tanca la sessió de Shell i obre'n una de nova i observa el valor de la variable PATH. 2) Obre una sessió de super usuari (root), des de la Shell de comandaments, observa el valor de la variable PATH i compara amb el valor que té per al teu usuari, i observa'n les diferències. 3) Crea una carpeta a partir de l'arrel del teu directori d'usuari (Homedirectory), anomenada “scripts”, on anirem posant-hi els programes (scripts) que farem durant el curs, que programarem amb el Bash Shell. Modifica el valor de la variable PATH, de manera que mantingui el seu valor i a demés, li puguis afegir al final del seu valor actual, la nova ruta fins al directori “scripts” que acabes de crear. Com es pot apreciar que s'ha fet a les següents captures d'exemple: Visualitzem el valor de la variable, abans i després de modificar-ne el valor, com s'observa a: /home/kibu/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

© Document escrit per Joaquim Sabrià Bernaus, sota llicència Creative Commons. Es permès d'emprar, reproduir i/o modificar aquest document, sempre que es faci menció de la font d'informació i de l'autor.

4


ASI1

Entorn d'usuari – Variables d'entorn – Fitxers de configuració Sistemes Operatius LINUX

5

Després de de fer la modificació de la variable PATH

/home/kibu/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/kibu/scripts Observem com el valor de la variable ha canviat, ja que ara té afegida una nova ruta, al final.

Observacions El caràcter separador entre les diferents rutes, emprat pel sistema és : En Bash Shell, per a modificar/assignar valor a una variable,es fa amb el nom de la variable, sense cap mena de símbol especial, però quan volem substituir la variable pel seu valor, en Bash Shell, es fa amb el símbol $ al davant del nom de la variable. La validesa d'aquesta modificació, és temporal i només es mantindrà mentre tinguem la sessió del Shell oberta. A la que tanquem la sessió, i n'obrim una de nova, tornarem a tenir el valor de la variable PATH, amb les rutes habituals per al nostre entorn d'usuari. 4) Executant comandaments, trobar els arxius de configuració del teu usuari, on s'estableix el valor de les següents variables: PATH LANG USER DESKTOP_SESSION 5) Executa un sol comandament, que visualitzi a la Shell, la següent informació del teu usuari: Benvingut usuari “nom_usuari”. El teu directori d'usuari es “/home/directori_usuari” 6) Prova les opcions següents: A) echo PATH B) echo 'PATH' C) echo "PATH" D) echo '$PATH' E) echo "$PATH" F) rutes=`echo $PATH`;echo $rutes G) echo ${PATH} I observa'n les similituds i diferències. Quines funcionen correctament? Què fa cadascuna d'aquestes opcions? 7) Obtenir la data del sistema en format 03-November-2008 8) Obtenir l'hora del sistema en format 12:36:35 9) Amb els comandaments uname i date, crear un nou arxiu que contingui tota la informació del sistema subministrada per “uname”, però que el guardarem amb nom de “dades_sistema + la data actual” (en el mateix format que a l'exercici 7) al final del nom de l'arxiu. 10) Amb el comandament who, o amb finger: A) Obtenir la informació de quin usuari/s estan connectats (tenen una sessió de Shell oberta), a la teva màquina i guardar-ho a un fitxer anomenat “usuaris.dat”, a dins del directori dades, que ja vam crear fa algun temps. Podeu obrir sessions de Shell, a altres màquines diferents a la vostra amb “ssh”. B) Igual que a l'apartat anterior, però filtrant tota la resta de la informació, que no sigui (excepte) el nom del(s) usuari(s).

© Document escrit per Joaquim Sabrià Bernaus, sota llicència Creative Commons. Es permès d'emprar, reproduir i/o modificar aquest document, sempre que es faci menció de la font d'informació i de l'autor.


ASI1

Entorn d'usuari – Variables d'entorn – Fitxers de configuració Sistemes Operatius LINUX

6

whatis /makewhatis En un moment determinat, necessitarem obtenir informació de LINUX, quan voldrem trobar un programa, ja sigui del propi sistema, com aplicacions, poder fer ús de programes, com “whatis” i “locate”. Anem a estudiar el funcionament d'aquests programes (comandaments), i a veure per a què ens poden ser útils. De pas, aprendre'm del funcionament d'altres comandaments, que són complementaris com “makewhatis” i “updatedb”, necessaris, per a que els primers puguin funcionar correctament. El comandament “whatis” serveix per obtenir informació (una breu descripció), dels programes i aplicacions instal·lades al sistema, de les quals el programa “whatis” en té notícia (referència). Si executem “man whatis”, obtindreu quelcom de l'estil de: whatis(1) NAME

whatis - search the whatis database for complete words.

SYNOPSIS whatis keyword ... DESCRIPTION whatis searches a set of database files containing short descriptions of system commands for keywords and displays the result on the standard output. Only complete word matches are displayed. The whatis database is created using the command /usr/sbin/makewhatis.

Si ens hi fixem en aquesta última línia de color blau, observarem que ens diu que per a poder emprar el programa “whatis”, cal crear una base de dades, per a aquest programa. “whatis”, necessita poder fer consulta d'una Base de dades pròpia, on hi va emmagatzemant una referència, amb informació dels diferents programes del propi sistema i de les diferents aplicacions, en el moment en el que té notícia de l'existència d'aquest programes i d'aquestes aplicacions.Cal per tant crear la base de dades de “whatis”. Això ho farem amb “makewhatis”. Si com a un usuari qualsevol, executem “makewhatis” i doble tabulador, veiem que no tenim permisos per a poder executar aquest programa. Per tant, cal fer-ho com a usuari root: [root@pc55 ~]# make (doble tabulador) make makeindex makempy makedb makeinfo makeobj

maketorrent-console makewhatis

Per a crear la base de dades de “whatis”, com a usuari root, executem : [root@pc55 ~]# makewhatis -w -v (per defecte ho configura en anglès) -v vol dir “verbose”, per a poder visualitzar que fa durant el procés, que triga una estona!!!

Fins i tot es pot detallar els llenguatges en que voldrem després visualitzar la informació de sortida de “whatis”:

© Document escrit per Joaquim Sabrià Bernaus, sota llicència Creative Commons. Es permès d'emprar, reproduir i/o modificar aquest document, sempre que es faci menció de la font d'informació i de l'autor.


ASI1

Entorn d'usuari – Variables d'entorn – Fitxers de configuració Sistemes Operatius LINUX

[root@pc55 ~]# LANGUAGE=ca makewhatis -w -v

(en català)

Contingut de la Bases de dades de whatis El contingut actual de la base de dades de “whatis”, el trobem a l'arxiu /var/cache/man/whatis Exemples de com emprar “whatis” Obtenim informació d'un comandament / programa del sistema operatiu com “chown”. [jsabria@pc55 ~]$ whatis chown chown (1) - change file owner and group chown (1p) - change the file ownership chown (2) - change ownership of a file chown (3p) - change owner and group of a file Obtenim informació d'aplicacions com firefox, Openoffice, etc. [jsabria@pc55 ~]$ whatis firefox firefox (1) - a Web browser for X11 derived from the Mozilla browser firefox (rpm) - Navegador web Firefox. Executem l'OpenOffice. Per comprovar-ho, fem un llistat de tots els processos que s'estan executant en aquest moment, amb el comandament “ps”. Veiem que el nom de l'arxiu binari de l'OpenOffice, es diu “soffice” (i estem executant el programa “writer”). [jsabria@pc55 ~]$ ps -aux | grep -i soffice Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.7/FAQ jsabria 3344 0.0 0.1 4632 1092 ? S 10:53 0:00 /bin/sh /usr/lib/openoffice.org/program/soffice -writer file:///media/KINGSTON/Esc_Treb/asi1/so/entorn_usuari.odt jsabria 3420 0.0 0.0 4024 704 pts/0 S+ 10:54 0:00 grep soffice Li passem com a paràmetre al comandament “whatis”: [jsabria@pc55 ~]$ whatis soffice soffice: nothing appropriate Observem que no en troba cap referència, quan busca a la base de dades de Whatis. Si canviem el nom pel de l'aplicació: openoffice llavors el programa “whatis” si que en troba una referència a la bases de dades. [jsabria@pc55 ~]$ whatis openoffice openoffice.org-calc (rpm) - Spreadsheet module for openoffice.org openoffice.org-core (rpm) - Core modules for openoffice.org openoffice.org-draw (rpm) - Drawing module for openoffice.org openoffice.org-graphicfilter (rpm) - Extra graphic filters for openoffice.org openoffice.org-impress (rpm) - Presentation module for openoffice.org openoffice.org-langpack-ca_ES (rpm) - Paquet de llenguatge català per a l'openoffice.org openoffice.org-langpack-en (rpm) - English language pack for openoffice.org openoffice.org-math (rpm) - Equation editor module for openoffice.org openoffice.org-writer (rpm) - Word Processor module for openoffice.org openoffice.org-xsltfilter (rpm) - Extra xsltfilter module for openoffice.org

locate / updatedb

© Document escrit per Joaquim Sabrià Bernaus, sota llicència Creative Commons. Es permès d'emprar, reproduir i/o modificar aquest document, sempre que es faci menció de la font d'informació i de l'autor.

7


ASI1

Entorn d'usuari – Variables d'entorn – Fitxers de configuració Sistemes Operatius LINUX

8

Els comandaments (programes) “locate” i “slocate”, ens permeten: Indexar (crear un Index), de tots els fitxers dels sistema de fitxers. Fer una cerca ràpida de qualsevol fitxer del sistema de fitxers, independentment de la propietat (de qui en sigui l'usuari propietari). updatedb De manera molt semblant al que passa amb “whatis”, succeeix amb el programa “locate”, que també necessita d'una bases de dades, on consultar la informació que esperem obtenir-ne. Per a crear (i actualitzar), la base de dades necessària per al comadament “locate”, emprarem un altre comandament, anomenat “updatedb”. La ruta per defecte on està emmagatzemada aquesta base de dades és /var/lib/mlocate/mlocate.db (tot i que aquesta ruta, es pot canviar amb un dels paràmetres del comandament “locate”) Si donem una ullada al manual del comadament “locate”, com es mostra a la següent captura:

updatedb(8)

updatedb(8)

NAME updatedb - update a database for mlocate SYNOPSIS updatedb [OPTION]... DESCRIPTION updatedb creates or updates a database used by locate(1). If the database already exists, its data is reused to avoid rereading directories that have not changed. updatedb is usually run daily by cron(8) to update the default database. EXIT STATUS updatedb returns with exit status 0 on success, 1 on error. Si la base de dades ja existeix, per a fer-ne l'actualització, la informació de la pròpia base de dades, és emprada per a veure només quins directoris han estat modificats. Aquest programa és habitualment executat a diari pel servei “cron” perque s'actualitzi la base de dades de manera automàtica. Quan acaba d'executar-se, “updatedb” retorna un 0 si la creació de la base de dades s'ha completat correctament, o bé 1 si ha fallat durant el procés. El estatus de finalització, podrem comprovar-lo, executant echo $? Per a crear la base de dades de “locate”, executem “update” a la Shell i tabulem dues vegades, amb la tecla tabulador:

© Document escrit per Joaquim Sabrià Bernaus, sota llicència Creative Commons. Es permès d'emprar, reproduir i/o modificar aquest document, sempre que es faci menció de la font d'informació i de l'autor.


ASI1

Entorn d'usuari – Variables d'entorn – Fitxers de configuració Sistemes Operatius LINUX

9

[jsabria@pc55 ~]$ update updatedb update-gdk-pixbuf-loaders update-mime-database update-desktop-database update-gtk-immodules Observem que tenim un comandament anomenat “updatedb”. Si l'executem amb privilegis d'usuari, no ens deixa consultar la base de dades: [jsabria@pc55 ~]$ updatedb updatedb: can not open a temporary file for `/var/lib/mlocate/mlocate.db' Passem a root: [jsabria@pc55 ~]$ su Executem “update” i tabulem 2 cops: [root@pc55 ~]# update update-alternatives update-desktop-database update-gtk-immodules update-pciids updatedb update-gdk-pixbuf-loaders update-mime-database update-reader.conf Ara si que el podem executar: [root@pc55 ~]# updatedb

Que l'execució del comandament (la creació de la base de dades), ha funcionat correctament, podem comprovar-ho, fent un “echo” del valor de la variable de sistema $? , que ens diu si el programa/comandament que just s'acaba d'executar, ha finalitzat amb àxit, o si pel contrari s'ha produit algun error. A la següent captura, feta a un ordinador de l'escola, podem observar-ho:

[root@pc83 ~]# updatedb [root@pc83 ~]# echo $? 0 [root@pc83 ~]#

locate Un cop hem creat la base de dades per al programa “locate”, emprem aquest per a localitzar els fitxers d'un programa o d'una aplicació. Per exemple: kibuntu@kibu:~$ locate openoffice o bé, kibuntu@kibu:~$ locate office I obtenim un immens llistat de tots els arxius i les rutes fins a aquests fitxers, que formen part de l'aplicació (l'OpenOffice, en aquest cas).

© Document escrit per Joaquim Sabrià Bernaus, sota llicència Creative Commons. Es permès d'emprar, reproduir i/o modificar aquest document, sempre que es faci menció de la font d'informació i de l'autor.


ASI1

Entorn d'usuari – Variables d'entorn – Fitxers de configuració Sistemes Operatius LINUX

which Mostra la ruta completa fins a l'arxiu binari d'un programa. [jsabria@pc103 /bin/bash [jsabria@pc103 /bin/chmod [jsabria@pc103 /bin/pwd [jsabria@pc103 /bin/mount [jsabria@pc103 /usr/bin/locate [jsabria@pc103 /usr/bin/firefox

~]$ which bash ~]$ which chmod ~]$ which pwd ~]$ which mount ~]$ which locate ~]$ which firefox

© Document escrit per Joaquim Sabrià Bernaus, sota llicència Creative Commons. Es permès d'emprar, reproduir i/o modificar aquest document, sempre que es faci menció de la font d'informació i de l'autor.

10


Comandes linux