Hi ha una habilitat que separa l'administrador que resol incidències del que les escala: no necessitar internet per saber què fa una ordre. Linux ve amb la seva pròpia documentació instal·lada, escrita per qui va desenvolupar cada eina, actualitzada amb la versió exacta que tens al davant i disponible encara que el servidor estigui aïllat en una xarxa sense sortida.

Aquesta última part no és un supòsit teòric. Un servidor de producció ben configurat sol estar darrere d'un tallafocs que no permet navegació. Un entorn bancari o sanitari pot ser en una xarxa completament separada. I quan hi ha una incidència greu, el primer que es talla és l'accés extern. Si el teu mètode de treball és «ho busco», en aquell moment et quedes sense mètode.

Aquesta lliçó t'ensenya el mètode alternatiu. En acabar-la sabràs llegir una pàgina de manual sencera —inclosa aquella notació amb claudàtors i barres que sembla jeroglífica—, buscar una ordre quan no en recordes el nom, i saber en quina de les cinc fonts de documentació diferents hi ha la resposta que necessites. És, probablement, la lliçó més rendible del mòdul.

Contingut

  1. Les cinc fonts de documentació d'un sistema Linux
  2. man: el manual del sistema
  3. Com es llegeix la notació del SYNOPSIS
  4. Les seccions del manual i per què existeixen
  5. Buscar al manual: whatis, apropos i man -k
  6. Navegar amb less dins de man
  7. --help: el resum ràpid
  8. info: la documentació extensa de GNU
  9. help: els builtins de Bash i per què man cd no funciona
  10. Documentació local a /usr/share/doc
  11. tldr i cheat: el complement, no el substitut
  12. Codis de sortida i $?: saber si alguna cosa ha fallat
  13. Estratègia de cerca quan no en saps ni el nom

  1. Les cinc fonts de documentació d'un sistema Linux

Abans d'entrar en detall, el mapa. A srv-tramontana conviuen cinc fonts diferents, i triar malament et fa perdre temps:

Font Ordre Extensió Quan és la correcta
Manual man cmd Mitjana-llarga La referència. La teva primera parada gairebé sempre
Ajuda breu cmd --help Curta Recordar una opció que ja coneixies
Info info cmd Molt llarga Eines GNU amb documentació de tipus llibre
Builtins help cmd Mitjana Ordres internes de Bash: cd, export, type...
Paquet /usr/share/doc/ Variable Exemples de configuració, changelogs, notes de la distribució

I una sisena, opcional, que cal situar bé: tldr, que dona exemples pràctics però no és documentació oficial i no és exhaustiva.

La regla operativa: --help per recordar, man per entendre, info per aprofundir, /usr/share/doc per configurar.

  1. man: el manual del sistema

man (de manual) mostra la pàgina de documentació oficial d'una ordre, un fitxer de configuració, una crida al sistema o un format de fitxer.

operador@srv-tramontana:~$ man ls

S'obre a pantalla completa en un paginador. Se'n surt amb q.

Les pàgines de manual segueixen una estructura estandarditzada des dels anys setanta. Conèixer-la et permet saltar directament al que busques en comptes de llegir de dalt a baix:

Secció de la pàgina Què conté Quan la llegeixes
NAME Nom i descripció en una línia Per confirmar que és l'ordre que buscaves
SYNOPSIS La sintaxi formal completa El més dens i el més útil. Apartat 3
DESCRIPTION Què fa, en prosa La primera vegada que fas servir l'ordre
OPTIONS Cada opció, una a una El 80 % de les teves consultes reals
EXIT STATUS Què significa cada codi de sortida En escriure scripts (Mòdul 4)
ENVIRONMENT Variables que n'alteren el comportament Quan l'ordre «es comporta estranyament»
FILES Fitxers que llegeix o escriu Buscant on és la seva configuració
EXAMPLES Exemples d'ús Quan existeix, és el primer que cal mirar
BUGS Limitacions conegudes Quan alguna cosa no funciona i no entens per què
SEE ALSO Pàgines relacionades Quan aquesta no era l'ordre que necessitaves

Dos consells que canvien com es fa servir man:

  • Comença per EXAMPLES si existeix. No totes les pàgines el tenen (les de GNU solen no tenir-lo), però quan hi és, resol el dubte en trenta segons.
  • Acaba per SEE ALSO quan t'has equivocat d'ordre. És la llista d'eines relacionades escrita per qui millor coneix el domini.

Un exemple real de lectura selectiva. Necessites saber quins fitxers fa servir el servei SSH:

operador@srv-tramontana:~$ man sshd

A dins, prems /FILES i Enter: saltes directament a la llista de fitxers, sense llegir les tres-centes línies anteriors. Tornarem a aquesta tècnica a l'apartat 6.

  1. Com es llegeix la notació del SYNOPSIS

El SYNOPSIS és la part que més gent es salta i la que més informació conté. Està escrit en una notació formal amb regles fixes:

Notació Significat Exemple
Text en negreta Escriu-ho literalment, tal qual ls
Text en cursiva o <MAJÚSCULES> Substitueix-ho pel teu valor FILE → acces.log
[alguna cosa] Opcional [OPTION]
alguna cosa... Es pot repetir FILE... = un o diversos
a|b O l'un o l'altre, excloents -a|-b
{a|b} Obligatori triar-ne un del grup {start|stop}
[-abc] Opcions curtes agrupables [-alh]

Vegem-ho aplicat. El SYNOPSIS de cp:

SYNOPSIS
       cp [OPTION]... [-T] SOURCE DEST
       cp [OPTION]... SOURCE... DIRECTORY
       cp [OPTION]... -t DIRECTORY SOURCE...

Aquesta pàgina t'està dient tres coses que no apareixen escrites en prosa enlloc:

  1. Hi ha tres formes vàlides d'invocar cp, no una. Cada línia és una forma completa.
  2. A la primera, SOURCE i DEST van sense claudàtors: són obligatoris. cp sense arguments falla.
  3. A la segona, SOURCE... porta punts suspensius i l'últim argument s'anomena DIRECTORY: pots copiar diversos fitxers de cop, però llavors el destí ha de ser un directori. Això explica un error que veuràs a la lliçó 02-04.

Un altre exemple, man 5 crontab enfront de man 1 crontab:

SYNOPSIS
       crontab [-u user] file
       crontab [-u user] [-l | -r | -e] [-i] [-s]

Aquí [-l | -r | -e] et diu que llistar, esborrar i editar són excloents: no pots demanar-ne dues alhora. Hi ha tota la lògica de l'ordre en una línia.

Exercici mental que t'hauries de fer sempre: abans de llegir OPTIONS, llegeix el SYNOPSIS i pregunta't quantes formes d'invocació hi ha i què és obligatori. Moltes vegades la resposta ja hi és.

  1. Les seccions del manual i per què existeixen

El manual està dividit en vuit seccions numerades. La raó és que un mateix nom pot referir-se a coses diferents: passwd és una ordre i un fitxer de configuració; printf és una ordre i una funció de C.

Secció Contingut Exemple típic
1 Ordres d'usuari man 1 ls, man 1 passwd
2 Crides al sistema (al nucli) man 2 open, man 2 read
3 Funcions de biblioteca (C) man 3 printf, man 3 malloc
4 Fitxers especials de /dev man 4 null, man 4 random
5 Formats de fitxer i configuració man 5 passwd, man 5 fstab, man 5 crontab
6 Jocs man 6 sl
7 Convencions i miscel·lània man 7 hier, man 7 signal, man 7 regex
8 Ordres d'administració man 8 mount, man 8 useradd, man 8 sshd

Les tres que faràs servir constantment com a administrador són la 1 (ordres), la 5 (fitxers de configuració) i la 8 (eines de root).

Quan executes man passwd sense número, man et dona la primera secció on trobi aquesta pàgina, normalment la 1:

operador@srv-tramontana:~$ man passwd
PASSWD(1)                    User Commands                    PASSWD(1)

NAME
       passwd - change user password

Però si el que vols és entendre el format del fitxer /etc/passwd, aquesta és una altra pàgina completament diferent:

operador@srv-tramontana:~$ man 5 passwd
PASSWD(5)                 File Formats and Conversions              PASSWD(5)

NAME
       passwd - the password file

DESCRIPTION
       /etc/passwd contains a list of the system's accounts, giving
       useful information like user ID, group ID, home directory,
       shell...

La capçalera et diu sempre en quina secció ets: PASSWD(1) enfront de PASSWD(5). Acostuma't a mirar aquest número: és la manera de saber si estàs llegint la pàgina correcta.

Per saber en quines seccions existeix una pàgina:

operador@srv-tramontana:~$ man -f passwd
passwd (1)           - change user password
passwd (1ssl)        - compute password hashes
passwd (5)           - the password file

operador@srv-tramontana:~$ man -a passwd

man -a te les mostra totes en seqüència: en sortir d'una amb q, pregunta si vols veure la següent.

