Chapter 9. Caratteristiche del sistema

Table of Contents

9.1. Informazioni su particolari pacchetti di software
9.2. Console virtuali
9.3. Mappatura della tastiera
9.4. Adattamenti nazionali

Abstract

Questo capitolo contiene delle indicazioni sui singoli pacchetti software nonché sulle console virtuali e mappatura della tastiera. Il capitolo si chiude con una sezione dedicata alle impostazioni della lingua (I18N/L10N).

9.1. Informazioni su particolari pacchetti di software

9.1.1. Il pacchetto bash ed /etc/profile

Quando invocate una shell di login, la bash processa i file di inizializzazione in questa sequenza:

  1. /etc/profile

  2. ~/.profile

  3. /etc/bash.bashrc

  4. ~/.bashrc

Gli utenti possono eseguire registrazioni proprie in ~/.profile o ~/.bashrc. Per garantire un'elaborazione corretta dei file è necessario che si assumono le impostazioni basilari di /etc/skel/.profile o /etc/skel/.bashrc nella directory dell'utente. Dopo un update si consiglia di orientarsi alle impostazioni di /etc/skel; per non perdere propri adattamenti eseguite questo comando:

mv ~/.bashrc ~/.bashrc.old
cp /etc/skel/.bashrc ~/.bashrc
mv ~/.profile ~/.profile.old
cp /etc/skel/.profile ~/.profile

In seguito dovete riscrivere i vostri adattamenti dal file *.old.

9.1.2. Il pacchetto cron

Le tabelle cron si trovano sotto /var/cron/tabs. Come tabella valida per tutto il sistema, viene creato il file /etc/crontab. Nel file /etc/crontab, dopo l'inserimento dell'ora, indicate anche sotto quale utente debba venire eseguito il relativo incarico (cfr. file Example 9.1, “Esempio di una registrazione in /etc/crontab”, che indica root); i dati dei pacchetti in /etc/cron.d hanno lo stesso formato – cfr. la pagina di manuale man cron.

Example 9.1. Esempio di una registrazione in /etc/crontab

1-59/5 * * * * root test -x /usr/sbin/atrun && /usr/sbin/atrun

/etc/crontab non può essere modificato con crontab -e, ma deve venire direttamente caricato in un editor, modificato, e infine salvato.

Alcuni pacchetti installano, nelle directory /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly e /etc/cron.monthly degli script di shell, la cui elaborazione viene diretta da /usr/lib/cron/run-crons che viene invocato ogni 15 minuti dalla tabella principale (/etc/contrab); in questo modo, si assicura che vengano recuperate per tempo esecuzioni mancate.

Per motivi di chiarezza sono diversi script che svolgono il compito della manutenzione quotidiana (il pacchetto aaa_base). In /etc/cron.daily oltre a aaa_base vi è p.es. backup-rpmdb, clean-tmp o clean-vi.

9.1.3. File di log — il pacchetto logrotate

Molti servizi di sistema (ingl. daemon) ed il kernel stesso protocollano regolarmente lo stato del sistema od eventi particolari nei cosiddetti file protocollo (ingl. log files) che l'amministratore può consultare in qualsiasi momento per determinare lo stato del sistema in un momento particolare, nonché ricercare ed ovviare ad errori o malfunzionamenti. Come previsto dall'FHS, questi log file vengono normalmente memorizzati nella directory /var/log, il cui contenuto cresce di giorno in giorno. Con l'aiuto di logrotate, potete tenere sotto controllo il volume dei file di protocollo.

9.1.3.1. Configurazione

Nel file di configurazione /etc/logrotate.conf, viene determinato il comportamento generale. Con include, in particolare, si imposta quali altri file debbano essere analizzati; su è previsto che i singoli pacchetti di /etc/logrotate.d installino dei file (ad esempio, syslog o yast).

Example 9.2. Esempio di /etc/logrotate.conf

# see "man logrotate" for details
# rotate log files weekly weekly
# keep 4 weeks worth of backlogs rotate 4
# create new (empty) log files after rotating old ones create
# uncomment this if you want your log files compressed
#compress
# RPM packages drop log rotation information into this directory
include /etc/logrotate.d
# no packages own lastlog or wtmp - we'll rotate them here
#/var/log/wtmp {
#    monthly
#    create 0664 root utmp
#    rotate 1
#}
# system-specific logs may be also be configured here.

logrotate, invece, viene controllato tramite cron ed avviato da /etc/cron.daily/logrotate una volta al giorno.

[Important]Important

L'opzione create carica in memoria le impostazioni dei file /etc/permissions* eseguite dall'amministratore. Assicuratevi sempre che le vostre modifiche non creino dei conflitti.

9.1.4. Pagine di manuale

Per alcuni programmi GNU (per esempio tar), le pagine di manuale non vengono più aggiornate. Al loro posto, troverete un sommario nell'output di --help e un manuale dettagliato nei file Info. Info (info) è il sistema ipertestuale di GNU. Con info info otterrete delle prime istruzioni per l'uso. info è accessibile con Emacs emacs -f info o semplicemente con il comando info. Comodi da utilizzare sono tkinfo, xinfo; anche l'accesso tramite il sistema di aiuto risulta essere comodo.

9.1.5. Il comando locate

locate per trovare velocemente dei file non fa parte del software standard installato di default. Potete installarlo successivamente (find-locate) — una volta installato ogni note o ca. 15 minuti dopo l'accensione viene avviato automaticamente il processo updatedb.

9.1.6. Il comando ulimit

Con il comando ulimit (ingl. user limits), potrete limitare l'accesso all'uso delle risorse del sistema o visualizzare le risorse. ulimit è particolarmente adatto a limitare la memoria disponibile alle applicazioni. In questo modo, si può impedire che un'applicazione occupi troppo (o tutto lo) spazio di memoria, causando così il blocco del sistema.

Potrete lanciare di ulimit con opzioni diverse. Per limitare l'uso di memoria, usate le opzioni riportate nella tabella Table 9.1, “ulimit: impostare le risorse dell'utente”.

Table 9.1. ulimit: impostare le risorse dell'utente

-m

grandezza massima della memoria fisica

-v

grandezza massima della memoria virtuale

-s

grandezza massima dello stack

-c

grandezza massima dei core file

-a

visualizzazione dei limiti impostati.

Le impostazioni valide per l'intero sistema possono venire effettuate in /etc/profile. Una delle impostazioni consiste, ad esempio, nell'autorizzare la creazione di quei core file necessari ai programmatori per il “debug”. L'utente non è in grado di aumentare i valori impostati dall'amministratore del sistema in /etc/profile; è però possibile inserire determinate impostazioni nel proprio ~/.bashrc.

Example 9.3. Impostazioni ulimit in /.bashrc

# Limite della memoria reale:
ulimit -m 98304

# Limite della memoria virtuale:
ulimit -v 98304

La memoria viene espressa in KB. Per informazioni più dettagliate, consultate la pagina di manuale con man bash.

[Important]Important

Non tutte le shell supportano le indicazioni ulimit. Se non potete fare a meno di questo tipo di restrizioni, PAM (p.es. pam_limits) offre ampie possibilità di impostazione.

9.1.7. Il comando free

Il nome del comando free è un pò fuorviante, dal momento che questo comando serve a verificare quanta memoria venga attualmente utilizzata … . Troverete le informazioni essenziali in /proc/meminfo. Al giorno d'oggi, l'utente di un sistema moderno come Linux non dovrebbe preoccuparsene più di tanto. Il concetto di “RAM disponibile” risale ai tempi quando non vi erano ancora sistema di gestione unitaria della memoria unified memory management. Il motto di Linux è: la memoria libera è cattiva memoria (ingl. free memory is bad memory), il che vuol dire che Linux cerca sempre di bilanciare le varie cache, ma di non lasciare mai della memoria del tutto inutilizzata.

Di per sé, il kernel non sa nulla di programmi o dati dell'utente, perché lui li amministra in cosiddette “Page Cache”. Quando la memoria non basta più, parte di questi dati vengono spostati nella partizione swap o nei file dai quali sono stati originariamente estratti con la chiamata di sistema mmap (cfr. la pagina di manuale man mmap).

