Capitolo 10. Funzioni speciali di SUSE Linux

Sommario

10.1. Informazioni sui pacchetti di software speciali
10.2. Console virtuali
10.3. Mappatura della tastiera
10.4. Impostazioni internazionali e della lingua

Estratto

La prima parte del presente capitolo descrive i vari pacchetti software, le console virtuali e il layout della tastiera. Vengono trattati i componenti software come bash, cron e logrotate, nella misura in cui sono stati modificati o migliorati nelle versioni più recenti. Sebbene si tratti di software secondari, è utile modificarne il comportamento poiché lavorano a stretto contatto con il sistema. Il capitolo si conclude con una sezione dedicata alle impostazioni internazionali e della lingua (I18N e L10N).


10.1. Informazioni sui pacchetti di software speciali

I programmi bash, cron, logrotate, locate, ulimit e free, e il file resolv.conf sono molto importanti per gli amministratori di sistema e per molti utenti. La documentazione e le pagine info sono due fonti utili, ma non sempre disponibili, di informazioni. GNU Emacs è un editor di testo diffuso e molto flessibile.

10.1.1. Il pacchetto bash e il file /etc/profile

Il pacchetto Bash è la shell di default in SUSE Linux. Se usato come shell di login, esso legge numerosi file di inizializzazione. Bash li elabora nell'ordine in cui compaiono in questo elenco.

  1. /etc/profile

  2. ~/.profile

  3. /etc/bash.bashrc

  4. ~/.bashrc

Le impostazioni personalizzate possono essere effettuate nei file ~/.profile o ~/.bashrc. Per garantire l'elaborazione corretta di questi file, è necessario copiare le impostazioni di base dal file /etc/skel/.profile o /etc/skel/.bashrc nella home directory dell'utente. Dopo un aggiornamento, si consiglia di copiare le impostazioni da /etc/skel. Per evitare la perdita di impostazioni personalizzate, eseguire i seguenti comandi della shell:

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

Quindi copiare le impostazioni personalizzate dai file *.old.

10.1.2. Il pacchetto cron

cron è lo strumento classico per eseguire comandi su base regolare e automatica in background. cron è controllato da tabelle orarie formattate in modo speciale. Alcune di esse vengono fornite con il sistema, altre possono essere generate dall'utente stesso.

Le tabelle cron si trovano in /var/spool/cron/tabs. Il file /etc/crontab funge da tabella cron globale. Immettere il nome utente per eseguire il comando direttamente dopo l'ora di pianificazione e prima del comando. Nell'esempio riportato nell'Esempio 10.1, "Esempio di voce nel file /etc/crontab", è stato immesso root. Lo stesso formato si applica alle tabelle specifiche al pacchetto ubicate in /etc/cron.d. Vedere la documentazione su cron (comando man cron).

Esempio 10.1. Esempio di voce nel file /etc/crontab

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

Non è possibile modificare il file /etc/crontab tramite chiamata del comando crontab -e. Questo file deve essere direttamente caricato in un editor, modificato, quindi salvato.

Numerosi pacchetti installano degli script di shell nelle directory /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly e /etc/cron.monthly; l'esecuzione di tali script è controllata da /usr/lib/cron/run-crons. Il file /usr/lib/cron/run-crons viene eseguito ogni 15 minuti dalla tabella principale (/etc/crontab). In questo modo, si è sicuri che i processi eventualmente sfuggiti possano essere eseguiti all'orario corretto.

Per eseguire gli script hourly, daily o altri script di manutenzione periodica a orari personalizzati, rimuovere i file di registrazione dell'orario associati a voci nel file /etc/crontab. Vedere l'esempio Esempio 10.2, "/etc/crontab: rimozione dei file di registrazione dell'orario" in cui è stato rimosso lo script hourly prima dello scadere di ogni ora, lo script daily una volta al giorno alle 02:14, ecc.).

Esempio 10.2. /etc/crontab: rimozione dei file di registrazione dell'orario

59 *  * * *     root  rm -f /var/spool/cron/lastrun/cron.hourly
14 2  * * *     root  rm -f /var/spool/cron/lastrun/cron.daily
29 2  * * 6     root  rm -f /var/spool/cron/lastrun/cron.weekly
44 2  1 * *     root  rm -f /var/spool/cron/lastrun/cron.monthly