Dues pàgines de la secció 7 que val la pena que coneguis ja:

man 7 hier      # L'arbre de directoris complet: l'FHS del Mòdul 1, al sistema mateix
man 7 signal    # Els senyals (útil a la lliçó 03-06)

  1. Buscar al manual: whatis, apropos i man -k

Aquestes dues eines resolen les dues preguntes més freqüents.

«Què és aquesta ordre que acabo de veure en un script?» → whatis (equivalent a man -f), que mostra només la línia NAME:

operador@srv-tramontana:~$ whatis rsync
rsync (1)            - a fast, versatile, remote (and local) file-copying tool

operador@srv-tramontana:~$ whatis tar cpio
tar (1)              - an archiving utility
cpio (1)             - copy files to and from archives

«No sé com es diu l'ordre que necessito» → apropos (equivalent a man -k), que busca la paraula a les descripcions de totes les pàgines instal·lades:

operador@srv-tramontana:~$ apropos "disk space"
df (1)               - report file system disk space usage
du (1)               - estimate file space usage
ncdu (1)             - NCurses Disk Usage

En tres segons, sense cercador, tens les tres eines que existeixen per al problema. Aquesta és la resposta a la crítica de «la CLI no és descobrible» de l'apartat 1 de la lliçó anterior: sí que ho és, però es descobreix amb apropos, no amb menús.

Quan la cerca retorna massa coses, s'afina:

operador@srv-tramontana:~$ apropos -s 8 network
ifconfig (8)         - configure a network interface
ip (8)               - show / manipulate routing, network devices...
netplan (8)          - Ubuntu Network Configuration

-s 8 restringeix a la secció d'administració. També pots limitar la cerca al nom en comptes de a la descripció:

operador@srv-tramontana:~$ apropos -e tar
tar (1)              - an archiving utility

-e força coincidència exacta, útil perquè apropos tar retornaria desenes de pàgines que contenen «tar» dins d'altres paraules.

Si apropos respon nothing appropriate, pot ser que la base de dades d'índexs no estigui generada. Es regenera amb:

operador@srv-tramontana:~$ sudo mandb
Purging old database entries in /usr/share/man...
0 old manual pages deleted
15 manual pages added

  1. Navegar amb less dins de man

man no dibuixa res per si mateix: envia el text a un paginador, que a Ubuntu és less. Les dreceres que aprenguis aquí valen també per veure fitxers i registres (lliçó 02-05), així que són doblement rendibles.

Tecla Acció
Espai / f Avançar una pantalla
b Retrocedir una pantalla
Fletxes / j / k Línia a línia
g Anar al principi del document
G Anar al final
50g Anar a la línia 50
/text Buscar cap endavant
?text Buscar cap enrere
n Coincidència següent
N Coincidència anterior
&text Mostrar només les línies que contenen el text
h Ajuda del mateix less
q Sortir

El flux de treball real d'algú amb experiència no és llegir la pàgina: és entrar i buscar.

Suposa que vols saber què fa l'opció -h de du. En comptes de recórrer la pàgina:

operador@srv-tramontana:~$ man du

A dins, escriu /-h i Enter. less salta a la primera aparició; amb n avances fins a la que és a la secció OPTIONS:

       -h, --human-readable
              print sizes in human readable format (e.g., 1K 234M 2G)

Truc molt útil: per buscar una opció concreta i evitar les desenes d'aparicions soltes d'aquella lletra, busca el patró amb espais:

/^       -h

El ^ significa «al principi de línia» i les pàgines de manual sagnen les opcions, així que això salta directament a la seva definició. (Aquell ^ és una expressió regular; el tema complet és de la lliçó 03-02, però aquest ús solt el pots adoptar ja.)

I un advertiment pràctic: si ets dins de man i no saps com sortir-ne, és q. És la pregunta més freqüent de tot el curs.

  1. --help: el resum ràpid

Gairebé totes les ordres accepten --help (o -h) i responen amb un resum al terminal mateix, sense paginador:

operador@srv-tramontana:~$ head --help
Usage: head [OPTION]... [FILE]...
Print the first 10 lines of each FILE to standard output.
With more than one FILE, precede each with a header giving the file name.

Mandatory arguments to long options are mandatory for short options too.
  -c, --bytes=[-]NUM       print the first NUM bytes of each file
  -n, --lines=[-]NUM       print the first NUM lines instead of the first 10
  -q, --quiet              never print headers giving file names
  -v, --verbose            always print headers giving file names
      --help     display this help and exit
      --version  output version information and exit

Diferències amb man:

--help man
Origen És dins de l'executable Fitxer a part, del paquet de documentació
Longitud Una pantalla Completa
Disponibilitat Gairebé sempre Pot faltar en contenidors minimalistes
Explicacions Escarides Amb context, exemples i matisos
Actualització Sempre coincideix amb el binari Molt rarament pot quedar desfasada

Aquest últim punt té una conseqüència pràctica: en un contenidor Docker minimalista (Mòdul 7) no sol haver-hi pàgines de manual instal·lades, perquè s'eliminen per reduir la mida de la imatge. Allà --help és l'únic que tens.

Compte amb un detall: en algunes ordres, -h no significa «ajuda». A ls, du i df significa human-readable. Si dubtes, fes servir --help, que és inequívoc.

I un altre: quan la sortida de --help no cap a la pantalla, no la persegueixis cap amunt. Envia-la al paginador:

operador@srv-tramontana:~$ rsync --help | less

Aquell | és una canonada; s'explica a fons a la lliçó 03-04, però aquest ús el pots adoptar des d'avui.

  1. info: la documentació extensa de GNU

El projecte GNU va decidir en el seu moment que les pàgines de manual eren massa limitades per documentar les seves eines i va crear el seu propi sistema: Texinfo, que es consulta amb info. Està organitzat en nodes enllaçats, com un llibre amb capítols navegables.

operador@srv-tramontana:~$ info coreutils

Conseqüència pràctica que cal conèixer: a les eines GNU (ls, cp, mv, tar, grep, sed...), la pàgina de manual és sovint un resum i la documentació real és a info. Moltes pàgines acaben amb una nota explícita:

       Full documentation <https://www.gnu.org/software/coreutils/ls>
       or available locally via: info '(coreutils) ls invocation'

Navegació bàsica d'info:

Tecla Acció
Espai / Retrocés Avançar / retrocedir
n Node següent del mateix nivell
p Node anterior
u Pujar al node pare
Enter sobre un * Entrar en aquell node
l Tornar al node anterior visitat
s Buscar
q Sortir

Quan val la pena info: quan man et dona l'opció però no el perquè. Per exemple, per entendre el comportament exacte de cp amb enllaços simbòlics, o els formats de date, info explica els casos límit que man només enumera.

Si info et resulta incòmode (li passa a molta gent per la navegació amb nodes), tens una sortida:

operador@srv-tramontana:~$ info coreutils 'ls invocation' | less

Així llegeixes el mateix contingut a less, amb les dreceres que ja coneixes.

  1. help: els builtins de Bash i per què man cd no funciona

Prova això:

operador@srv-tramontana:~$ man cd
No manual entry for cd

L'explicació és a la lliçó anterior: cd no és un programa, és una ordre interna de Bash. No hi ha cap paquet que l'instal·li, així que no hi ha cap pàgina de manual que el documenti. La seva documentació la proporciona el mateix Bash amb el builtin help:

operador@srv-tramontana:~$ help cd
cd: cd [-L|[-P [-e]] [-@]] [dir]
    Change the shell working directory.

    Change the current directory to DIR.  The default DIR is the value of
    the HOME shell variable.
    ...

I la llista completa de builtins, que convé mirar un cop a la vida:

operador@srv-tramontana:~$ help
GNU bash, version 5.2.21(1)-release (x86_64-pc-linux-gnu)
...
 alias [-p] [name[=value] ... ]          cd [-L|[-P [-e]] [-@]] [dir]
 bg [job_spec ...]                       command [-pVv] command [arg ...]
 ...

L'arbre de decisió complet:

flowchart TD
    A["Necessito documentació de 'X'"] --> B{"type X"}
    B -->|"és una ordre interna del shell"| C["help X"]
    B -->|"és /ruta/al/programa"| D["man X"]
    B -->|"és un àlies"| E["type -a X<br/>i documentar l'ordre real"]
    D --> F{"Existeix la pàgina?"}
    F -->|Sí| G["Llegir i buscar amb /"]
    F -->|"No hi ha pàgina de manual"| H["X --help"]
    G --> I{"Suficient?"}
    I -->|No| J["info X<br/>/usr/share/doc/X/"]
    I -->|Sí| K[Resolt]

Hi ha un cas intermedi que convé conèixer: man builtins mostra tots els builtins documentats en una sola pàgina, i man bash conté la documentació completa del shell. És una de les pàgines de manual més llargues del sistema (més de cinc mil línies), i per això mateix /paraula és imprescindible allà dins.

  1. Documentació local a /usr/share/doc

Cada paquet instal·lat deixa documentació a /usr/share/doc/<paquet>/. És la font que més s'ignora i la que més vegades conté exactament el que necessites: fitxers de configuració d'exemple.

operador@srv-tramontana:~$ ls /usr/share/doc/openssh-server/
NEWS.Debian.gz  README.Debian.gz  changelog.Debian.gz  copyright
examples/       faq.html

Què esperar en cada tipus de fitxer:

Fitxer Contingut
README.Debian Com empaqueta Debian/Ubuntu aquesta eina: rutes i decisions pròpies de la distro
NEWS.Debian Canvis importants que poden trencar la teva configuració en actualitzar
changelog.Debian.gz Historial de versions del paquet
examples/ Fitxers de configuració d'exemple, or pur
copyright Llicència

Molts estan comprimits en .gz. Es llegeixen sense descomprimir-los amb zless o zcat:

operador@srv-tramontana:~$ zless /usr/share/doc/rsyslog/changelog.Debian.gz

README.Debian és especialment valuós perquè documenta les diferències entre l'eina original i com l'empaqueta Ubuntu: rutes canviades, opcions per defecte diferents, integració amb systemd. Això no apareix a la documentació oficial del projecte i és la causa de la meitat de les confusions quan segueixes un tutorial escrit per a una altra distribució.

Quan arribis a configurar serveis al Mòdul 5 i al Mòdul 8, aquesta carpeta serà la teva primera parada abans que qualsevol tutorial.

  1. tldr i cheat: el complement, no el substitut

tldr (de too long; didn't read) és una col·lecció comunitària d'exemples pràctics. On man tar et dona mil línies, tldr tar et dona les sis invocacions que es fan servir el 95 % de les vegades.

operador@srv-tramontana:~$ tldr tar

  tar
  Archiving utility.

  - Create an archive from files:
    tar cf target.tar file1 file2 file3

  - Create a gzipped archive:
    tar czf target.tar.gz file1 file2 file3

  - Extract a (compressed) archive into the current directory:
    tar xf source.tar[.gz|.bz2|.xz]

  - List the contents of a tar file:
    tar tvf source.tar

És enormement útil, i cal ser conscient dels seus tres límits:

  1. No és exhaustiu. Mostra el que és comú, no el que necessites en un cas rar. I els casos rars són precisament les incidències.
  2. No és oficial. L'escriu la comunitat; pot estar desactualitzat respecte a la teva versió.
  3. Pot no estar instal·lat, i en un servidor de producció és probable que no ho estigui (i que no l'hi hagis d'instal·lar només per això).

Criteri professional: tldr per arrencar ràpid amb una eina que ja entens; man per decidir alguna cosa que va a producció. Si has d'executar una ordre destructiva o modificar la configuració d'un servei en marxa, la font és el manual.

  1. Codis de sortida i $?: saber si alguna cosa ha fallat

Recorda de l'apartat 9 de la lliçó anterior: tota ordre retorna un número en acabar. Ara ho mirarem directament, perquè és la informació que et diu si alguna cosa ha funcionat quan l'ordre no ha dit res.

operador@srv-tramontana:~$ ls /var/log/tramontana
acces.log  errors.log
operador@srv-tramontana:~$ echo $?
0

operador@srv-tramontana:~$ ls /var/log/inexistent
ls: cannot access '/var/log/inexistent': No such file or directory
operador@srv-tramontana:~$ echo $?
2

$? guarda el codi de l'última ordre executada. Convenció universal:

Codi Significat
0 Èxit
1 Error genèric
2 Ús incorrecte (opció invàlida, falten arguments)
126 El fitxer existeix però no és executable
127 Ordre no trobada
128+N Acabat pel senyal N (130 = interromput amb Ctrl+C)

Cada ordre pot definir els seus, i aquí és on entra la secció EXIT STATUS del manual:

operador@srv-tramontana:~$ man grep

Buscant /EXIT STATUS:

EXIT STATUS
       Normally the exit status is 0 if a line is selected, 1 if no lines
       were selected, and 2 if an error occurred.

Això significa que a grep, 1 no és una fallada: significa «no hi ha coincidències». Confondre «no ha trobat res» amb «s'ha trencat» és una font clàssica d'errors en scripts de monitoratge. I l'única manera de saber-ho és llegint aquesta secció del manual.

Compte amb un parany: $? es reescriu amb cada ordre, inclòs l'echo que el mostra.

operador@srv-tramontana:~$ ls /inexistent
ls: cannot access '/inexistent': No such file...
operador@srv-tramontana:~$ echo $?
2
operador@srv-tramontana:~$ echo $?
0

El segon 0 és el codi de l'echo anterior, que va funcionar perfectament. Consulta $? immediatament, o desa'l en una variable (Mòdul 4).

  1. Estratègia de cerca quan no en saps ni el nom

Aquest és el procediment complet, ordenat, per quan t'enfrontes a un problema sense saber quina eina el resol:

  1. Descriu el problema en dues o tres paraules en anglès. «space», «compress», «rename», «monitor processes».
  2. apropos amb aquestes paraules, acotant amb -s 1 o -s 8.
  3. De la llista, whatis sobre els candidats per descartar ràpid.
  4. man sobre el triat: llegeix NAME, SYNOPSIS i salta a EXAMPLES.
  5. Si no era el correcte, SEE ALSO d'aquella pàgina sol contenir el que sí que ho és.
  6. Si l'ordre existeix però no la saps fer servir, tldr per a una arrencada ràpida, i tornada al manual per als detalls.
  7. Si és un fitxer de configuració, man 5 <nom> i /usr/share/doc/<paquet>/examples/.
  8. Si és una ordre que no té manual, type et dirà si és un builtin i llavors help.

Un recorregut complet. La Marta Vidal pregunta quant ocupa el directori de l'aplicació:

operador@srv-tramontana:~$ apropos -s 1 "file space"
du (1)               - estimate file space usage

operador@srv-tramontana:~$ whatis du
du (1)               - estimate file space usage

operador@srv-tramontana:~$ man du

Dins del manual, /summarize:

       -s, --summarize
              display only a total for each argument

I /human:

       -h, --human-readable
              print sizes in human readable format (e.g., 1K 234M 2G)

Resultat, sense sortir del servidor i sense cercador:

operador@srv-tramontana:~$ du -sh /opt/tramontana/app
48M	/opt/tramontana/app

Tres ordres i dues cerques dins d'una pàgina. Aquest és el mètode.

Errors Comuns i Consells

No saber sortir de man. És q. Si ets a info, també q. Si has entrat a vim per accident, és :q! (lliçó 02-05).

Llegir la pàgina sencera de dalt a baix. Les pàgines de manual són referència, no tutorials. Entra i busca amb /.

Ignorar el número de secció. Si man passwd et parla de canviar contrasenyes i tu buscaves el format del fitxer, no és que el manual estigui malament: et falta el 5.

Buscar a internet abans que a apropos. El cercador et donarà una resposta escrita per a una altra distribució, una altra versió i un altre any. man documenta exactament el binari que tens instal·lat.

Copiar una ordre d'un fòrum sense llegir-ne les opcions. Abans d'executar alguna cosa que no entens, passa-li les opcions per man. És literalment un minut, i és la diferència entre resoldre una incidència i provocar-ne una altra.

Consell: man -k és el teu cercador local. Acostuma't a provar-lo abans d'obrir el navegador. La primera setmana et semblarà més lent; a partir de la tercera aniràs més ràpid.

Consell: guarda el que aprens. Crea /home/operador/scripts/notes/ i escriu-hi les ordres que has hagut de buscar. La teva pròpia documentació, amb els teus casos, és més ràpida de consultar que qualsevol manual.

Consell: llegeix man 7 hier un cop. És l'FHS del Mòdul 1 explicat pel sistema mateix. Mitja hora ben invertida.

Consell: en un servidor sense pàgines de manual, comprova si estan desactivades abans de donar-les per perdudes. Algunes imatges les exclouen a la configuració d'instal·lació de paquets; com es recuperen és matèria de la lliçó 05-03.

Exercicis

Exercici 1: dominar el SYNOPSIS

Sense executar les ordres, només llegint-ne les pàgines de manual, respon:

  1. mkdir accepta crear diversos directoris en una sola ordre? Com ho saps pel SYNOPSIS?
  2. Quantes formes diferents d'invocació té ln?
  3. A man 1 tar, són -c, -x i -t compatibles entre si?

Exercici 2: el dubte d'en Luis Ferrer

En Luis t'escriu: «Necessito quedar-me només amb les últimes 50 línies de /var/log/tramontana/acces.log i no me'n recordo, de l'ordre. A més vull veure-ho actualitzant-se en directe mentre provo l'aplicació. Me'l busques al Google?»

Restricció: srv-tramontana és en una xarxa sense sortida a internet. Resol-ho fent servir només documentació del sistema, i documenta el camí que has seguit (quines ordres de cerca has fet servir i en quin ordre).

Exercici 3: informe de documentació per a la Marta

La Marta Vidal vol saber què fa exactament la línia 0 3 * * * /home/operador/scripts/backup.sh que apareix a la configuració de tasques programades del servidor anterior, i si el format és fiable.

Fent servir només el manual del sistema, esbrina:

  1. En quina secció del manual està documentat el format d'aquell fitxer (no l'ordre).
  2. Què significa cadascun dels cinc camps.
  3. Quin codi de sortida retorna l'ordre crontab si el fitxer té un error de sintaxi.

