PERLE dalle GWN e non

Contenuti:

1.Usare il comando file

Il trucco di questa settimana vi mostra l'uso del comando file. Questo comando è presente in UNIX almeno dal 1973 ma è spesso overlooked. Comunque, è un comando estremamente utile per classificare i file.

Il comando file incluso nel pacchetto sys-apps/file, così se non lo avete ancora installato, dovete digitare emerge file. Probabilmente lo avrete già nel vostro sistema. Per usare file digitate semplicemente file nomefile e vedrete le informazioni sul file che gli avete passato. Facile no?

Esempio 1: Usare file


% file css current.xml tips-20031117.xml tips-20031117.html screenlog.0
css:                directory
current.xml:        symbolic link to `tips-20031117.xml'
tips-20031117.xml:  ASCII English text
tips-20031117.html: UTF-8 Unicode HTML document text, con very long lines
screenlog.0:        ASCII English text, con CRLF, CR line terminators, con escape sequences, con overstriking

// Potete anche usare file per guarare degli shell script
% file bin/fix bin/update_dat.sh
bin/fix:           a /usr/bin/perl -w script text executable
bin/update_dat.sh: a /bin/sh script text executable

// O controllare file binari
% file /bin/cp
/bin/cp: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.4.1, dynamically linked (uses shared libs), stripped

// Come ultimo esempio, potete usarlo sui file 'core'
% file core
core: ELF 32-bit LSB core file Intel 80386, version 1 (SYSV), SVR4-style,
SVR4-style, from 'a.out'
  

Questo dovrebbe aiutarvi ad iniziare ma ci sono molti altri usi di file, guardate la pagina man (man 1 file) per maggiori informazioni.

2.Uccidere una console virtuale sospesa

Il trucco di questa settimana vi mostra come ripristinare una console virtuale sospesa (senza riavviare). Per far questo, avete bisogno di sys-apps/lsof dal portage.

Usare lsof, trovare il processo di login della console sospesa.

Esempio 2: Esempio: (la console sospesa è /dev/vc/3)


# lsof /dev/vc/3
COMMAND   PID  USER   FD   TYPE DEVICE SIZE NODE NAME
login    7114  root    0u   CHR    4,3        17 /dev/vc/3
login    7114  root    1u   CHR    4,3        17 /dev/vc/3
login    7114  root    2u   CHR    4,3        17 /dev/vc/3
zsh     30630 david    0u   CHR    4,3        17 /dev/vc/3
zsh     30630 david    1u   CHR    4,3        17 /dev/vc/3
zsh     30630 david    2u   CHR    4,3        17 /dev/vc/3
zsh     30630 david   10u   CHR    4,3        17 /dev/vc/3

Uccidete il processo associato con questo login e la console dovrebbe rigenerarsi.

Esempio 3: Uccidere il processo della console virtuale


  # kill -9 7114 30630

3.Sequenze di escape ANSI: Colori

Il trucco di questa settimana vi mostra i colori del terminale come sequenze di escape ANSI. Queste possono essere usati per abbellire il prompt del terminale, testi, qualunque altra cosa che comprende le sequenze di escape ANSI.

Le sequenze di escape ANSI sono dei testi non stampabili che vengono interpretati per cambiare il formato di alcuni testi. In questo esempio, daremo un'occhiata specificamente all'uso di sequenze escape per specifici colori. Nel file /etc/profile standard di gentoo, ci sono alcuni esempi di questi colori che vengono usati per cambiare il colore di alcune parti del prompt del terminale . Per esempio, il pathname appare in blu e parti del prompt di bash vengono mostrate in rosso o verde a seconda se siete root o un normale utente.

Le sequenze di escape non stampabili sono sempre racchiuse \[\033[ e \]. i colori devono essere seguiti da m. Usando gli esempi da /etc/profile, possiamo vedere che il codice dei colori per il verde è 32, il codice per il blu è is 34, e il codice per il rosso è 31.

Esempio 4: PS1 da /etc/profile


// utente root
export PS1='\[\033[01;31m\]\h \[\033[01;34m\]\W \$ \[\033[00m\]'
                      red               blue
// normale utente
export PS1='\[\033[01;32m\]\u@\h \[\033[01;34m\]\W \$ \[\033[00m\]'
                      green                blue

La prossima parte è l'1 che precede il codice del colore attuale. Questo indica se il colore deve essere in grassetto o meno (0 per normale, 1 per grassetto). Così se volete un normale verde invece di un verde in grassetto, dovete usare 00;32m invece di 01;32m .

Nota: Questo non funziona con tutti i colori. Guardate la lista in fondo per una lista di quali sono disponibili in grassetto.

Per i colori di sfondo potreste voler usare 4x invece di 3x. Così per avere lo sfondo blu invece del testo, potete usare 00;44m invece di 01;34m.

Qui c'è una lista di colori e delle loro sequenze di escape.

Esempio 5: Codice colore

    Black      0;30       Dark Gray    1;30
    Red        0;31       Bold Red     1;31
    Green      0;32       Bold Green   1;32
    Yellow     0;33       Bold Yellow  1;33
    Blue       0;34       Bold Blue    1;34
    Purple     0;35       Bold Purple  1;35
    Cyan       0;36       Bold Cyan    1;36
    Light Gray 0;37       White        1;37
  

Nota: La sequenza ANSI 0;33 è messa come marrone nel BASH-Prompt HOWTO, ma sembra più giallo mostarda. Praticamente, la versione in grassetto di questo è in realtà giallo - così l'ho messo come giallo.

4.Backup aggiornato dei file con tar

Il trucco di questa setimana vi mostra un modo veloce per il backup dei file con tar.

Una delle opzioni per tar è -T che vi permette di specificare quali file devono andare nell'archivio tar. Così, ceate un file chiamato backup.conf e metteteci la lista di tutti i file o le directory di cui volete fare il backup (uno per linea). Poi eseguite tar e specificate -T backup.conf.

Esempio 6: Backup.conf


# touch /etc/backup.conf
# ls /etc/passwd >> /etc/backup.conf
# ls /etc/shadow >> /etc/backup.conf
# ls /etc/group >> /etc/backup.conf
# ls /etc/make.conf >> /etc/backup.conf
# ls /etc/postfix >> /etc/backup.conf

// Aggiungere più file/directory come necessario

Ora usate tar per creare l'archivio dei vostri file.

Esempio 7: tar -T


# tar -cjf backup-`date +%Y-%m-%d`.tar.bz2` -T /etc/backup.conf
 

