Amb l'entorn ja muntat a la lliçó anterior —Bash 5.x, el teu ~/veloz-ops creat i el PATH configurat— ha arribat el moment de moure't pel sistema amb desimboltura. Navegar per la línia d'ordres no és cap tràmit: és l'habilitat que sosté tota la resta. Quan al Mòdul 9 el teu script hagi de localitzar /var/log/veloz/acces.log des de qualsevol directori, o quan a les tres de la matinada hagis d'esbrinar què està omplint el disc de srv-veloz-01, tot es reduirà a moure't i mirar amb precisió. En aquesta lliçó aprendràs l'anatomia d'una ordre, el mapa del sistema de fitxers de Linux i les eines per recórrer-lo i inspeccionar-lo.
Contingut
- Anatomia del prompt i d'una ordre
- L'arbre de directoris de Linux
- Rutes absolutes i relatives
pwd: on soccd: moure'sls: mirar- Interpretar la sortida de
ls -l tree: veure l'estructura d'un cop d'ullpushdipopd: pila de directoris- Inspeccionar sense obrir:
file,stat,duidf - Recorregut guiat per la infraestructura de Veloz Envíos
- Anatomia del prompt i d'una ordre
1.1 El prompt
El prompt és la línia que Bash imprimeix esperant les teves ordres. Amb la configuració que vam deixar a la lliçó anterior té aquesta forma:
Cada peça informa d'alguna cosa:
| Part | Significat |
|---|---|
joan |
Usuari amb qui treballes |
@ |
Separador |
srv-veloz-01 |
Màquina on ets |
: |
Separador |
~/veloz-ops |
Directori actual (~ és la teva carpeta personal) |
$ |
Usuari normal. Si fossis root, aquí hi veuries # |
Aquest darrer caràcter mereix atenció: # significa que tens permisos totals i que un error pot ser irreversible. Acostuma't a mirar-lo abans d'executar res destructiu.
1.2 Les parts d'una ordre
Una ordre en Bash es descompon així:
- Ordre: el programa que s'ha d'executar (
ls). - Opcions (o flags): modifiquen el comportament. Comencen per guionet.
- Arguments: allò sobre el qual actua l'ordre.
Les opcions tenen dos formats que convé distingir:
| Format | Exemple | Característiques |
|---|---|---|
| Curt | -l, -h |
Una lletra. Es poden agrupar: -lh equival a -l -h |
| Llarg | --human-readable |
Paraula completa, més llegible. No s'agrupen |
Aquestes quatre formes són equivalents:
ls -l -h /var/log/veloz
ls -lh /var/log/veloz
ls --format=long --human-readable /var/log/veloz
ls -l --human-readable /var/log/velozRegla pràctica: fes servir opcions curtes quan teclegis de manera interactiva i llargues quan escriguis scripts. En un script, --human-readable s'explica sol; -h obliga a consultar el manual (i en altres ordres -h significa «ajuda», cosa que indueix a error).
Quan una opció llarga porta valor, s'escriu amb = o amb espai:
I un detall que salva situacions estranyes: -- marca el final de les opcions. Si algun dia tens un fitxer anomenat -informe.txt, ls -- -informe.txt el tracta com a argument i no pas com a opció.
- L'arbre de directoris de Linux
A Linux no hi ha lletres d'unitat. Tot penja d'un únic origen: l'arrel, /. Els discos addicionals, els USB o les particions de xarxa es «munten» en algun punt d'aquest arbre.
graph TD
R["/"] --> etc["/etc<br/>configuració"]
R --> var["/var<br/>dades variables"]
R --> srv["/srv<br/>dades de serveis"]
R --> home["/home<br/>usuaris"]
R --> tmp["/tmp<br/>temporals"]
R --> usr["/usr<br/>programes"]
var --> log["/var/log"]
log --> veloz["/var/log/veloz<br/>acces.log, app.log"]
srv --> sv["/srv/veloz/dades<br/>enviaments.csv"]
home --> joan["/home/joan (~)"]
joan --> ops["~/veloz-ops<br/>bin lib etc logs"]
usr --> bin["/usr/bin<br/>ls, grep, date..."]
Els directoris que faràs servir cada dia:
| Directori | Què conté | Exemple a Veloz Envíos |
|---|---|---|
/ |
L'arrel de tot | — |
/etc |
Fitxers de configuració del sistema | /etc/nginx/, /etc/passwd |
/var |
Dades que varien durant l'operació | Registres, cues, memòries cau |
/var/log |
Registres del sistema i de les aplicacions | /var/log/veloz/acces.log |
/srv |
Dades servides pels serveis de la màquina | /srv/veloz/dades/enviaments.csv |
/home |
Carpetes personals dels usuaris | /home/joan, abreujat ~ |
/tmp |
Temporals; s'esborra en reiniciar | Fitxers intermedis d'scripts |
/usr/bin |
Programes del sistema per a tots els usuaris | ls, grep, date, awk |
/usr/local/bin |
Programes instal·lats manualment per l'administrador | Eines pròpies |
/opt |
Programari de tercers autocontingut | Agents de monitoratge |
/root |
Carpeta personal del superusuari | — |
/proc |
Sistema de fitxers virtual amb informació del kernel | /proc/cpuinfo, /proc/meminfo |
/dev |
Dispositius representats com a fitxers | /dev/null, /dev/sda |
Aquesta organització no és arbitrària: la defineix el FHS (Filesystem Hierarchy Standard). Conèixer-la et permet endevinar on són les coses en qualsevol servidor Linux, encara que no l'hagis vist mai. Si et diuen «revisa els registres de l'aplicació», ja saps que començaràs mirant a /var/log.
- Rutes absolutes i relatives
Una ruta és l'adreça d'un fitxer o directori. Hi ha dues maneres d'expressar-la.
- Ruta absoluta: comença per
/i descriu el camí complet des de l'arrel. És inequívoca i funciona des de qualsevol lloc./var/log/veloz/acces.log - Ruta relativa: no comença per
/i s'interpreta a partir del directori actual.veloz/acces.log (si ets a /var/log)
Bash entén, a més, quatre dreceres fonamentals:
| Símbol | Significat | Exemple |
|---|---|---|
. |
El directori actual | ./informe.sh |
.. |
El directori pare | cd .. |
~ |
La teva carpeta personal (/home/joan) |
cd ~/veloz-ops |
- |
El directori anterior (on eres abans) | cd - |
Exemples amb el directori actual a /var/log/veloz:
| Escrius | Es resol com |
|---|---|
acces.log |
/var/log/veloz/acces.log |
./acces.log |
/var/log/veloz/acces.log |
../syslog |
/var/log/syslog |
../../log/veloz |
/var/log/veloz |
~/veloz-ops/bin |
/home/joan/veloz-ops/bin |
/srv/veloz/dades |
/srv/veloz/dades |
Quan cal fer servir cadascuna? La regla professional és clara:
- Als scripts, rutes absolutes. Un script de
veloz-opsllançat per cron pot arrencar des de qualsevol directori; si fa servir rutes relatives, fallarà de manera imprevisible. - De manera interactiva, relatives. Es tecleja molt menys.
La drecera - mereix una menció especial perquè estalvia moltíssim temps:
cd - et retorna al directori anterior i, a més, imprimeix on ha anat. Alternar entre dues ubicacions llunyanes es converteix en una sola tecla.
pwd: on soc
pwd: on socpwd (print working directory) respon la pregunta més bàsica.
Sembla innecessari si el prompt ja ho mostra, però no ho és: hi ha prompts que només ensenyen el nom curt del directori (\W en lloc de \w), i en un script no hi ha prompt en absolut.
Té un matís interessant amb els enllaços simbòlics:
-P (physical) mostra la ruta real, resolent els enllaços simbòlics. Per defecte, pwd mostra la ruta lògica, és a dir, el camí pel qual hi vas arribar. Si /srv/veloz/dades fos en realitat un enllaç a /mnt/dades-veloz, pwd diria la primera i pwd -P la segona. En diagnòstics d'espai al disc, aquesta diferència importa.
cd: moure's
cd: moure'scd (change directory) canvia el directori actual. Les seves formes més útils:
cd /var/log/veloz # ruta absoluta
cd veloz # ruta relativa (des de /var/log)
cd .. # pujar un nivell
cd ../.. # pujar dos nivells
cd ~ # anar a la teva carpeta personal
cd # idèntic a 'cd ~'
cd - # tornar al directori anterior
cd ~/veloz-ops/bin # combinant ~ i ruta relativaUna seqüència realista de treball a srv-veloz-01:
Fixa't en el detall: cd ../.. des de /var/log/veloz puja dos nivells i aterra a /var, no pas a l'arrel. Cada .. retrocedeix exactament un esglaó.
Un apunt tècnic important que s'entendrà del tot a la lliçó següent: cd no és cap programa, és un builtin de Bash. Ho ha de ser. Si fos un executable extern, es llançaria com a procés fill, canviaria el seu directori i moriria, deixant el teu intacte. Per això man cd no troba res i cal fer servir help cd; ho veurem a 01-05.
Autocompletat, que aquí és imprescindible: escriu cd /var/log/vel i prem Tab. Bash completa fins a /var/log/veloz/. Si hi ha diverses opcions possibles, prem Tab dues vegades per llistar-les. Les dreceres de teclat completes es veuen a 02-06, però aquesta fes-la servir des d'avui: redueix dràsticament els errors de teclejat.
ls: mirar
ls: mirarls llista el contingut d'un directori. És probablement l'ordre que més cops executaràs a la vida.
Sense arguments, llista el directori actual. Li'n pots indicar un altre:
6.1 Les opcions que faràs servir de debò
| Opció | Nom llarg | Què fa |
|---|---|---|
-l |
--format=long |
Format llarg: permisos, propietari, mida, data |
-a |
--all |
Mostra també els fitxers ocults (els que comencen per .) |
-A |
--almost-all |
Com -a però sense . ni .. |
-h |
--human-readable |
Mides en K, M, G en lloc de bytes (requereix -l) |
-t |
--sort=time |
Ordena per data de modificació, més recent primer |
-r |
--reverse |
Inverteix l'ordre |
-S |
--sort=size |
Ordena per mida, més gran primer |
-R |
--recursive |
Baixa per tots els subdirectoris |
-d |
--directory |
Mostra el directori en si, no pas el seu contingut |
-i |
--inode |
Mostra el número d'inode |
-F |
--classify |
Hi afegeix un sufix segons el tipus (/ directori, * executable, @ enllaç) |
Les combinacions que se't convertiran en reflex:
total 47M -rw-r--r-- 1 www-data adm 28M ago 3 10:14 acces.log -rw-r--r-- 1 www-data adm 9,4M ago 2 23:59 acces.log.1 -rw-r--r-- 1 veloz veloz 6,2M ago 3 10:15 app.log -rw-r--r-- 1 veloz veloz 2,1M ago 2 23:59 app.log.1 -rw-r--r-- 1 veloz veloz 1,3M ago 3 09:02 veloz-api.log
Ordenat per data: el primer és el que s'ha modificat més recentment. Aquesta és l'ordre estrella quan alguna cosa acaba de fallar: et diu immediatament quin registre s'està escrivint ara mateix.
Ordenat per mida de més gran a més petit: l'ordre estrella quan el disc s'omple.
total 68 drwxr-xr-x 8 joan joan 4096 ago 3 09:30 . drwxr-xr-x 3 root root 4096 jul 12 08:00 .. -rw------- 1 joan joan 2814 ago 3 10:02 .bash_history -rw-r--r-- 1 joan joan 3841 ago 3 09:28 .bashrc -rw-r--r-- 1 joan joan 807 jul 12 08:00 .profile drwx------ 2 joan joan 4096 jul 12 08:05 .ssh drwxrwxr-x 6 joan joan 4096 ago 3 09:30 veloz-ops
Aquí apareix un concepte clau: a Linux, un fitxer és ocult simplement perquè el seu nom comença per punt. No hi ha cap atribut especial. Per això ~/.bashrc no es veu amb un ls normal. Els directoris . i .. que hi apareixen són el mateix directori i el seu pare.
- Interpretar la sortida de
ls -l
ls -lAquesta és una d'aquelles habilitats que es fan servir cada dia al llarg de tota una carrera professional. Prenguem-ne una línia:
Es descompon en set camps:
| # | Valor | Significat |
|---|---|---|
| 1 | -rw-r--r-- |
Tipus de fitxer i permisos |
| 2 | 1 |
Nombre d'enllaços durs |
| 3 | veloz |
Usuari propietari |
| 4 | veloz |
Grup propietari |
| 5 | 6291456 |
Mida en bytes (amb -h, 6,0M) |
| 6 | ago 3 10:15 |
Data i hora de l'última modificació |
| 7 | app.log |
Nom |
El primer camp es llegeix en quatre blocs:
El primer caràcter indica el tipus:
| Caràcter | Tipus |
|---|---|
- |
Fitxer regular |
d |
Directori |
l |
Enllaç simbòlic |
c |
Dispositiu de caràcters (p. ex. /dev/null) |
b |
Dispositiu de blocs (p. ex. un disc) |
p |
Canonada amb nom (FIFO) |
s |
Socket |
Els tres blocs següents són permisos: r llegir, w escriure, x executar; un guionet significa que aquest permís no està concedit. Així, -rw-r--r-- es llegeix: fitxer regular, el propietari pot llegir i escriure, el grup només llegir, la resta només llegir.
Aquesta anàlisi explica coses pràctiques de manera immediata. Si mires d'escriure a /var/log/veloz/app.log sent joan i el fitxer és de veloz amb permisos -rw-r--r--, obtindràs Permís denegat. I si un script teu no arrenca amb ./script.sh, el primer que miraràs és si té la x. Els permisos, com canviar-los i la notació octal s'estudien en profunditat a la lliçó 02-03; aquí només cal que els sàpigues llegir.
Un cas especial que veuràs molt en un servidor:
La l inicial i la fletxa -> indiquen un enllaç simbòlic: un fitxer que apunta a un altre. Els permisos rwxrwxrwx d'un enllaç són sempre així i no volen dir res; els que manen són els del destí.
tree: veure l'estructura d'un cop d'ull
tree: veure l'estructura d'un cop d'ulltree dibuixa la jerarquia de directoris. No ve instal·lat per defecte en molts sistemes:
Opcions útils:
| Opció | Efecte |
|---|---|
-L n |
Limita la profunditat a n nivells |
-d |
Només directoris |
-a |
Inclou els ocults |
-h |
Mostra mides llegibles |
-f |
Mostra la ruta completa de cada element |
Limitar la profunditat amb -L és gairebé obligatori en directoris grans: sense això, tree / pot escopir centenars de milers de línies.
Si tree no està disponible i no el pots instal·lar (una cosa habitual en servidors de producció o contenidors), l'alternativa és ls -R, que veurem al recorregut final, o find combinat amb format, que s'estudia a 05-01.
pushd i popd: pila de directoris
pushd i popd: pila de directoriscd - alterna entre dos directoris, però de vegades n'has de manejar tres o quatre. Per a això Bash manté una pila de directoris.
pushd RUTA: apila el directori actual i es mou aRUTA.popd: desapila i torna al directori del cim.dirs -v: mostra la pila numerada.
Cada pushd imprimeix la pila completa, amb la posició actual a l'esquerra. És l'eina ideal quan estàs diagnosticant una incidència i has de saltar entre registres, dades i scripts sense perdre el fil. També pots saltar directament a una posició: pushd +2 fa rotar la pila fins a l'element número 2.
- Inspeccionar sense obrir:
file, stat, du i df
file, stat, du i dfAbans d'obrir un fitxer convé saber què és i quant ocupa. Quatre ordres cobreixen el 90 % dels casos.
10.1 file: de quin tipus és un fitxer
Linux no es fia de l'extensió: file examina el contingut per determinar el tipus.
/var/log/veloz/app.log: ASCII text /srv/veloz/dades/enviaments.csv: CSV text /usr/bin/ls: ELF 64-bit LSB pie executable, x86-64, dynamically linked /home/joan/veloz-ops: directory
La seva utilitat pràctica és enorme: evita que obris un binari de 2 GB amb un editor de text i bloquegis la terminal. Abans de fer cat a un fitxer desconegut, passa-li file.
Un ús molt pertinent per a Veloz Envíos: detectar fitxers comprimits amb una extensió enganyosa.
Encara que no porti .gz, està comprimit, i caldria llegir-lo amb zcat en lloc de cat.
10.2 stat: les metadades completes
Fitxer: /var/log/veloz/app.log
Mida: 6291456 Blocs: 12288 Bloc E/S: 4096 fitxer regular
Dispositiu: 8,1 Node-i: 262147 Enllaços: 1
Accés: (0644/-rw-r--r--) Uid: ( 1001/ veloz) Gid: ( 1001/ veloz)
Accés: 2026-08-03 10:15:22.000000000 +0200
Modificació: 2026-08-03 10:15:22.000000000 +0200
Canvi: 2026-08-03 10:15:22.000000000 +0200
Creació: 2026-07-01 08:00:00.000000000 +0200stat dona el mateix que ls -l però amb precisió total, incloses les tres marques de temps que Linux manté:
| Marca | Nom | Canvia quan... |
|---|---|---|
| atime | Accés | Es llegeix el contingut |
| mtime | Modificació | Es canvia el contingut |
| ctime | Canvi | Canvien el contingut o les metadades (permisos, propietari) |
Confondre mtime amb ctime és un error habitual en auditories: si algú va canviar els permisos d'un fitxer però no el seu contingut, mtime continua igual i només ctime el delata.
stat també admet formats personalitzats, molt útils per a scripts:
On %n és el nom, %s la mida i %y la data de modificació. Al Mòdul 9 farem servir aquesta forma per comprovar si un registre s'ha actualitzat recentment.
10.3 du: quant ocupa un directori
du (disk usage) suma l'espai ocupat.
-s(summarize): un únic total en lloc del detall de cada subdirectori.-h(human-readable): en K, M, G.
Per veure el repartiment per subdirectori, ordenat de més gran a més petit:
Aquesta ordre és la resposta estàndard a «s'està omplint el disc»: et diu en quin subdirectori hi ha el problema, i repetint-la un nivell més avall arribes al culpable en pocs passos. La canonada | i sort s'estudien al Mòdul 2; aquí ho fem servir com a recepta.
10.4 df: quant queda al disc
df (disk free) informa de les particions muntades i la seva ocupació.
S.fitxers Mida Usat Disp Ús% Muntat a /dev/sda1 100G 72G 23G 76% / /dev/sdb1 500G 410G 65G 87% /srv tmpfs 3,9G 1,2M 3,9G 1% /run
La diferència entre totes dues ordres sol confondre:
| Ordre | Punt de vista | Pregunta que respon |
|---|---|---|
du |
Des dels fitxers cap amunt | «Quant ocupa aquesta carpeta?» |
df |
Des del sistema de fitxers | «Quant queda al disc?» |
I una anomalia clàssica que convé conèixer: si df diu que el disc és ple però du no troba les dades, gairebé sempre és perquè un procés manté obert un fitxer ja esborrat. L'espai no s'allibera fins que aquest procés acaba. És exactament el que passa quan algú esborra acces.log sense reiniciar el servei que l'escriu. La gestió de processos es veu a 05-02.
També val la pena df -i, que mostra els inodes lliures: un disc amb espai però sense inodes disponibles (milions de fitxers diminuts) també dona errors de «no queda espai».
- Recorregut guiat per la infraestructura de Veloz Envíos
Posem-ho tot junt en una sessió real de reconeixement sobre srv-veloz-01. És el teu primer dia i vols entendre el terreny.
Pas 1: Situar-te
Pas 2: Explorar els registres
total 47M -rw-r--r-- 1 veloz veloz 6,0M ago 3 10:15 app.log -rw-r--r-- 1 www-data adm 28M ago 3 10:14 acces.log -rw-r--r-- 1 veloz veloz 1,3M ago 3 09:02 veloz-api.log -rw-r--r-- 1 www-data adm 9,4M ago 2 23:59 acces.log.1 -rw-r--r-- 1 veloz veloz 2,1M ago 2 23:59 app.log.1
Ja saps molt amb aquesta sola pantalla:
app.logiacces.logs'estan escrivint ara mateix (data d'avui, hora recent): el servei és viu.- Els fitxers
.1són rotacions del dia anterior, tallades a les 23:59. acces.logpesa 28 MB, quatre vegades més queapp.log: si cal vigilar l'espai, aquest és el candidat.acces.logpertany awww-dataiapp.logaveloz: són dos serveis diferents, amb identitats diferents. Com ajoan, els podràs llegir (el bloc d'«altres» tér) però no pas escriure-hi.
Pas 3: Comprovar el tipus abans d'obrir
acces.log: ASCII text, with very long lines acces.log.1: gzip compressed data, from Unix, original size 84213760
Confirmat: el rotat està comprimit tot i no portar .gz. Bona dada abans de mirar de llegir-lo.
Pas 4: Visitar les dades de negoci
/srv/veloz/dades /var/log/veloz total 12M -rw-rw-r-- 1 veloz veloz 11M ago 3 06:00 enviaments.csv -rw-rw-r-- 1 veloz veloz 512K jul 31 06:00 enviaments-2026-07.csv drwxrwxr-x 2 veloz veloz 4,0K jul 1 06:00 historic
S'hi aprecia un patró de treball: hi ha un fitxer actiu, un de mensual i un directori historic. L'hora 06:00 suggereix un procés automàtic que s'executa de matinada.
Pas 5: Comprovar l'espai
47M /var/log/veloz 12M /srv/veloz/dades S.fitxers Mida Usat Disp Ús% Muntat a /dev/sdb1 500G 410G 65G 87% /srv
/srv al 87 %: encara no és crític, però és justament el tipus de mètrica que el nostre futur script d'informe ha de vigilar. Anota-t'ho mentalment, perquè serà un dels requisits del Mòdul 9.
Pas 6: Tornar a casa
De moment és buit. A partir del Mòdul 3 començarem a omplir-lo.
Alternativa sense tree
Si tree no està instal·lat al servidor:
/home/joan/veloz-ops: bin etc lib logs /home/joan/veloz-ops/bin: /home/joan/veloz-ops/etc: /home/joan/veloz-ops/lib: /home/joan/veloz-ops/logs:
Menys bonic, però disponible a qualsevol màquina.
Errors Habituals i Consells
- Confondre
/var/logamb~/veloz-ops/logs. El primer el gestiona el sistema i requereix permisos; el segon és teu. Els nostres scripts escriuran al segon. - Executar
cdsense comprovar si ha funcionat. Si el directori no existeix,cdfalla però tu continues on eres; en un script, les ordres següents actuaran sobre el directori equivocat. Es resol ambcd /ruta || exit, que veurem a 03-04. - Fer servir rutes relatives als scripts. Un script llançat per cron no arrenca al directori que t'imagines. Rutes absolutes sempre.
- Oblidar que
-hno significa el mateix a totes les ordres. Als,duidfés «human readable»; a moltes altres és «help». Davant del dubte,man(lliçó 01-05). - Fer
cata un fitxer enorme o binari. Bloqueja la terminal i pot deixar-la amb caràcters corromputs (s'arregla ambreset). Fes servirfileabans ilessper llegir. - Cercar ocults amb
lsa seques. A Linux n'hi ha prou amb un punt inicial per ocultar un fitxer. Fes servirls -aquan alguna cosa «no apareix». - Executar
tree /odu /sense límit. Triga moltíssim i satura la terminal. Fes servir-Lo--max-depth. - Consell: fes servir el tabulador de manera sistemàtica. A més d'escriure menys, valida que la ruta existeix mentre l'escrius: si no completa, és que t'has equivocat.
- Consell:
ls -ltidu -h --max-depth=1 | sort -hrsón les dues ordres de diagnòstic que més vegades salven una guàrdia nocturna. Memoritza-les.
Exercicis
Exercici 1: Resoldre rutes mentalment
Ets a /var/log/veloz. Sense executar res, indica a quina ruta absoluta equival cada expressió:
..../../.../app.log../nginx/error.log~/veloz-ops/bin../../../srv/veloz/dades/enviaments.csv
Exercici 2: Reconeixement d'un servidor
Fes a la teva màquina (adaptant les rutes si no tens l'estructura de Veloz Envíos) aquesta seqüència de reconeixement, i explica què et diu cada resultat:
- Esbrina el teu directori actual.
- Llista
/var/logen format llarg, amb mides llegibles i ordenat per data de modificació descendent. - Identifica quin és el fitxer o directori més gran de
/var/log. - Esbrina el percentatge d'ocupació de la partició on és
/var. - Determina de quin tipus és el fitxer
/etc/passwdsense obrir-lo.
Exercici 3: Navegació amb pila
Fent servir exclusivament pushd, popd i dirs, escriu la seqüència d'ordres que:
- Partint de
~, visiti/var/log, després/etci després/tmp, apilant cadascun. - Mostri la pila numerada.
- Torni a
/etcdesfent un sol nivell. - Retorni finalment a
~.
Indica en quin directori quedes després de cada pas.
Solucions
Solució a l'Exercici 1
| Expressió | Ruta absoluta | Raonament |
|---|---|---|
.. |
/var/log |
Puja un nivell des de /var/log/veloz |
../../.. |
/ |
Tres nivells: log → var → /. No es pot pujar més enllà de l'arrel |
./app.log |
/var/log/veloz/app.log |
. és el directori actual |
../nginx/error.log |
/var/log/nginx/error.log |
Puja a /var/log i baixa per nginx |
~/veloz-ops/bin |
/home/joan/veloz-ops/bin |
~ no depèn d'on siguis |
../../../srv/veloz/dades/enviaments.csv |
/srv/veloz/dades/enviaments.csv |
Puja a / i baixa per srv |
Detall del tercer cas: / és el sostre. cd ../../../../.. des de qualsevol lloc et deixa a /, sense error.
Solució a l'Exercici 2
# 1
pwd
# 2
ls -lht /var/log
# 3
du -h --max-depth=1 /var/log | sort -hr | head -3
# 4
df -h /var
# 5
file /etc/passwdSortida i lectura de cada punt:
Ets a la teva carpeta personal.
total 312M drwxr-x--- 2 root adm 4,0K ago 3 10:16 veloz -rw-r----- 1 syslog adm 18M ago 3 10:16 syslog drwxr-xr-x 2 root root 4,0K ago 3 00:00 nginx
El primer és el modificat més recentment: els serveis que estan escrivint ara. És el punt de partida per investigar una incidència en curs.
La primera línia és el total del directori consultat; a partir d'aquí, veloz és el consumidor més gran. Nota: --max-depth=1 inclou el mateix directori, per això /var/log apareix al capdavant.
/var no té partició pròpia: penja de /, que és al 76 %. És una dada important, perquè significa que un registre desbocat pot omplir tot el sistema, no només /var.
És text pla, així que es pot llegir amb cat o less sense cap risc. Tot i el nom, no conté contrasenyes (són a /etc/shadow).
Solució a l'Exercici 3
cd ~
pushd /var/log # -> /var/log | pila: /var/log ~
pushd /etc # -> /etc | pila: /etc /var/log ~
pushd /tmp # -> /tmp | pila: /tmp /etc /var/log ~
dirs -v
popd # -> /etc | pila: /etc /var/log ~
popd; popd # -> ~ | pila: ~Sortida de dirs -v al pas 2:
Recorregut: ~ → /var/log → /etc → /tmp → (popd) /etc → (popd) /var/log → (popd) ~.
Observa que cada pushd apila el directori on eres i et porta al nou, mentre que popd descarta el cim i et situa al següent. Una alternativa al darrer pas seria cd ~ directament, però l'exercici demanava fer servir només la pila. Si volguessis saltar directament a /var/log des de /tmp sense desapilar, pushd +2 faria rotar la pila fins a aquesta posició.
Conclusió
Ja et mous pel sistema amb criteri. Saps descompondre una ordre en programa, opcions i arguments; coneixes el mapa del FHS i què guarda cada directori clau; distingeixes rutes absolutes de relatives i saps quan fer servir cadascuna; manejes pwd, cd, ls amb les seves opcions decisives, tree i la pila de pushd/popd; i saps interpretar ls -l línia a línia i inspeccionar fitxers amb file, stat, du i df abans de tocar-los. Sobretot, has fet el teu primer reconeixement real de srv-veloz-01 i ja saps on viu cada peça de Veloz Envíos.
Fins ara has estat fent servir el shell. A la lliçó següent, Entenent el Shell, n'obrirem la caixa: què passa exactament entre que prems Enter i apareix el resultat, per què cd no pot ser un programa extern, com cerca Bash les ordres al PATH, què és un subshell i per què una variable definida dins d'un desapareix en sortir-ne. Entendre aquest mecanisme és el que separa qui copia ordres de qui sap què està fent.
Curs de Programació en Bash
Mòdul 1: Introducció a Bash
- Què és Bash?
- Configurar el teu Entorn
- Navegació Bàsica per la Línia d'Ordres
- Entendre el Shell
- Trobar Ajuda: man, help i --help
Mòdul 2: Ordres Bàsiques de Bash
- Operacions amb Fitxers i Directoris
- Ordres de Processament de Text
- Permisos i Propietat dels Fitxers
- Redirecció i Canonades
- Comodins i Expansió de Rutes
- Historial i Dreceres de Teclat
Mòdul 3: Fonaments de Scripting
- Crear i Executar un Script
- Variables i Constants
- Operadors Bàsics
- Sentències Condicionals
- Arguments i Entrada de l'Usuari
- Cometes, Expansió i Substitució
Mòdul 4: Scripting Intermedi
- Bucles en Bash
- Funcions en Bash
- Arrays i Arrays Associatius
- Manipulació de Cadenes
- La Sentència case i els Menús Interactius
- Aritmètica i Càlculs Numèrics
Mòdul 5: Tècniques Avançades de Scripting
- Operacions Avançades amb Fitxers
- Gestió de Processos
- Gestió d'Errors i Depuració
- Expressions Regulars
- Entrada/Sortida Avançada: Descriptors i Here-Documents
- Scripts Modulars i Llibreries Reutilitzables
Mòdul 6: Treballar amb Eines Externes
Mòdul 7: Automatització i Programació
- Tasques Cron
- Automatitzar Tasques
- Scripts de Còpia i Restauració
- Monitoratge i Registre
- Serveis i Temporitzadors amb systemd
- Automatització Remota amb SSH
Mòdul 8: Bones Pràctiques i Optimització
- Escriure Codi Llegible
- Optimitzar Scripts en Bash
- Consideracions de Seguretat
- Control de Versions amb Git
- Anàlisi Estàtica amb ShellCheck i shfmt
- Proves Automatitzades amb Bats
- Portabilitat: POSIX sh enfront de Bashismes