Inoltre, il kernel dispone anche di altre cache, come la cosiddetta “slab cache”, che contiene anche un buffer usato per l'accesso alla rete. Così si spiegano tutte le differenze tra i contatori di /proc/meminfo. La maggior parte delle cache (ma non tutte) possono essere consultate attraverso /proc/slabinfo.

9.1.8. Il file /etc/resolv.conf

La risoluzione del nome viene gestita tramite il file /etc/resolv.conf; cfr. la sezione Section 22.7, “DNS: Domain Name System”. Questo file viene attualizzato solo dallo script /sbin/modify_resolvconf. A nessun altro programma è consentito farlo. Solo così si può assicurare che la configurazione della rete ed i relativi dati rimangono consistenti.

9.1.9. Impostazioni per GNU Emacs

GNU Emacs è un ambiente di lavoro complesso; ulteriori informazioni sono reperibili sotto: http://www.gnu.org/software/emacs/.

Nei seguenti paragrafi indicheremo quali file di configurazione vengono processati da GNU Emacs al suo avvio. Al suo avvio Emacs legge diversi file per poter essere preconfigurato o adattato alle relative richieste in base a quanto stabilito dall'utente, amministratore di sistema e/o distribuzione.

Nella directory home viene installato per ogni utente il file di inizializzazione ~/.emacs di /etc/skel; .emacs a sua volta legge il file /etc/skel/.gnu-emacs. Se un utente vorrebbe effettuare degli adattamenti propri, si consiglia di copiare questo file .gnu-emacs nella propria directory home e di editarlo lì:

cp /etc/skel/.gnu-emacs ~/.gnu-emacs

In .gnu-emacs il file ~/.gnu-emacs-custom viene impostato come custom-file; se l'utente vuole effettuare delle impostazioni proprie ricorrendo alle possibilità offerta da customize, esse saranno memorizzate sotto ~/.gnu-emacs-custom.

Con il pacchetto emacs nel caso di il file site-start.el viene installato nella directory /usr/share/emacs/site-lisp. Il file site-start.el viene caricato prima del file di inizializzazione ~/.emacs. site-start.el garantendo che vengano caricati automaticamente dei file di configurazione speciali, che vengono installati con i pacchetti aggiuntivi di Emacs della distribuzione (p. es. il pacchetto psgml); questo tipo di file di configurazione si trova anche sotto /usr/share/emacs/site-lisp ed iniziano sempre con suse-start-.

L'amministratore di sistema locale può effettuare nel file default.el delle impostazioni che avranno validità per tutto il sistema. Ulteriori informazioni su questi file solo reperibili nel file info su Emacs, nell' Init File: info:/emacs/InitFile dove inoltre viene descritto come evitare all'occorrenza che questo file venga caricato.

Le componenti di Emacs sono distribuiti su diversi pacchetti:

  • Il pacchetto base emacs.

  • In più di solito si deve installare il pacchetto emacs-x11 che contiene il programma con supporto per l'X11.

  • Nel pacchetto emacs-nox trovate il programma senza supporto per X11.

  • Il pacchetto emacs-info contiene la documentazione in linea nel formato Info.

  • Il pacchetto emacs-el contiene i file di libreria non compilati in Emacs Lisp – non sono necessari in fase di esecuzione!

  • Numerosi pacchetti aggiuntivi che possono essere installati all'occorrenza: il pacchetto emacs-auctex (per LaTeX); psgml (per SGML/XML); gnuserv (per uso client/server) etc.

9.1.10. vi: una breve introduzione

Ancor oggi si ricorre a degli editor di testo per lavori di ritocco al sistema ma soprattutto per lavori di programmazione. Nel corso degli anni in ambito Unix si è affermato il vi quale editor che si distingue per funzionalità e che da un punto di vista ergonomico eclissa anche degli editor basati su mouse.

9.1.10.1. I modi: insert, command e extended

Fondamentalmente in vi si distinguono tre modi operativi; il modo insert, il modo command ed il modo extended.

Nella fase di rodaggio il fatto che i tasti hanno funzioni diverse a secondo del modo abilitato può dare adito a confusione. Illustreremo quindi di seguito metodi comuni per passare da un modo operativo all'altro. Dopo il suo avvio il vi normalmente si trova nel modo command.