Escriu la resposta com un paràgraf breu adreçat a la Marta, que no és tècnica.

Solucions

Solució 1

operador@srv-tramontana:~$ man mkdir
SYNOPSIS
       mkdir [OPTION]... DIRECTORY...

Sí que n'accepta diversos. La prova són els punts suspensius després de DIRECTORY: signifiquen «un o més». I com que DIRECTORY va sense claudàtors, almenys un és obligatori. Tota aquesta informació és en una sola línia, sense llegir ni una paraula de prosa.

operador@srv-tramontana:~$ man ln
SYNOPSIS
       ln [OPTION]... [-T] TARGET LINK_NAME
       ln [OPTION]... TARGET
       ln [OPTION]... TARGET... DIRECTORY
       ln [OPTION]... -t DIRECTORY TARGET...

Quatre formes. Fixa't en la segona: ln TARGET sense nom d'enllaç. Crea l'enllaç al directori actual amb el mateix nom que l'objectiu. És un detall que sorprèn i que només s'aprèn llegint el SYNOPSIS. El faràs servir a la lliçó 02-06.

operador@srv-tramontana:~$ man tar
       Operation mode:
        -c, --create               create a new archive
        -x, --extract, --get       extract files from an archive
        -t, --list                 list the contents of an archive

Estan agrupades sota l'epígraf «Operation mode» (mode d'operació), cosa que indica que se n'elegeix un i només un. La pàgina ho confirma més amunt:

       The main operation mode:  -A -c -d -r -t -u -x

No són compatibles. Intentar tar -cx dona un error del tipus «You may not specify more than one -Acdtrux option». La pista era a l'organització de la pàgina mateixa: quan un manual agrupa opcions sota un epígraf de «mode», solen ser excloents.

Solució 2

Camí seguit.

Primer, buscar al manual per concepte:

operador@srv-tramontana:~$ apropos -s 1 "last part of files"
tail (1)             - output the last part of files

Confirmar que és el que sembla:

operador@srv-tramontana:~$ whatis tail head
tail (1)             - output the last part of files
head (1)             - output the first part of files

Anar al manual i buscar-hi dins com fixar el nombre de línies. Dins de man tail, /lines:

       -n, --lines=[+]NUM
              output the last NUM lines, instead of the last 10

I per a la segona part, la de seguir el fitxer en directe, /follow:

       -f, --follow[={name|descriptor}]
              output appended data as the file grows

       -F     same as --follow=name --retry

Les dues ordres que resolen la petició d'en Luis:

operador@srv-tramontana:~$ sudo tail -n 50 /var/log/tramontana/acces.log
2026-08-18 09:12:44 GET /cases 200 usuari=anon
...
2026-08-18 09:14:11 GET /cases 200 usuari=anon

operador@srv-tramontana:~$ sudo tail -f /var/log/tramontana/acces.log

Se surt del mode seguiment amb Ctrl+C.

El matís que aporta la documentació i que no hauria donat una resposta ràpida de cercador: la diferència entre -f i -F. -f segueix el descriptor del fitxer; si logrotate rota el registre a mitjanit i en crea un de nou, tail -f es queda mirant el fitxer antic, ja reanomenat, i deixa de mostrar res sense avisar. -F segueix el nom, així que es reenganxa amb el fitxer nou.

Per seguir un registre de producció que rota, l'opció correcta és tail -F. Això és literalment a la pàgina de manual, i és exactament el tipus de detall que un tutorial de tres línies omet. Hi tornarem a la lliçó 02-05.

El que li contestes a en Luis no és l'ordre: és el mètode. apropos amb dues paraules en anglès, whatis per confirmar i /opció dins del manual. Trenta segons, sense internet.

Solució 3

1. Secció del manual. L'ordre crontab és a la secció 1, però el format del fitxer és a la 5:

operador@srv-tramontana:~$ man -f crontab
crontab (1)          - maintain crontab files for individual users
crontab (5)          - tables for driving cron