Questo archivia i vostri file in un file chiamato backup-YYYY-MM-DD.tar.bz2 (dove YYYY è l'anno, MM è il mese, e DD è il giorno).

Nota: Potete anche specificare un path assoluto come /backups/backup-`date +%Y-%m-%d.tar.bz` ed eseguire il comando come script da cron su una base ricorrente.

5.Trucchi per 'ls'

Il trucco di questa settimana vi mostra alcune utili varianti di uno dei più comuni comandi in un sistema linux: ls.

Usate '-s' per stampare la dimensione dei file e '-S' per ordinare i file per dimensione.

Esempio 8: Lista di file per dimensione


// aggiungete -r per stamparli in ordine inverso
# ls -sSh

Usate '-t' e '--time-style=long-iso' per stampare i file ordinati per data di modifica in output standard.

Esempio 9: Lista di file per data


# ls -lgot --time-style=long-iso

Usate '--sort=extension' per ordinare i file secondo la loro estensione (per vedere perl scripts, shell scripts, etc. ordinati in gruppo).

Esempio 10: Ordinare i file per etensione/versione


# ls -lgo --sort=extension

// o ordinati per versione
# ls -lgo --sort=version
    

Nota: Le opzioni '-g' e '-o' rimuovono la colonna del gruppo e del proprietario dall'output.

Ci sono molte altre opzioni, ma queste sono solo alcune che potrebbero essere utili.

6.Usare /etc/skel

Il trucco di questa settimana vi mostra come usare /etc/skel per essere sicuri che tutti i nuovi utenti sul vostro sistema abbiano la stessa configurazione iniziale.

La directory /etc/skel è la directory usata da useradd per creare la configurazione di default nella home directory dei nuovi utenti.

Per cambiare la posizione di /etc/skel, modificate /etc/default/useradd.

Esempio 11


# useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel

I file tipicamente inclusi in /etc/skel sono file .rc file per l'inizializzazione della shell, ma potreste anche inserire una directory public_html, un file dircolors personalizzato, o qualunque altra cosa.

Esempio 12

% ls -A /etc/skel
.bash_profile  .bashrc  .maildir  .screenrc  .tcsh.config

per maggiori informazioni su come configurare /etc/skel guardate man useradd.

7.Linux Magic System Request Key Hacks

Il trucco di questa settimana vi mostra come la chiave 'magica' SysRq può essere usata per inviare eventi al kernel Linux.

Per abilitare la chiave SysRq, compilate CONFIG_MAGIC_SYSRQ nel kernel. Per disabilitarlo a runtime, usate echo "0" > /proc/sys/kernel/sysrq.

Per usare la chiave SysRq, usate ALT-SysRq-<commmand key>. Questo vi permette di inviare comandi direttamente al kernel che saranno eseguiti immediatamente a meno che la macchina non sia completamente bloccata.

Alcuni usi di SysRq sono:

  • Uccidere tutti i processi sulla console virtuale corrente
  • Riavviare il sistema immediatamente
  • Sincronizzare tutti i filesystem
  • Eseguire il dump della memoria sulla console
  • Uccidere tutti i processi eccetto init
  • Configurare il livello di log della console

Per informazioni più dettagliate sull'uso di SysRq guardate la documentazione del kernel in /usr/src/linux/Documentation/sysrq.txt

8.Shell Auto-logout

Il trucco di questa settimana vi mostra come eseguire il logout automatico dalla vostra shell dopo un dato periodo di tempo.

Usate la variabile TMOUT nella vostra shell per controllare per quanto tempo la vostra shell rimarrà loggata senza attività. Per esempio, per far eseguire il logout alla shell dopo 1 ora di inattività , aggiungete TMOUT=3600 al file di inizializzazione della vostra shell (e.g. .bashrc o .zshrc). Può anche essere aggiunto per tutto il sistema in /etc/profile come configurazione di default per tutti gli utenti.



Ultimo aggiorn.:
7 Gennaio 2004
Sommario: Questo doc contiene una collezione di perle prese dalle varie GWN di Gentoo, con alcune aggiunte.
- 2002 Gentoo.it - Domande, commenti e/o correzioni? Email gentoo-dev@gentoo.it.