Modo command → modo insert

Esistono numerose via per realizzare questo passaggio, le più comuni sono: a per append, i per insert oppure o per avere un nuovo rigo al di sotto del rigo attuale.

Modo insert → modo command

Per uscire dal modo insert premete il tasto ESC.

Nel modo insert non è possibile terminare il vi. Quindi a tal fine, tenete sempre bene in mente il tasto ESC.

Modo command → modo extended

Il modo extended di vi può essere attivato tramite i due punti. Il modo extended, chiamato anche modo ex rappresenta in fondo un editor testuale con il quale espletare una serie di operazioni anche di una certa complessità.

Modo extended → modo command

Dopo l'esecuzione di un comando nel modo extended ci si ritrova fondamentalmente nel modo command. Se vi trovate nel modo extended e non desiderate eseguire alcun comando, potete cancellare i due punti servendovi del tasto backspace e ritornerete nel modo command.

Tenete presente che per passare dal modo insert al modo extended è richiesto sempre un passaggio intermedio per il modo Command. Non è quindi possibile eseguire un passaggio diretto.

Agli inizi può causare delle difficoltà uscire da un nuovo editor, il vi qui non rappresenta affatto una eccezione. Cosa da tenere sempre bene in mente è che non potete uscire dal vi se vi trovate nel modo insert. Dovete prima uscire dal modo insert tramite il tasto ESC, ed in seguito si hanno due casi:

  1. Uscire senza salvare: se intendete terminare l'editor senza salvare le modifiche, va immesso nel modo command la combinazione dei tasti : q !. Il ! fa sì che il vi ignora le modifiche apportate.

  2. Uscire e salvare: per salvare le modifiche apportate e terminare in seguito l'editor potete scegliere tra possibilità diverse. Nel modo Command vi è il comando Shift Z Z. Considerate che nella maggior parte degli elenchi dei comandi non viene menzionato Shift visto che la Z maiuscola implica già Shift.

    Nel modo Extended vi è inoltre la combinazione dei tasti:: W Q.

Come avrete già intuito nel modo extended la W sta per “write” (scrivi) e la Q per “quit” (esci).

9.1.10.2. Il vi nell'uso quotidiano

Il vi può essere utilizzato alla stregua di un editor comune. Non appena entrate nel modo insert potete immettere del testo e cancellarlo ricorrendo ai tasti di backspace o CANC. Per muovere il cursore potete utilizzare i tasti freccia.

Spesso però vi sono delle difficoltà dovute al fatto che esistono numerosi tipi di terminale con ognuno particolari keycode. A questo punto entra in gioco il modo command.

Passate dal modo insert a quello command premendo il tasto ESC. Nel modo command potete muovere il cursore tramite i tasti H, J, K e L. Leggenda:

H

spostarsi di un carattere verso sinistra

J

spostarsi di un rigo verso il basso

K

spostarsi di un rigo verso l'alto

L

spostarsi di un carattere verso destra

I comandi nel modo command di vi possono essere eseguiti in maniera diversa. Di sicuro interesse è la possibilità di ripetere un comando varie volte, basta indicare il numero delle volte il comando debba essere ripetuto e fare seguire il comando vero e proprio. Immettendo quindi 5L il cursore si sposterà verso destra per cinque volte.

9.1.10.3. Ulteriori informazioni

Il vi offre un vasto numero di comandi. Potete scrivere delle macro, ricorrere a delle abbreviazioni, a buffer denominati e tante altre cose di sicura utilità. Descrivere tutte queste funzionalità in modo dettagliato ci porterebbe troppo lontano. A questo punto bisogna tuttavia ricordare che include una versione ottimizzata del vi ovvero vim (che sta per vi improved). Per chi vuole cimentarsi non mancano le fonti di informazione:

[Important]La licenza VIM

vim è un cosiddetto “charityware”, il che vuol dire che gli autori non vi chiedono dei soldi per il software ma di devolvere una somma a sostegno di un progetto di beneficenza. Si tratta del progetto a sostegno dei bambini in Uganda. Per ulteriori dettagli consultate i siti: http://iccf-holland.org/index.html, http://www.vim.org/iccf/ e http://www.iccf.nl/.