operador@srv-tramontana:~$ man 5 crontab

2. Els cinc camps. Dins de la pàgina, buscant /field:

       field          allowed values
       -----          --------------
       minute         0-59
       hour           0-23
       day of month   1-31
       month          1-12 (or names)
       day of week    0-7 (0 and 7 are Sunday, or names)

Aplicat a 0 3 * * *: minut 0, hora 3, qualsevol dia del mes, qualsevol mes, qualsevol dia de la setmana. És a dir, tots els dies a les 3:00.

3. Codi de sortida davant d'un error de sintaxi. A man 1 crontab, buscant /EXIT:

EXIT STATUS
       An exit status of 0 will be returned upon successful completion,
       otherwise a non-zero value will be returned.

I a la secció DIAGNOSTICS de la mateixa pàgina s'explica que un fitxer amb errors de sintaxi és rebutjat completament: crontab no instal·la una versió parcial. Aquest matís és l'important per a la Marta, i només apareix llegint la pàgina.

Informe per a la Marta:

Marta, la línia 0 3 * * * /home/operador/scripts/backup.sh és una tasca programada del sistema. Els cinc primers valors són un rellotge: minut 0, hora 3, i els tres asteriscs signifiquen «qualsevol dia, qualsevol mes, qualsevol dia de la setmana». En conjunt: l'script de còpia de seguretat s'executa automàticament cada dia a les 3:00 de la matinada.

Sobre la fiabilitat del format: és l'estàndard d'Unix, fa més de quaranta anys que s'utilitza i està documentat al sistema mateix. Quan s'instal·la una tasca, el programa valida la sintaxi i rebutja el fitxer sencer si hi ha un error, en comptes d'acceptar-lo a mitges. Això vol dir que una tasca mal escrita no s'instal·la, en comptes d'instal·lar-se i executar-se a una hora equivocada.

L'única excepció és que el format diu quan es llança l'script, no garanteix que l'script funcioni. Verificar que la còpia es fa correctament requereix revisar el seu registre d'execució, cosa que et proposo muntar quan tinguem el sistema de monitoratge en marxa.

Tota la informació d'aquest informe va sortir de dues pàgines de manual instal·lades al servidor mateix.

Conclusió

Ja no depens d'un cercador per treballar a Linux.

  • Un sistema Linux porta cinc fonts de documentació: man per entendre, --help per recordar, info per aprofundir, help per als builtins i /usr/share/doc per configurar.
  • Saps llegir una pàgina de manual saltant al que necessites: EXAMPLES primer quan existeix, FILES per localitzar configuració, EXIT STATUS abans d'escriure scripts i SEE ALSO quan t'has equivocat d'eina.
  • Entens la notació del SYNOPSIS: claudàtors per al que és opcional, punts suspensius per al que és repetible, barres per al que és excloent, i diverses línies per a diverses formes d'invocació.
  • Coneixes les vuit seccions, i en particular la diferència entre man 1 passwd i man 5 passwd, que és el parany on cau tothom.
  • Pots buscar sense saber el nom amb apropos i confirmar amb whatis.
  • Et mous dins de less amb /, n, N, g, G i q, dreceres que reaprofitaràs per llegir fitxers i registres.
  • Saps per què man cd no existeix i què fer llavors.
  • I saps llegir el codi de sortida amb $?, i que un 1 no sempre significa error, com demostra grep.

Tens l'intèrpret i tens el manual. El que falta és el terreny. A la propera lliçó, Navegant pel Sistema de Fitxers, baixaràs a l'arbre que vas conèixer al Mòdul 1 però aquesta vegada per recórrer-lo: pwd i el directori de treball, cd en totes les seves formes incloses les que gairebé ningú no fa servir, ls esmicolat columna a columna, tree, stat amb les seves tres marques de temps, file per saber què és de debò un fitxer, i du/df per mirar quant ocupa /var/log/tramontana. Al final faràs un recorregut complet i documentat de l'arbre de Tramontana Reserves. I quan alguna cosa no et quadri, ja saps on mirar abans de preguntar.

Curs de Linux: De Principiant a Administrador de Sistemes

Mòdul 1: Introducció a Linux

Mòdul 2: Comandes Bàsiques de Linux

Mòdul 3: Habilitats Avançades en la Línia de Comandes

Mòdul 4: Scripting en Shell

Mòdul 5: Administració del Sistema

Mòdul 6: Xarxes i Seguretat

Mòdul 7: Temes Avançats

Mòdul 8: Projectes Pràctics

© Copyright 2026. Tots els drets reservats