I lavori di manutenzione quotidiana del sistema sono stati distribuiti tra vari script per motivi di chiarezza. Questi si trovano nel pacchetto aaa_base. /etc/cron.daily contiene, ad esempio, i componenti suse.de-backup-rpmdb, suse.de-clean-tmp o suse.de-cron-local.

10.1.3. File di log: pacchetto logrotate

Esistono dei servizi di sistema (daemon) che, assieme al kernel, registrano regolarmente lo stato del sistema e specifici eventi nei file di log. In questo modo, l'amministratore può controllare lo stato del sistema in determinati momenti, identificare errori o guasti e risolverli in modo preciso. Questi file di log sono normalmente memorizzati in /var/log come specificato in FHS (File System Hierarchy) e la loro dimensione cresce regolarmente. Il pacchetto logrotate consente di controllare la crescita di questi file.

logrotate può essere configurato tramite il file /etc/logrotate.conf. In particolare, la variabile di sistema include indica gli ulteriori file da leggere. In SUSE Linux, i programmi che generano file di log installano i propri file di configurazione in /etc/logrotate.d. Ad esempio, tali programmi sono inclusi nei pacchetti apache2 (/etc/logrotate.d/apache2) e syslogd (/etc/logrotate.d/syslog).

Esempio 10.3. 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 è controllato da un cron e viene quotidianamente chiamato da /etc/cron.daily/logrotate.

[Important]Importante

L'opzione create legge tutte le impostazioni effettuate dall'amministratore in /etc/permissions*. Accertarsi che non si verifichino conflitti da modifiche personali.

10.1.4. Il comando locate

locate, un comando per trovare velocemente dei file, non è incluso nell'installazione di default del software. Se desiderato, è possibile installare il pacchetto find-locate. Il processo updatedb viene avviato automaticamente tutte le notti o 15 minuti circa dopo l'avvio.

10.1.5. Il comando ulimit

Grazie al comando ulimit (limiti utente), è possibile impostare limiti all'utilizzo delle risorse di sistema nonché visualizzare gli stessi. ulimit è particolarmente utile per limitare la memoria disponibile per le applicazioni. Con questo comando, è possibile impedire l'utilizzo di eccessiva memoria da parte di un'applicazione con possibile conseguente blocco del sistema.

Il comando ulimit può essere usato con varie opzioni: Per limitare l'utilizzo della memoria, usare le opzioni elencate nella Tabella 10.1, "Comando ulimit: impostazione delle risorse per l'utente".

Tabella 10.1. Comando ulimit: impostazione delle risorse per l'utente

-m

Dimensione massima della memoria fisica

-v

Dimensione massima della memoria virtuale

-s

Dimensione massima dello stack

-c

Dimensione massima dei file di base

-a

Visualizzazione dei limiti impostati

Le impostazioni globali possono essere definite in /etc/profile. In questo ambito, abilitare la creazione dei file di base richiesti dai programmatori per il debug. Un utente normale non può aumentare i valori specificati in /etc/profile dall'amministratore di sistema, ma può inserire voci speciali in ~/.bashrc.

Esempio 10.4. Comando ulimit: impostazioni in ~/.bashrc

# Limits of physical memory:
ulimit -m 98304
 
# Limits of virtual memory:
ulimit -v 98304

Le quantità di memoria devono essere specificate in KB. Per ulteriori informazioni, vedere man bash.

[Important]Importante

Le direttive del comando ulimit non sono supportate da tutte le shell. PAM (ad esempio pam_limits) offre ampie possibilità di regolazione delle impostazioni per queste restrizioni.

10.1.6. Il comando free

Il comando free non serve a determinare la quantità di RAM attualmente usata. Tali informazioni sono disponibili in /proc/meminfo. Oggigiorno, gli utenti che dispongono di moderni sistemi operativi, come Linux, non dovrebbero preoccuparsi della memoria. Il concetto di RAM disponibile risale a prima della gestione unificata della memoria. Lo slogan memoria libera memoria cattiva si adatta bene a Linux. Di conseguenza, Linux ha sempre rivolto gli sforzi nell'ottica di bilanciare la cache senza consentire di fatto la memoria libera o inutilizzata.

