mercoledì, aprile 02, 2008

Pianificare operazioni su linux con AT

Quando uno mi dice "dai installami linux, così imparo un po' di linux" non riesco a capire cosa voglia dire... cosa vuoi imparare di linux? non puoi "imparare linux", puoi imparare alcuni aspetti...
uno degli aspetti che secondo me sono da conoscere - perché molto potenti e flessibili - è bash script. Chiaramente non possiamo metterci a fare un corso, ma daremo luce ad alcune parti molto utili.

Una cosa mooolto utile è AT per poter eseguire scripts a una certa data, ora.
Questo minicorso ci è offerto da Matteo Adorisio (sapientemente editato da me ;-) ).

Aprite un terminale e digitate:
at ore.minuti gg/mm/aa
[enter]
La sintassi gg/mm/aa che descrive il giorno può essere sostituita anche da tomorrow oppure today.

per esempio
elijah@ububook:~$ at 15.00 today
warning: commands will be executed using /bin/sh

dunque tutto ciò che scriverete d'ora in poi verrà interpretato come codice bash (attenzione non funziona l'autocompletamento); di default possono essere eseguiti solo programmi che non richiedono l'avvio di interfaccia grafica.
Altrimenti dovremmo scrivere come prima operazione una cosa del tipo:
at> export DISPLAY=:0 && vlc /home/elijah/Musica/musica.ogg

(at> è già presente sul terminale...)
Dopo aver comunicato in sequenza le operazioni da fare si preme CTRL+D e la shell ci dirà:
at> eot 


Veniamo un po' al dunque.
Per gestire i processi ci sono due comandi utili (il resto da sapere: man at):
at -l

visualizza i processi in coda e il loro PID, nel nostro esempio:
elijah@ububook:~$ at -l
1 Mon Mar 31 15:00:00 2008 a elijah

mentre:
atrm PID_PROCESSO

rimuove il processo con PID=PID_PROCESSO

Un esempio dell'utilizzo che si può fare di at.
Mi sono documentato sull'uso di at per poter registrare trasmissioni in streaming e ho trovato molto utile mplayer, un programma dalle potenzialità infinite.
Ad esempio simuliamo una situazione:
Per registrare lo streaming da un sito rtsp://:
at 7.00 tomorrow
warning: commands will be executed using /bin/sh
at> mplayer -dumpstrem rtsp://indirizzo_streaming_da_cui_prendere_ciò_che_ci_piace [enter]
at> eot

Il comando fornisce in output un file stream.dump che può essere ascolatato solo con mplayer.
Per renderlo più portabile lo traformiamo in .wav con:
mplayer -ao pcm stream.dump

converte stream.dump in audiodump.wav e poi volendo in .mp3 con
lame inputfile outputfile

Tutto ciò può essere automatizzato scrivendo degli script bash comunicandoli al sistema attraverso l'opzione:
at -f nomescript.sh ore

(-f esegue un file)
Uno dei miei scripts per rinominare i files: (aka=rinomino.sh)
#!bin/sh
#dichiaro alcune costanti utili
artista="M_Knopfler"
concerto="kill_to_get_crimson"
radio="...."
directory_dest="Concerti_Radio2"

killall mplayer #termino la registrazione, si puo' fare in maniera piu' elegante
cp /home/matador/stream.dump $artista-$concerto-$radio.stream
mv /home/matador/$artista-$concerto-$radio.stream /home/matador/$directory_dest

exit
#qui finisce il file

quindi, avvio la registrazione come spiegato prima e poi alla fine:
$at -f rinomino.sh orafineconcerto

ecco tutto.
spero che sia quasi tutto chiaro.
Matteo oisirodA


ps: ringrazio Matteo per il suo contributo, ne attendiamo ancora!
per ulteriori info man at
ciao
d

Nessun commento: