interpret_comandes
Learning the shell (Breu tutorial de l'intèrpret d'ordres)
© 2000-2007, William Shotts, Jr. Verbatim copying and distribution of this entire article is permitted in any medium, provided this copyright notice is preserved.
Traducció al català (2007) JosepSànchez (papapep). Revisió: RafaelCarreras
Índex |
Per què molestar-se?
Fet i debatut, per què cal aprendre res de l'intèrpret d'ordres? Bé, deixeu-me que us expliqui una història. Fa no massa, a la feina vàrem tenir un problema. Teníem una unitat compartida a un dels nostres servidors de fitxers que s'estava emplenant. No faré esment que el sistema operatiu que portava el sistema no permet establir quotes d'usuari; això és una altra història. Però el servidor era cada cop més i més ple i entorpia el treball dels usuaris. Un dels enginyers de programari de la nostra empresa va passar gairebé tot un dia fent un programa en C++ el qual s'encarregaria de buscar als directoris personals dels usuaris quant d'espai consumien i fer-ne un informe.
Com que em van obligar a utilitzar el sistema operatiu que portava el servidor, hi vaig instal·lar un intèrpret d'ordres bash que hi funcionava. Quan vaig saber del problema, em vaig adonar que podia fer tota la feina que l'enginyer havia fet amb aquesta única línia:
du -s * | sort -nr > $HOME/informe_ocupacio.txt
Les interfícies gràfiques (GUI) van bé per a moltes feines, però no són bones per a totes les tasques. Molt cops he pensat que els ordinadors actuals no funcionen amb electricitat, sinó que sembla que funcionin amb l'energia de les pulsacions del ratolí! Els ordinadors van ser pensats per a alliberar-nos de molta feina manual, però quants cops heu fet una tasca que sabíeu perfectament que l'ordinador hauria de poder fer? Vau acabar fent la feina amb la tediosa rutina d'apuntar i clicar, apuntar i clicar. Un cop vaig sentir un comentari d'un autor que deia que quan som nens utilitzem els ordinadors mirant els dibuixets. Quan creixem, aprenem a llegir i escriure.
Benvinguts a Alfabetització informàtica 101 . Ara posem-nos a treballar.
Què és un «intèrpret d'ordres»?
De manera planera, un intèrpret d'ordres és un programa que agafa les teves comandes del teclat i les passa al sistema operatiu per a la seva execució. Molt temps enrere, era l'única interfície d'usuari amb un ordinador Unix. Avui en dia, tenim interfícies gràfiques d'usuari (GUI) a més de les interfícies de línia de comandes (CLI), com l'intèrpret d'ordres.
A la majoria de sistemes Linux, un programa anomenat bash (el qual significa Bourne Again Shell, una versió millorada del programa Bourn shell, sh, escrit per l'Steve Bourne) fa la funció d'intèrpret d'ordres. Hi ha molts altres intèrprets d'ordres disponibles als sistemes Linux. Per exemple: ksh, tcsh i zsh.
Què és un xterm, gnome-terminal, konsole, etc.?
Aquests programes s'anomenen «emuladors de terminal». Són programes que obren una finestra i us permeten interaccionar amb l'intèrpret d'ordres. Hi ha un munt d'emuladors de terminal. La majoria de distribucions Linux en porten uns quants: xterm, rxvt, konsole, kvt, gnome-terminal, nxterm i eterm.
Executant un terminal
El vostre gestor de finestres probablement pot executar programes des d'un menú. Cerqueu al llistat de programes a veure si trobeu alguna cosa que sembli un programa emulador de terminal. Al Gnome, hi trobareu «color xterm», «regular xterm» i «gnome-terminal» al menú «Accessoris». Al KDE, hi trobareu «konsole» i «terminal» al menú d'utilitats. Podeu obrir tants programes d'aquests com vulgueu i jugar amb ells. Tingueu present que encara que aquests emuladors de terminal són programes diferents, tots fan exactament la mateixa funció. Probablement, acabareu tenint el vostre preferit, en funció de les diferents particularitats que cadascun té.
Provant el teclat
D'acord, anem a prémer unes quantes tecles. Podeu veure l'indicador de l'intèrpret d'ordres que mostra el vostre nom i el nom de l'ordinador seguit del signe del dòlar. Una cosa semblant a això:
Imatge 1
Perfecte! Ara teclegem alguns caràcters sense sentit i premem la tecla Enter:
Imatge 2
Si tot ha anat com ha d'anar, haurà aparegut un missatge d'error queixant-se que no entén què voleu fer:
Imatge 3
Molt bé! Ara premeu la tecla «fletxa amunt». Mireu com torna a aparèixer la vostra última ordre.
Sí, hi ha un històric de comandes. Premeu la tecla «fletxa avall» i tornareu a tenir la línia en blanc.
Si us cal, podeu recuperar la ordre «aijefiajeifxmia» prement la tecla «fletxa amunt». Si premeu les tecles «fletxa esquerra» i «fletxa dreta» podreu posicionar el cursor on volgueu de la línia de comandes. Això permet editar de manera fàcil les errades tipogràfiques o de sintaxi.
|
No treballeu mai com a superusuari excepte que sigui un cas d'absoluta necessitat. Fer-ho de manera indiscriminada i no necessària és perillós, estúpid i de poca classe |
Creeu-vos un compte d'usuari propi ara mateix!!
Fent servir el ratolí
Tot i que l'intèrpret d'ordres és una interfície de línia de comandes, podeu fer-hi servir el ratolí per a moltes coses. Això és així si teniu un ratolí de tres botons; i hauríeu de tenir un ratolí de tres botons si voleu fer servir Linux.
Primer, podeu fer servir el ratolí per a desplaçar-vos amunt i avall per la sortida de la finestra del terminal. Com a demostració, premeu la tecla enter fins que el cursor es desplaci finestra avall. Ara, amb el ratolí, podeu utilitzar la barra de desplaçament de la finestra de terminal per a moure el contingut de la finestra amunt i avall.
Si feu servir l'xterm, podeu trobar-ho difícil, donat que cal el botó del mig per a fer aquesta operació. Si teniu un ratolí de dos botons haurà d'estar configurat per a emular un de tres botons. Això significa que el botó del mig es pot simular prement simultàniament el botó de la dreta i de l'esquerra.
Seguidament, podeu copiar text amb el ratolí. Marqueu amb el ratolí un tros de text (per exemple, “aijefiajeifxmia” d'aquí el navegador de l'internet) mentre aguanteu el botó esquerra del ratolí. El text hauria de quedar ressaltat. Ara moveu el punter del ratolí a l'emulador de terminal i premeu el botó del mig del ratolí. El text que heu ressaltat al navegador s'hauria d'haver copiat a la línia de comandes. Us havia dit que us faria falta un ratolí de tres botons?
Uns quants comentaris sobre el focus...
Quan heu instal·lat el vostre sistema Linux i el seu gestor de finestres (segurament Gnome o KDE), aquest s'ha configurat per a comportar-se en certa manera com un sistema operatiu antic.
Més concretament, és probable que tingui definit el comportament del focus com a “clicar per a obtenir focus”. Això significa que per a que una finestra obtingui el focus (sigui la finestra activa) hi heu de clicar dins. Això és el contrari del comportament tradicional de les finestres X. Si seguiu el meu consell i teniu un ratolí de tres botons, voldreu configurar la política de comportament del focus com a “el focus segueix el ratolí”. Això farà molt més fàcil el fet de copiar text a les finestres X.
Potser trobareu estrany que la finestra no passi a primer pla quan obtingui el focus (haureu de clicar a la barra de títol per a fer-la passar al davant), però us ho passareu bé podent treballar simultàniament amb més d'una finestra sense tenir la finestra activa tapant la resta. Proveu-ho i doneu-li una oportunitat; crec que us agradarà. Trobareu aquest paràmetre a l'eina de configuració del vostre gestor de finestres.
Navegació
En aquesta lliçó, introduïrem les primeres tres comandes: pwd (imprimeix el directori actual), cd (canvia el directori) i ls (llista els fitxers i directoris). Si no heu treballat mai abans amb una interfície de línia de comandes, haureu d'estar molt atents, ja que us costarà una miqueta acostumar-vos als conceptes.
Organització del sistema de fitxers
Igual que els sistemes operatius antics que hem esmentat abans, en un sistema Linux els fitxers estan organitzats en el que s'anomena estructura jeràrquica de directoris. Això vol dir que estan organitzats en una estructura de directoris (anomenats carpetes en altres sistemes) en forma d'arbre, els quals contenen fitxers i subdirectoris. El primer directori del sistema (el que és dalt de tot de l'arbres) s'anomena arrel (root) [1]. El directori root conté fitxers i subdirectoris, els quals poden tenir dins més fitxers i subdirectoris, i així fins l'infinit [2].
Imatge 4
Una diferència important entre els sistemes operatius antics i Unix/Linux és que el Linux no utilitza el concepte de lletres d'unitat. Mentre les lletres d'unitat divideixen el sistema de fitxers en diferents arbres (un per a cada unitat), el Linux només en té un. Diferents suports d'emmagatzematge poden contenir diferents branques de l'arbre, però només hi ha un arbre.
pwd
Com que la interfície de línia de comandes no proporciona una imatge gràfica de l'estructura del sistema de fitxers, ha de tenir una manera diferent de mostrar-ho. Penseu en el sistema de fitxers com en un laberint, i vosaltres hi sou a dins. En qualsevol moment, podeu estar en un directori. Dins d'aquest directori, podreu veure quins fitxers hi ha, el camí fins el directori superior i el camí fins els subdirectoris que pengen del que ara sou a dins.
El directori al qual esteu s'anomena directori de treball. Per a saber en quin directori sou, utilitzeu l'ordre pwd.
Imatge 5
Quan entreu per primer cop a un sistema Linux, el directori de treball és el vostre directori personal. Aquí és on desareu el vostres fitxers. A la majoria de sistemes, el vostre directori personal tindrà el nom /home/el_nom_del_teu_usuari, però podria ser qualsevol cosa que li faci gràcia al vostre administrador de sistemes :).
Per a llistar els fitxers que hi ha dins el directori de treball, empreu l'ordre ls.
Imatge 6
Tornarem a parlar de l'ordre ls a la següent lliçó. Es poden fer moltes coses divertides amb ella, però hem de parlar una mica de camins i directoris abans.
cd
Per a canviar el directori de treball (on sou actualment dins del laberint), emprem l'ordre cd. Per a fer-ho, teclejareu cd seguit del camí del directori de treball on voleu anar. Un camí és una ruta que agafeu per les branques de l'arbre del sistema de fitxers fins al directori on voleu anar a parar. Els camins es poden indicar de dues maneres: camins absoluts o camins relatius. Primer ens ocuparem dels camins absoluts.
Un camí absolut comença amb el directori arrel (representat per una barra inclinada a la dreta «/» a l'inici del camí) i segueix l'arbre branca per branca fins que es completa el camí fins el directori destí. Per exemple, hi ha un directori al vostre sistema on rauen els programes instal·lats pel servidor de finestres X. El camí del directori és /usr/X11R6/bin.
Això significa que des del directori arrel trobarem un directori anomenat «usr», el qual conté un altre directori anomenat «X11R6» el qual conté un altre directori anomenat «bin».
Anem a provar-ho:
Imatge 7
Ara podem veure que hem canviat el directori de treball a /usr/X11R6/bin i que hi ha un munt de fitxers dins. Us heu adonat que l'indicador de la línia de comandes ha canviat? Per a més comoditat, se sol configurar l'indicador de manera que indiqui el nom del directori de treball actual.
Així com un camí absolut comença a partir del directori arrel i arriba fins al directori destí, un camí relatiu comença al directori de treball. Per a fer això, fem servir un parell de símbols especials amb la finalitat de representar posicions relatives dins de l'arbre del sistema de fitxers. Aquest símbols són «.» (punt) i «..» (punt punt).
El símbol «.» fa referència al directori de treball i el símbol «..» fa referència al directori «pare» (l'immediat superior) del directori de treball. Anem a posar-ho en pràctica. Tornem a canviar al directori /usr/X11R6/bin:
Imatge 8
D'acord, ara suposem que volem canviar el directori de treball al pare del /usr/X11R6/bin, que és /usr/X11R6. Podem fer-ho de dues maneres.
Primer amb un camí absolut:
Imatge 9
Després amb un camí relatiu:
Imatge 10
Dos mètodes diferents amb idèntic resultat. Aleshores, quin és l'aconsellable? El que porti menys feina!!
De la mateixa manera, podem canviar el directori actiu de /usr/X11R6 a /usr/X11R6/bin de dues maneres.
Primer usarem un camí absolut:
Imatge 11
I, seguidament, un camí relatiu:
Imatge 12
Hi ha una cosa important a tenir en compte. La majoria de cops, es pot ometre el «./», aquest és implícit.
Teclejeu:
Imatge 13
Això farà la mateixa feina, el directori de treball s'assumeix.
Hi ha una excepció important a aquesta norma, però no en parlarem fins d'aquí una estona.
Un parell de dreceres
Si teclejeu cd, sense res al darrera, l'ordre cd us portarà del directori de treball al vostre directori personal.
Una drecera semblant és teclejar cd ~nom_de_usuari. En aquest cas, cd us portarà del directori de treball fins el directori personal de l'usuari que s'ha especificat a l'ordre.
|
1. Els noms dels fitxers que comencen amb un punt (.) són fitxers ocults. Això només implica que no es veuran en llistar els fitxers excepte que ho indiqueu a l'ordre amb un ls -a. Quan es va crear el vostre compte, es van crear molts fitxers ocults al vostre directori personal per a tasques de configuració. Més endavant, farem un cop d'ull més a fons a algun d'aquests fitxers per a aprendre com es parametritza l'entorn d'usuari. A més, alguns programes posaran els seus fitxers de configuració al vostre directori personal com a fitxers ocults. |
2. Els noms de fitxers a Linux, com a Unix, distingeixen entre majúscules i minúscules. El nom de fitxer «Fitxer1» i «fitxer1» fan referència a diferents fitxers. |
3. El Linux no té el concepte d'«extensió de fitxer», com els sistemes operatius antics. Podeu anomenar els fitxers com us plagui. El contingut i propòsit dels fitxers es determina d'una manera diferent. Mentre que el Linux és compatible amb els noms llargs de fitxer, els quals poden contenir espais i caràcters de puntuació, limita els caràcters de puntuació a punt, guió i guió baix. És molt important no posar espais dins del nom dels fitxers. Si voleu representar espais entre paraules al nom d'un fitxer, empreu guions baixos, us ho agraïreu més endavant. |
Fent un cop d'ull
Ara que sabem com mouren's d'un directori de treball a un altre, farem una volta pel nostre sistema Linux i, de passada, aprendrem unes quantes coses de les que fan servei. Però, abans de començar, haureu d'aprendre algunes eines que seran molt útils durant la nostra aventura.
Aquestes són:
ls (llista fitxers i directoris)
less (visualitza fitxers de text)
file (classifica el contingut d'un fitxer)
ls
L'ordre ls s'utilitza per a llistar el contingut d'un directori. Probablement és l'ordre del Linux més utilitzada. Es pot emprar de maneres molt diferents. Alguns exemples de l'ordre ls:
Ordre |
Resultat |
ls |
Llista els fitxers dins els directori de treball. |
ls /bin |
Llista els fitxers dins el directori /bin (o qualsevol altre directori que especifiqueu a l'ordre) |
ls -l |
Llista els fitxers del directori de treball en format llarg |
ls -l /etc /bin |
Llista els fitxers dels directoris /bin i /etc en format llarg |
ls -la .. |
Llista tots els fitxers (fins i tot els que comencen amb un punt, que són ocults) del directori pare del de treball en format llarg |
Aquests exemples també ressalten un concepte important sobre les comandes. La majoria de comandes funcionen de la següent manera:
ordre -opcions arguments
on ordre és el nom de l'ordre que executem, -opcions és un o més paràmetres que determinaran el comportament de l'ordre, i arguments és una o més «coses» sobre les que l'ordre operarà.
En el cas de ls, veiem que «ls» és el nom d'una ordre, i que pot tenir una o més opcions, com -a i -l, i que pot operar sobre un o més fitxers o directoris (els arguments).
Un cop d'ull de més aprop al format llarg
Si feu servir l'ordre ls amb l'opció -l, obtindreu un llistat de fitxers que contindrà una munió d'informació sobre els fitxers que s'han llistat.
Per exemple:
-rw------- 1 papapep papapep 576 Apr 17 1998 weather.txt drwxr-xr-x 6 papapep papapep 1024 Oct 9 1999 web_page -rw-rw-r-- 1 papapep papapep 276480 Feb 11 20:41 web_site.tar -rw------- 1 papapep papapep 5743 Dec 16 1998 xmas_file.txt ---------- ------- ------- -------- ------------ ------------- | | | | | | | | | | | Nom del fitxer | | | | | | | | | +--- Data de modificació | | | | | | | +------------- Mida (en bytes) | | | | | +----------------------- Grup | | | +-------------------------------- Propietari | +---------------------------------------------- Permisos del fitxer
Imatge 14
Nom del fitxer
- El nom del fitxer o el directori
Data de modificació
- L'últim cop que el fitxer ha estat modificat. Si l'última modificació va ser fa més de sis mesos, es mostrarà la data i l'any. En cas contrari, es mostrarà la data i l'hora [3].
Mida
- La mida del fitxer en bytes
Grup
- El nom del grup que té drets d'accés al fitxer a més del propietari del fitxer.
Propietari
- El nom de l'usuari propietari del fitxer.
Permisos del fitxer[4]
- Una representació dels drets d'accés (permisos) del fitxer. El primer caràcter és el tipus de fitxer. Un guió (-) indica un fitxer normal. Una «d» indica un directori. El segon joc de tres caràcters representa els drets de lectura (r- Read), escriptura (w-Write) i execució (x-eXecute) (en aquest ordre) del propietari del fitxer. El tercer joc de tres representa els drets sobre el fitxer del grup (de la mateixa manera que els del propietari), i els tres finals els de la resta d'usuaris.
less
less és un programa que us permet veure fitxers de text. Això és molt pràctic donat que molts dels fitxers emprats per a controlar i configurar el Linux són de text llegible pels humans (en contraposició amb altres sistemes antics).
Què és «text»?
Hi ha moltes maneres de representar informació en un ordinador. Tots els mètodes inclouen definir una relació entre la informació i alguns números que es faran servir per a representar-la. Els ordinadors, recordeu, només entenen números i totes les dades es passen a representació numèrica [5].
Alguns d'aquests sistemes de representació són molt complexes (com els fitxers d'imatges comprimides), mentre d'altres són considerablement simples. Un dels més antics i simples s'anomenen de 'text ASCII'. ASCII (es pronuncia ASKI) significa Codi Estàndard Americà per a Intercanvi d'Informació (American Standard Code for Information Interchange). És un esquema de codificació prou simple que es va emprar inicialment als teletips per a mapar caràcters del teclat a nombres.
El text és un mapat molt simple d'un a un de caràcters a nombres. És molt compacte. Cinquanta caràcters de text es converteixen en 50 bytes de dades. En un sistema Linux, molts fitxers es desen en format de text i hi ha moltes eines Linux que treballen amb fitxers de text.
Fins i tot els sistemes operatius antics reconeixen la importància d'aquest format. El ben famós NOTEPAD.EXE és un editor de fitxers de text pla en format ASCII.
El programa less és crida teclejant:
less fitxer_de_text
Aquesta ordre mostrarà el fitxer per pantalla.
Controlant less
Un cop invocat, less mostrarà el fitxer de text, paginant-lo. Podeu emprar les tecles Pàgina amunt i Pàgina avall per moure-us pel text del fitxer. Per sortir de less, premeu «q».
Algunes comandes que less accepta:
Comandes de teclat per al less
Ordre |
Acció |
Pàgina amunt o b |
Anar una pàgina enrera |
Pàgina amunt o espai |
Anar una pàgina endavant |
G |
Anar al final del fitxer de text |
1G |
Anar al principi del fitxer de text |
/caràcters |
Cerca cap endavant del text si troba alguna ocurrència dels caràcters especificats |
n |
Repeteix la cerca anterior |
q |
Sortir (quit) |
file
Quan feu una volta pel vostre sistema Linux, és útil poder determinar què conté un fitxer abans d'intentar visualitzar-lo. Aquí és on l'ordre file entra en acció. file examinarà el fitxer i us dirà de quina mena és.
Per a executar el programa file, teclegeu:
file nom_del_fitxer
El programa file pot reconèixer la majoria de tipus de fitxers, com:
Diversos tipus de fitxers
Tipus de fitxer |
Descripció |
Visualitzable com a text? |
Text ASCII |
El nom ho diu tot |
sí |
Fitxer script del Bourne-Again shell (Bash) |
Un script de Bash |
sí |
Fitxer ELF 32-bit LSB |
Un volcat de memòria (un programa l'ha creat quan ha petat) |
no |
Executable ELF 32-bit LSB |
Un programa binari executable |
no |
Objecte compartit ELF 32-bit LSB |
Una biblioteca compartida |
no |
Arxiu GNU tar |
Un fitxer d'arxiu de cinta. Una manera habitual de desar grups de fitxers. |
no, feu servir tar tvf per a veure'n el llistat |
dades comprimides amb gzip |
Un arxiu comprimit amb gzip |
no |
Un document HTML |
Una pàgina web |
sí |
Dades d'imatges JPEG |
Una imatges comprimida JPEG |
no |
Un document Postscript |
Un fitxer postscript |
sí |
DEB |
Un arxiu del gestor de paquets de Debian |
no, feu servir apt-cache show nom_del_paquet per a saber què hi ha dins |
Arxiu de dades Zip |
Un arxiu comprimit amb zip |
no |
Tot i que sembla que la majoria de fitxers no es poden visualitzar com a text, us quedareu sorpresos de quants sí que podeu. Això és especialment cert en referència als fitxers de configuració.
També us adonareu durant la vostra aventura que moltes prestacions del vostre sistema operatiu es controlen amb scripts de l'intèrpret d'ordres. Al Linux no hi ha secrets!
Una visita guiada
És hora de fer una volteta. La següent taula mostra alguns llocs interessants de visitar. No és una llista completa, però serveix per a provar que és una aventura ben interessant. Per a cadascun dels directoris llistats, feu el següent:
cd dins de cada directori
Empreu ls per a llistar el contingut del directori
Si veieu algun fitxer interessant, empreu l'ordre file per a determinar el seu contingut.
Per a fitxers de text, empreu less per a visualitzar-los.)
Directoris interessants i el seu contingut
Directori |
Descripció |
/ |
El directori arrel [1] on comença el sistema de fitxers. En la majoria de casos, el directori arrel només conté subdirectoris. |
/boot |
Aquí és on hi ha el nucli Linux. És un fitxer anomenat vmlinuz. |
/etc |
El directori /etc conté els fitxers de configuració del sistema. La majoria de fitxers dins /etc són fitxers de text. Fixem-nos en: |
/bin, /usr/bin |
Aquests dos directoris contenen la majoria de programes del sistema. El directori /bin té els programes essencials que el sistema necessita per a funcionar, mentre que /usr/bin conté aplicacions per als usuaris del sistema. |
/sbin, /usr/sbin |
Els directoris sbin contenen programes per a l'administració del sistema, la majoria per al superusuari. |
/usr |
El directori /usr conté una varietat de coses que serveixen per a les aplicacions d'usuari. Punts ressaltables: |
/usr/local |
/usr/local i els seus subdirectoris serveixen per a la instal·lació de programari i altres fitxers per a ser emprats a la màquina local. El que vol dir realment és que el progrmari que no forma part «oficialment» de la vostra distribució (el qual normalment va a /usr/bin) anirà aquí. |
/var |
El directori /var conté fitxers que canvien a mida que el sistema s'executa. Això inclou: |
/lib |
Les biblioteques compartides (semblant a les DLL's d'altres sistemes operatius [6]) es desen aquí. |
/home |
/home és on els usuaris desen els vostres fitxers personals. Generalment, és l'únic lloc on els usuaris tenen permisos d'escriptura. Això serveix per a mantenir el sistema net i estable. :-) |
/root |
Aquest és el directori personal del superusuari |
/tmp |
/tmp és un directori on els programes hi desen els seus fitxers temporals |
/dev |
El directori /dev és un directori especial, donat que no conté fitxers en el sentit habitual de la paraula. En canvi, conté dispositius que són disponibles pel sistema. Al Linux (com al Unix), els dispositius es tracten com a fitxers. Podeu llegir i escriure a dispositius com si fossin fitxers. Per exemple, /dev/fd0 és la primera unitat de disquet, /dev/hda és el primer disc dur IDE. Tots els dispositius que el nucli entén, es representen aquí. |
/proc |
El directori /proc també és especial. Aquest directori no conté fitxers. De fet, aquest directori realment ni existeix :-D És completament virtual. El directori /proc conté petites "finestres" al propi nucli. Dins d'aquest directori, hi ha un grup d'entrades numerades que corresponen als processos que s'estan executant al sistema. A més, hi ha un nombre d'entrades numerades que permeten l'accés a la configuració actual del sistema. Moltes d'aquestes entrades es poden visualitzar. Proveu a visualitzar /proc/cpuinfo. Aquesta entrada us mostrarà el que opina el nicli del processador del vostre ordinador |
/mnt |
Finalment, trobem /mnt, un directori normal que es fa servir d'una manera especial. El directori /mnt es fa servir pels punts de muntatge. Com hem aprés abans, els diferents dispositius físics d'emmagatzematge (com els discs durs) són vinculats a l'arbre del sistema de fitxers a diferents llocs. Aquest procés de vincular un dispositiu a l'arbre es diu muntatge. Per a poder fer disponible un dispositiu, primer s'ha de muntar. |
Manipulant fitxers
Aquesta lliçó parlarà de les següents ordres:
cp - copiar fitxers i directoris
mv - moure i canviar de noms fitxers i directoris
rm - esborrar fitxers i directoris
mkdir - crear directoris
Aquestes quatre ordres són de les més emprades al Linux. Són les ordres bàsiques per a manipular tant fitxers com directoris.
Actualment, per a ser honest, algunes de les tasques que fan es poden fer de manera més fàcil amb un gestor gràfic de fitxers. Amb un gestor de fitxers, podeu arrossegar i deixar anar un fitxer d'un directori a un altre, tallar i enganxar fitxers, esborrar fitxers, etc. Així, per què hem d'utilitzar aquesta arcaica línia d'ordres?
La resposta és poder i flexibilitat. Tot i que és simple fer coses amb un gestor gràfic de fitxers les tasques complicades són més fàcils de fer amb un programa de línia d'ordres. Per exemple, com copiaries tots els fitxers HTML d'un directori a un altre, però només copiant els que no existeixen al directori destí o els que són més nous que les versions que hi ha al directori destí? Considerablement complicat amb un gestor de fitxers. Molt fàcil amb la línia d'ordres:
[papapep@awacs /home]$ cp -u *.html destí
Comodins
Abans de començar a parlar d'ordres, parlarem d'una funció de la línia d'ordres que les fa tant poderoses. Donat que la línia d'ordres fa servir molt els noms de fitxers, proporciona uns caràcters especials per ajudar-nos a especificar grups de noms. Aquests caràcters especials s'anomenen comodins. Els comodins us permeten seleccionar els noms de fitxers en funció de pautes de caràcters.
La següent taula llista els comodins i el que seleccionen:
Resum de comodins i els seus significats
Comodí |
Significat |
* |
Coincideix amb qualsevol caràcter |
? |
Coincideix amb qualsevol caràcter (però només un caràcter) |
[characters] |
Coincideix amb qualsevol joc de caràcters. El joc de caràcters es pot expressar com un interval de caràcters. (Per exemple, [A-Z] representa totes les lletres majúscules) |
[!characters] |
Coincideix amb qualsevol caràcter que no formi part del joc de caràcters |
Utilitzant comodins, es poden construir criteris de selecció de noms de fitxers molt sofisticats. Alguns exemples de pautes i amb què coincideixen:
Exemples de coincidències de pautes de comodins
Pauta |
Coincidència |
* |
Tots els noms de fitxer |
g* |
Tots els noms de fitxer que comencin amb el caràcter «g» |
b*.txt |
Tots els fitxers que comencin amb el caràcter «b» i que acabin amb els caràcters ".txt" |
Data??? |
Qualsevol fitxer que comenci amb els caràcters «Data» seguits per exactament 3 caràcters més |
[abc]* |
Qualsevol fitxer que comenci per «a» o per «b» o per «c» i que tinguin qualsevol cosa darrera |
[A-Z]* |
Qualsevol fitxer que comenci amb una lletra majúscula. Aquest és un exemple d'interval |
BACKUP.[0-9][0-9][0-9] |
Un altre exemple d'intervals. Aquesta pauta coincideix amb qualsevol nom de fitxer que comenci amb els caràcters «BACKUP.» i segueixi amb exactament 2 nombres |
[!a-z]* |
Qualsevol fitxer que no comenci amb una lletra minúscula |
Podeu utilitzar els comodins amb qualsevol ordre que accepti com a argument noms de fitxers.
cp
El programa cp copia fitxers i directoris. En la seva forma més simple, copia un únic fitxer en un altre únic fitxer:
[papapep@awacs /home]$ cp fitxer1 fitxer2
També es pot emprar per a copiar múltiples fitxers a un altre directori:
[papapep@awacs /home]$ cp fitxer1 fitxer2 fitxer3 directori
Altres exemples útils de cp i les seves opcions:
Exemples de l'ordre cp
Ordre |
Resultat |
cp fitxer1 fitxer2 |
Copia el contingut de fitxer1 dins fitxer2. Si fitxer2 no existeix, es crea; en cas contrari, fitxer2 es sobreescriu amb el contingut de fitxer1 |
cp -i fitxer1 fitxer2 |
Com a l'exemple anterior, però donat que s'ha especificat l'opció «-i» (interactiu), si el fitxer2 existeix es preguntarà a l'usuari abans de sobreescriure'l amb el contingut de fitxer1 |
cp fitxer1 dir1 |
Copia el contingut de fitxer1 (en un fitxer anomenat fitxer1) dins del directori dir1 |
cp -R dir1 dir2 |
Copia el contingut del directori dir1. Si el directori dir2 no existeix, es crearà. En cas contrari, es crea un directori anomenat dir1 dins del directori dir2 |
mv
L'ordre mv pot fer dues funcions diferents depenent de com s'empri. Pot moure un fitxer a un directori diferent, o pot canviar el nom a un fitxer o directori. Per a canviar el nom d'un fitxer, s'ha d'invocar així:
[papapep@awacs /home]$ mv nomdelfitxer1 nomdelfitxer2
Per a moure fitxers a un altre directori:
[papapep@awacs /home]$ mv fitxer1 fitxer2 fitxer3 directori
Exemples de mv i les seves opcions:
Exemples de l'ordre mv
Ordre |
Resultats |
mv fitxer1 fitxer2 |
Si el fitxer2 no existeix, aleshores es canvia el nom a fitxer1 passant-se a dir fitxer2. Si fitxer2 existeix, el seu contingut es reemplaça amb el de fitxer1 |
mv -i fitxer1 fitxer2 |
Com l'anterior, però al haver especificat l'opció «-i» (interactiu), si el fitxer2 existeix, es pregunta a l'usuari abans de sobreescriure'l amb el contingut de fitxer1 |
mv fitxer1 fitxer2 fitxer3 dir1 |
Els fitxers fitxer1, fitxer2, fitxer3 es mouran al directori dir1. dir1 ha d'existir, o l'ordre s'acabarà amb un error |
mv dir1 dir2 |
Si dir2 no existeix, dir1 passa a dir-se dir2. Si dir2 existeix, es crea un directori de nom dir1 dins el directori dir2 |
rm
L'ordre rm esborra (elimina) fitxers i directories.
[papapep@awacs /home]$ rm fitxer
També es pot emprar per a esborrar directoris:
[papapep@awacs /home]$ rm -r directori
Exemples de rm i les seves opcions:
Exemples de l'ordre rm
Ordre |
Resultats |
rm fitxer1 fitxer2 |
Esborra els fitxers fitxer1 i fitxer2 |
rm -i fitxer1 fitxer2 |
Com l'anterior, però al haver especificat l'opció «-i» (interactiu), es pregunta a l'usuari abans d'esborrar cada fitxer |
rm -r dir1 dir2 |
S'esborren els directoris dir1 i dir2 i tot el seu contingut |
|
El Linux no té una ordre per a desfer l'esborrat. Un cop heu esborrat un fitxer amb rm, aquest s'ha fos!! Podeu causar molt de mal al vostre sistema amb rm si no preneu precaucions, especialment amb els comodins. |
mkdir
L'ordre mkdir es fa servir per a crear directoris. Per utilitzar-la, simplement teclegeu:
[papapep@awacs /home]$ mkdir directori
Redirecció d'I/O (Entrada/Sortida)
En aquest capítol, explorarem una prestació molt potent que fan servir molts programes de línia d'ordres, anomenada "redirecció d'entrada/sortida". Com hem vist abans, moltes ordres, com ls, mostren el seu resultat pel monitor. Però no té per què ser així. Amb una sintaxi expecial, podem redirigir la sortida de moltes ordres a fitxers, dispositius i, fins i tot, a l'entrada d'una altra ordre.
Sortida estàndard
La majoria dels programes de línia d'ordres que mostren el seu resultat, ho fan enviant-lo a una utilitat anomenada «sortida estàndard». Per omissió, la sortida estàndard dirigeix el seu contingut al monitor. Per a redirigir la sortida estàndard a un fitxer, es fa servir el caràcter «>» de la següent manera:
[papapep@awacs /home]$ ls > llista_de_fitxers.txt
En aquest exemple, la ordre ls s'executa i els resultats es desen en un fitxer anomenat llista_de_fitxers.txt. Com que la sortida de ls es redirigeix al fitxer, no apareix cap resultat pel monitor. Cada cop que repetiu l'ordre, es sobreescriu el fitxer llista_de_fitxers.txt (des del principi) amb la sortida de l'ordre ls. Si, en canvi, voleu afegir els nous resultats al fitxer, empreu «>>» així:
[papapep@awacs /home]$ ls >> llista_de_fitxers.txt
Quan s'afegeixen els resultats, les noves dades s'afegiran al final del fitxer, fent-lo més gran cada cop que es repeteixi l'ordre. Si el fitxer no existeix quan intenteu afegir-hi la sortida estàndard, es crearà.
Entrada estàndard
Moltes ordres accepten dades d'una utilitat anomenada "entrada estàndard". Per omissió, l'entrada estàndard agafa el seu contingut del teclat però, com la sortida estàndard, pot ser redireccionada.
Per a redirigir l'entrada estàndard d'un fitxer en comptes del teclat, es fa servir el caràcter «<» de la següent manera:
[papapep@awacs /home]$ sort < llista_de_fitxers.txt
A l'exemple anterior, hem emprat l'ordre sort per a processar el contingut del fitxer llista_de_fitxers.txt. El resultat es mostra pel monitor donat que la sortida estàndard no està redirigida en aquest exemple. Podriem haver redirigit la sortida estàndard a un altre fitxer així:
[papapep@awacs /home]$ sort < llista_de_fitxers.txt > llista_de_fitxers_ordenada.txt
Com veieu, una ordre pot tenir tant l'entrada com la sortida redirigides. Tingueu en compte que l'ordre de les redireccions no importa. L'únic requisit és que els operadors de redirecció (els «<» i «>») han d'aparèixer després de les altres opcions i arguments de l'ordre.
Conductes
De llarg, la cosa més útil i potent que podeu fer amb les redireccions d'entrada/sortida, és connectar diverses ordres amb el que s'anomena conductes. Amb els conductes, la sortida estàndard d'una ordre va a parar a l'entrada estàndard d'una altra.
Aquest és el meu favorit:
[papapep@awacs /home]$ ls -l | less
En aquest exemple, la sortida de l'ordre ls s'envia a less. Emprant aquest truc "|less", podeu paginar la sortida de qualsevol ordre. Faig servir aquesta tècnica constantment.
Connectant diverses ordres, podeu assolir resultats sorprenents. Aquí hi ha alguns exemples que voldreu provar:
Exemples d'ordres que s'utilitzen juntes amb conductes
Ordre |
Què fa |
ls -lt | head |
Mostra els 10 fitxers més nous dins el directori actual |
du | sort -nr |
Mostra un llistat de directoris i quant espai ocupen, ordenats de major a menor |
find . -type f -print | wc -l |
Mostra la quantitat total de fitxers a l'actual directori de treball i tots els seus directoris |
Filtres
Una mena de programes que es poden fer servir amb els conductes s'anomenen filtres. Els filtres agafen l'entrada estàndard, hi treballen i envien el resultat a la sortida estàndard. D'aquesta manera, es poden fer servir per a processar informació de maneres molt potents.
Alguns programes habituals que poden fer de filtres:
Ordres de filtre habituals
Programa |
Què fa |
sort |
Ordena l'entrada estàndard i envia el resultat ordenat a la sortida estàndard |
uniq |
Donat un flux de dades ordenat de l'entrada estàndard, esborra les línies duplicades (p.ex., s'assegura que dada línia és única) |
grep |
Examina cada línia de dades que rep de l'entrada estàndard i mostra cada línia que coincideix amb una pauta de caràcters |
fmt |
Llegeix text de l'entrada estàndard i la mostra formatada a la sortida estàndard |
pr |
Agafa text de l'entrada estàndard i el pagina amb trencaments de pàgina, capçaleres i peus de pàgina, deixant-lo preparat per a imprimir |
head |
Mostra les primeres línies de la seva entrada. És útil per a veure l'inici d'un fitxer |
tail |
Mostra les últimes línies de la seva entrada. És útil per a, per exemple, veure les últimes entrades d'un fitxer de registre |
tr |
Tradueix caràcters. Es pot fer servir per a fer tasques com conversions majúscules/minúscules o canviar caràcters de final de línia d'un tipus a un altre (per exemple, convertir fitxers de text DOS a fitxers de text estil Unix) |
sed |
Editor de flux. Pot fer traduccions més complexes que tr |
awk |
Un llenguatge de programació complet dissenyat per a construir filtres. Extremadament poderós |
|
1. Imprimir des de la línia d'ordres. |
2. Visualitzant el contingut de fitxers tar. |
Permisos
El sistema operatiu Unix (i també el Linux) es diferencia d'altres entorns de computació en que no només és un sistema multitasca sinó que també és un sistema multiusuari.
Què significa això exactament? Significa que més d'un usuari pot treballar amb l'ordinador simultàniament. Tot i que el vostre ordinador només té un teclat i un monitor, el pot utilitzar més d'un usuari. Per exemple, si el vostre ordinador és dins d'una xarxa, o a l'internet, els usuaris remots es poden connectar per telnet o ssh (secure shell) i treballar a l'ordinador.
De fet, els usuaris remots poden executar aplicacions gràfiques i tenir la seva sortida a l'ordinador remot. El sistema X Windows ho contempla. La capacitat multiusuari de Unix no és una «innovació», sinó una característica que és profundament arrelada al disseny del sistema operatiu. Si recordeu l'entorn en què es va crear Unix, això s'entén perfectament. Anys enrere, abans que els ordinadors fossin «personals», aquests eren grans, cars i centralitzats. Un sistema típic d'una universitat consistia en grans ordinadors centrals ubicats a algun edifici del campus i amb terminals per tot arreu del mateix, tots connectats amb l'ordinador central. L'ordinador permetia molts usuaris simultanis.
Per a poder-ho portar a la pràctica, s'havia d'idear un mètode per a protegir els usuaris l'un de l'altre. Evidentment, no es podia permetre que l'acció d'un usuari bloquegés l'ordinador, ni es podia permetre que un usuari interferís amb els fitxers d'altres usuaris.
Aquest capítol parlarà de les següents ordres:
- chmod - modificar els drets d'accés a fitxers
- su - esdevenir temporalment el superusuari
- chown - canviar el propietari d'un fitxer
- chgrp - canviar el grup propietari d'un fitxer
Permisos de fitxers
El Linux fa servir el mateix esquema de permisos que el Unix. Cada fitxer i directori al vostre sistema té assignats uns drets d'accés per al propietari del fitxer, els usuaris membres d'un grup donat i la resta del món. Els drets es poden assignar per a llegir un fitxer, escriure'l i executar-lo (p. ex. executar el fitxer com un programa).
Per a veure els permisos que té un fitxer, podem emprar l'ordre ls de la següent manera:
[papapep@awacs /home]$ ls -l nom_del_fitxer -rw-rw-r-- 1 papapep papapep 1097374 Sep 26 18:48 nom_del_fitxer
Podem determinar moltes coses examinant el resultat d'aquesta ordre:
- El fitxer «nom_del_fitxer» té com a propietari l'usuari «papapep»
- L'usuari «papapep» té drets de lectura i escriptura en aquest fitxer
- El fitxer és del grup «papapep»
- Els membres del grup «papapep» també poden llegir i escriure aquest fitxer
- La resta d'usuaris poden llegir aquest fitxer
Provem un altre exemple. Mirarem el programa bash el qual és al directori /bin:
[papapep@awacs /home]$ ls -l /bin/bash
-rwxr-xr-x 1 root root 316848 Feb 27 2000 /bin/bash
Podem veure:
- El propietari del fitxer «/bin/bash» és l'usuari «root»
- El superusuari hi té drets de lectura, escriptura i execució
- El grup propietari del fitxer és «root»
- Els membres del grup «root» també poden llegir-lo i executar-lo
- La resta d'usuaris poden llegir i executar aquest fitxer
Al següent diagrama, veurem com s'interpreta la primera part del llistat. Consisteix en un caràcter que indica el tipus de fitxer, seguit de tres jocs de caràcters que indiquen els drets de lectura, escriptura i execució per al propietari, grup i la resta del món.
chmod
L'ordre chmod es fa servir per a canviar els permisos d'un fitxer o directori. Per a emprar-la, s'especifiquen els permisos que se li volen assignar, i el fitxer o fitxers que es volen modificar. Hi ha dues maneres d'especificar els permisos, però només en veurem una.
És fàcil pensar en els permisos com en una sèrie de bits (que és com l'ordinador els veu).
Així funcionen:
rwx rwx rwx = 111 111 111 rw- rw- rw- = 110 110 110 rwx --- --- = 111 000 000
rwx = 111 en binari = 7 rw- = 110 en binari = 6 r-x = 101 en binari = 5 r-- = 100 en binari = 4
Ara, si representeu cadascun d'aquests tres jocs de permisos (propietari, grup i altres) com un únic dígit, tenim una manera interessant d'expressar-los. Per exemple, si volem que un fitxer pugui ser llegit i escrit pel propietari, però no volem que cap altre usuari hi tingui accés, farem:
[papapep@awacs /home]$ chmod 600 nom_del_fitxer
Seguidament, mostrem una taula de nombres que contempla les configuracions habituals. Les que comencen per «7» es fan servir amb altres programes (donat que permeten l'execució) i la resta són per altre tipus de fitxers.
Valor |
Significat |
777 |
(rwxrwxrwx) No hi ha cap mena de restricció. Qualsevol pot fer qualsevol cosa. Normalment no és el que haurem de tenir. |
755 |
(rwxr-xr-x) El propietari del fitxer pot llegir-lo, escriure'l i executar-lo. Els altres poden llegir-lo i executar-lo. Aquesta configuració és habitual pels programes dels usuaris. |
700 |
(rwx------) El propietari del fitxer podrà llegir-lo, escriure'l i executar-lo. Ningú més podrà fer res amb aquest fitxer. Aquesta configuració és útil pels programes que només ha de fer servir el seu propietari i s'han de mantenir privats pels altres |
666 |
(rw-rw-rw-) Tots els usuaris poden llegir i escriure el fitxer. |
644 |
(rw-r--r--) El propietari pot llegir i escriure el fitxer i els altres només poden llegir-lo. Una configuració comuna per a fitxers de dades que tothom pot llegir però només el propietari pot modificar. |
600 |
(rw-------) el propietari pot llegir i escriure el fitxer. Tots els altres usuaris no hi tenen cap accés. Una configuració comuna per a fitxers de dades que el propietari vol mantenir privats. |
Permisos de directoris
L'ordre chmod també es pot fer servir per a controlar els permisos d'accés als directoris. Els esquemes de permisos dels directoris funcionen, bàsicament, com els dels fitxers. Tot i això, els permisos d'execució es fan servir de manera diferent. Proporcionen control als accesos de llistat de fitxers i altres coses.
Algunes configuracions útils pels directoris:
Valor |
Significat |
777 |
(rwxrwxrwx) Cap mena de restricció. Qualsevol pot llistar els fitxers, crear-ne de nous al directori i esborrar fitxers del directori. Normalment, és una bona configuració. |
755 |
(rwxr-xr-x) El propietari del directori té ple accés. Tot els altres poden llistar el directori, però no poden crear-hi ni esborrar-hi fitxers. Aquesta configuració és comuna per a directoris que es volen compartir amb altres usuaris. |
700 |
(rwx------) El propietari del directori té ple accés. Ningú més té cap dret. Aquesta configuració és útil per als directoris que només pot fer servir el propietari i s'han de mantenir privats per la resta d'usuaris. |
Esdevenint el superusuari durant una estona
Sovint és útil esdevenir el superusuari per a fer tasques importants d'administració del sistema, però tal i com us he advertit abans (i no només ho dic jo!!), no haurieu de mantenir-vos gaire estona connectats com a superusuari. Afortunadament, hi ha un programa que dóna accés temporal amb privilegis de superusuari. Aquest programa es diu su (abreviació de «superusuari») i es pot fer servir en aquells casos que necessiteu ser el superusuari per a unes fer unes quantes tasques. Per a esdevenir el superusuari, simplement teclejeu la ordre su.
Se us demanarà la contrassenya del superusuari:
[papapep@awacs /home]$ su Password: [root@awacs /home]#
Després d'executar l'ordre «su», teniu una nova sessió de terminal com a superusuari. Per a sortir de la sessió de superusuari, teclegeu exit i tornareu a la sessió anterior.
Canviant el propietari d'un fitxer
Podeu canviar el propietari d'un fitxer amb l'ordre chown. Un exemple: Suposem que volem canviar l'usuari d'el fitxer un_fitxer de «papapep» a «unaltre». Podríem fer:
[papapep@awacs papapep]$ su Password: [root@awacs root]# chown unaltre un_fitxer [root@awacs root]# exit [papapep@awacs home]$
Fixeu-vos en que per a poder canviar el propietari d'un fitxer, heu de ser el superusuari. Per a fer això, en el nostre exemple hem fet servir la ordre su i, aleshores, hem executat chown. Finalment hem teclejat exit per a tornar a la nostra sessió anterior.
chown funciona de la mateixa manera amb els directoris i amb els fixers.
Canviant el grup propietari
El grup propietari d'un fitxer o directori es pot canviar amb chgrp. Aquesta ordre es fa servir així:
[papapep@awacs home]$ chgrp nou_grup algun_fitxer
A l'exemple anterior, hem canviat el grup propietari del fitxer algun_fitxer del seu grup anterior a «nou_grup». Heu de ser el propietari del fitxer o directori per a poder fer un chgrp .
Control de tasques
Al capítol anterior, hem vist algunes de les implicacions del Linux en un sistema operatiu multiusuari. En aquest, examinarem la natura multitasca del Linux i com es gestiona això amb l'interfície de l'intérpret d'ordres.
Com en qualsevol sistema operatiu multitasca, el Linux executa simultàniament diversos processos. Bé, realment semblen simultanis. A la pràctica, un ordinador amb un sol processador només pot executar una tasca cada cop, però el nicli Linux ho gestiona donant un torn a cada procés i sembla que s'executin simultàniament.
Hi ha diverses ordres que es poden fer servir per a controlar els processos. Són:
ps - llista els processos que s'estan executant al sistema
kill - envia un senyal a un o més d'un procés (normalment per a «kill» (matar-lo))
jobs - un sistema alternatiu per a llistar els vostres propis processos
bg - per a pasar un procés a segon pla
fg - per a passar un procés a primer pla
Un exemple pràctic
Tot i que sembli que aquest apartat és considerablement obscur, pot ser molt pràctic per a l'usuari mig que bàsicament treballa amb l'entorn gràfic. Podríeu no saber-ho, però la majoria (no tots) dels programes gràfics es poden executar des de la línia d'ordres. Aquí teniu un exemple: hi ha un petit programa anomenat xload que ve amb el sistema X Windows el qual mostra un gràfic que representa la càrrega del sistema.
Podeu executar aquest programa teclejant el següent:
[papapep@awacs home]$ xload
Adoneu-vos que apareix una petita finestra de l'xload i comença a mostrar una gràfica de la càrrega del sistema. Fixeu-vos també que l'indicador de la línia d'ordres no torna a aparèixer després d'executar el programa. Si tanqueu la finestra de l'xload, el programa es tanca i l'indicador torna a veure's.
Passant un programa a segon pla
Ara, de cara a fer-nos la vida una mica més fàcil, executarem un altre cop el programa xload, però aquest cop ho farem en un segon pla així tornarà l'indicador. Per a fer això, l'executarem així:
[papapep@awacs home]$ xload & [1] 1223 [papapep@awacs home]$
En aquest cas, l'indicador tornarà perquè el procés s'ha enviat al segon pla.
Ara imagineu que oblideu emprar el símbol «&» per a posar el programa en segon pla. Encara podem solucionar-ho. Teclegeu «control+Z» i el procés posarà en suspensió. El procés encara existeix, però resta aturat. Per a tornar a fer funcionar el procés en segon pla, teclejeu l'ordre bg (abreviació de «background» (segon pla)).
Aquí en teniu un exemple:
[papapep@awacs home]$ xload [2]+ Stopped xload [papapep@awacs home]$ bg [2]+ xload &
Llistant els vostres processos
Ara que tenim un procés en segon pla, seria útil mostrar una llista dels processos que hem llençat. Per a fer-ho, podem emprar tant l'ordre jobs com la més potent ps.
[papapep@awacs home]$$ jobs [1]+ Running xload & [papapep@awacs home]$$ ps PID TTY TIME CMD 1211 pts/4 00:00:00 bash 1246 pts/4 00:00:00 xload 1247 pts/4 00:00:00 ps [papapep@awacs home]$
Matant un procés
Suposeu que teniu un programa que no respon, com us el treieu de sobre? Feu servir l'ordre kill, per suposat. Anem a provar això amb l' xload. Primer, necessiteu identificar el procés que voleu matar. Podeu emprar tant jobs com ps. Si feu servir jobs, obtindreu un número de tasca. Amb ps, tindreu un identificador de procés (PID). Ho farem de les dues maneres:
[papapep@awacs home]$ xload & [1] 1292 [papapep@awacs home]$ jobs [1]+ Running xload & [papapep@awacs home]$ kill %1 [papapep@awacs home]$ xload & [2] 1293 [1] Terminated xload [papapep@awacs home]$ ps PID TTY TIME CMD 1280 pts/5 00:00:00 bash 1293 pts/5 00:00:00 xload 1294 pts/5 00:00:00 ps [papapep@awacs home]$ kill 1293 [2]+ Terminated xload [papapep@awacs home]$
Una mica més sobre kill
Tot i que kill es fa servir per a matar (kill en anglès) processos, el seu propòsit real és el d'enviar senyals als processos. La majoria de cops el senyal es fa servir per a dir al procés que plegui, però es pot fer més que això. Els programes (sempre que estiguin ben fets) escolten els senyals del sistema operatiu per a contestar-los, sovint per a permetre una manera elegant d'aturar-los. Per exemple, un editor de text podria escoltar per algun senyal que indiqui que l'usuari s'està desconnectant, o que l'ordinador s'està apagant. Quan rep el senyal, desa el treball en curs abans de tancar-se. L'ordre kill pot enviar diversos senyals als processos. Teclejant:
kill -l
us mostrarà un llistat dels senyals que admet. La majoria són considerablement obscurs, però n'hi ha molts d'útils de saber:
Senyal # |
Nom |
Descripció |
1 |
SIGHUP |
Senyal de retenció. Els programes poden escoltar aquest senyal i actuar (o no) en conseqüència. |
2 |
SIGINT |
Senyal d'interrupció. Aquest senyal s'envia als processos per a aturar-los. Els programes poden processar-lo i actuar en conseqüència. També podeu provocar directament aquest senyal teclejant directament a la finestra de terminal «control+c» mentre s'executa el programa. |
15 |
SIGTERM |
Senyal d'acabament. Aquest senyal s'envia als processos per a acabar-los. Els programes també el poden processar i actuar en funció d'ell. Podeu provocar aquest senyal directament teclejant «control+c» a la finestra del terminal on el programa s'està executant. Aquest és el senyal per omissió que envia l'ordre kill si no s'especifica cap senyal. |
9 |
SIGKILL |
Senyal de defunció. Aquest senyal causa que el nucli Linux acabi immediatament el procés. Els programes no escolten aquest senyal. |
Ara suposem que teniu un programa que s'ha penjat sense possibilitats de recuperar-lo i us en voleu desfer. Heu de fer això:
Empreu l'ordre ps per a obtenir l'identificador del procés (PID) que voleu acabar.
Executeu una ordre kill pel PID que heu obtingut.
- Si el procés refusa acabar (p. ex. ignora el senyal), envieu senyals més forts fins que pari.
[papapep@awacs home]$ ps x PID TTY STAT TIME COMMAND 2931 pts/5 SN 0:00 netscape [papapep@awacs home]$ kill -SIGTERM 2931 [papapep@awacs home]$ kill -SIGKILL 2931
A l'exemple anterior he emprat l'ordre kill en la forma oficial. A la pràctica, és més habitual fer-ho de la següent manera donat que el senyal per defecte enviat per kill és SIGTERM i kill també pot emprar el número de senyal per comptes del nom de senyal: Si el procés no s'acaba, forceu-lo amb un senyal SIGKILL: I ja hem acabat!!! Això conclou la sèrie de lliçons «Aprenent l'intèrpret d'ordres». A la següent sèrie, «Escrivint scripts de l'intèrpret d'ordres», veurem com es poden automatitzar tasques des del terminal.
però no recordo si això ho vaig modificar jo o si ja venia «de sèrie» La primera xifra indica el propietari, la segona el grup i la tercera la resta del món mundial Equivaldria a rwxrwxrwx en el format que explica el tutorial. Aquests permisos donarien accés global a tothom que tingui compte a l'ordinador a aquest fitxer (molt poc recomanable). b) 755 (4+2+1 per l'usuari, 4+1 pel grup, 4+1 per la resta) Equivaldria a rwxr-xr-x en el format que explica el tutorial. Permetrien accés total al propietari, lectura i execució al grup i a la resta del món. c) 700 (4+2+1 per l'usuari, res per al grup i res per a la resta) Equivaldria a rwx------ en el format que explica el tutorial. Només permetrien l'accés al propietari del fitxer, restringint-lo a la resta d'usuaris. Més exemples: A la imatge 14 vèiem: -rw------- 1 papapep papapep 576 Apr 17 1998 weather.txt Això en numèric seria 600 (4+2 per al propietari i res ni per al grup ni per a la resta. drwxr-xr-x 6 papapep papapep 1024 Oct 9 1999 web_page Apart que és un directori (veieu la «d» just abans de la primera «r»?) En numèric és 755. -rw-rw-r-- 1 papapep papapep 276480 Feb 11 20:41 web_site.tar En numèric, 664. [papapep@awacs home]$ kill 2931
[papapep@awacs home]$ kill -9 2931
Notes del traductor
[4] Trobareu molt sovint documents on els drets d'accés als fitxers es defineixen de manera numèrica amb un grup de 3 xifres:
[5] Recordeu que, en última instància, els ordinadors tracten les dades, per complexes que siguin, en format binari: inacabables combinacions d'uns (1) i zeros (0). [6] això ho diu l'autor. Ja els agradaria als de Redmond tenir un sistema de gestió de paquets i, de rebot, de biblioteques mínimament semblant als del Linux. Aquest nombres es generen a partir de la següent pauta: 4 = dret de lectura 2 = dret d'escriptura 1 = dret d'execució La combinació d'aquestes tres xifres donarà els drets d'accés al fitxer. Uns exemples: a) 777 (4+2+1 per l'usuari, 4+2+1 pel grup i 4+2+1 per la resta)
JosepSànchez/documentació/interpret_comandes (last edited 2008-08-06 17:00:33 by localhost)