In realtà, il kernel non è collegato direttamente ad applicazioni o a dati utente. Invece, esso gestisce le applicazioni o i dati utente in una cache di pagina. In caso di memoria insufficiente, parti della cache vengono scritte nella partizione di scambio o in file da cui possono essere inizialmente lette tramite il comando mmap (vedere man mmap).

Il kernel contiene anche altre cache, come la cache slab che memorizza le cache per l'accesso alla rete. Ciò potrebbe spiegare le differenze tra i contatori in /proc/meminfo. La maggior parte, ma non tutti, sono accessibili tramite /proc/slabinfo.

10.1.7. Il file /etc/resolv.conf

La risoluzione del nome di dominio è gestita attraverso il file /etc/resolv.conf. Vedere il Capitolo 20, DNS (Domain Name System).

Questo file è aggiornato esclusivamente dallo script /sbin/modify_resolvconf; nessun altro programma è autorizzato a modificare direttamente /etc/resolv.conf. L'applicazione di questa regola è l'unico mezzo per garantire che la configurazione di rete del sistema e i file pertinenti vengano mantenuti in uno stato coerente.

10.1.8. Documentazione e pagine info

Per alcune applicazioni GNU (come tar), la documentazione non è più aggiornata. Per questi comandi, usare l'opzione --help per ottenere una rapida panoramica delle pagine info, che offrono istruzioni più dettagliate. info è il sistema ipertestuale di GNU. Per visualizzare un'introduzione su questo sistema, immettere info info. Le pagine info possono essere visualizzate con Emacs digitando emacs -f info o direttamente in una console con info. Per visualizzare le pagine info, è possibile anche usare tkinfo, xinfo o il sistema della guida di SUSE.

10.1.9. Impostazioni per GNU Emacs

GNU Emacs è un ambiente di lavoro complesso. Le seguenti sezioni illustrano i file di configurazione elaborati all'avvio di GNU Emacs. Ulteriori informazioni sono disponibili all'indirizzo http://www.gnu.org/software/emacs/.

All'avvio Emacs legge numerosi file contenenti le impostazioni di personalizzazione o preconfigurazione relativi a utente, amministratore di sistema e distributore. Il file di inizializzazione ~/.emacs è installato nelle home directory dei singoli utenti a partire da /etc/skel. Il file .emacs legge a sua volta il file /etc/skel/.gnu-emacs. Per personalizzare il programma, copiare il file .gnu-emacs nella home directory (con il comando cp /etc/skel/.gnu-emacs ~/.gnu-emacs) quindi apportare le impostazioni desiderate in tale directory.

Il file .gnu-emacs definisce il file ~/.gnu-emacs-custom come custom-file. Se l'utente crea alcune impostazioni con le opzioni di personalizzazione di Emacs, le impostazioni vengono salvate nel file ~/.gnu-emacs-custom.

Con SUSE Linux, il pacchetto emacs installa il file site-start.el nella directory /usr/share/emacs/site-lisp. Il file site-start.el viene caricato prima del file di inizializzazione ~/.emacs. Tra l'altro, il file site-start.el assicura che i file di configurazione speciali distribuiti con i pacchetti aggiuntivi di Emacs, come psgml, vengano caricati automaticamente. I file di configurazione di questo tipo sono anch'essi collocati in /usr/share/emacs/site-lisp e iniziano sempre con suse-start-. L'amministratore di sistema locale può specificare impostazioni valide per l'intero sistema nel file default.el.

Ulteriori informazioni su questi file sono disponibili nel file info di Emacs nella sezione relativa al file di inizializzazione: info:/emacs/InitFile. Sempre in tale sezione sono disponibili istruzioni per disabilitare, se necessario, il caricamento di questi file.

I componenti di Emacs sono costituiti da più pacchetti:

  • Il pacchetto base emacs.

  • emacs-x11 (di norma installato): il programma con supporto per X11.

  • emacs-nox: il programma senza supporto per X11.

  • emacs-info: documentazione in linea in formato info.

  • emacs-el: i file di libreria non compilati in Emacs Lisp. Tali file non sono necessari in fase di runtime.

  • Se necessario è possibile installare numerosi pacchetti aggiuntivi: emacs-auctex (per LaTeX), psgml (per SGML e XML), gnuserv (per il funzionamento del client e del server) e altri.