Questi i due scripts rivisti e corretti nella forma al momento finale.
[list=*]
*]Per l’avvio, OK_chek_byzanz:
[code]
#!/bin/bash
if “$(pidof byzanz-record)” ]; then # process was found
# PID del processo byzanz-record
pid_byzanz=$(ps -o pid --no-headers -C "byzanz-record")
# tempo di esecuzione in minuti:secondi
time1_byzanz=$(ps -p ${pid_byzanz} -o etime=)
# tempo di esecuzione in secondi
time2_byzanz=$(ps -p ${pid_byzanz} -o etime= > /tmp/byzanz_elapsed_time && more /tmp/byzanz_elapsed_time | sed -E 's/(.*):(.+):(.+)/\1*3600+\2*60+\3/;s/(.+):(.+)/\1*60+\2/' | bc)
# tempo di esecuzione in ore:minuti:secondi, necessario a ffmpeg
h=$(( $time2_byzanz / 3600 ))
m=$(( ( $time2_byzanz / 60 ) % 60 ))
s=$(( $time2_byzanz % 60 ))
hh_mm_ss=$(printf "%02d:%02d:%02d\n" $h $m $s)
echo -e "\n\nbyzanz-record è già stato avviato. Il suo PID è $pid_byzanz, e il suo tempo di attività è $time1_byzanz, ovvero $time2_byzanz secondi, che possono anche essere espressi come $hh_mm_ss.\n\nQuest'ultimo formato sarà utilizzato come informazione da passare a ffmpeg per tagliare il file temporaneo generato da byzanz-record e salvato nel percorso \$HOME/byzanz_temp_recording.flv.\n\nNB: Questo script, se lanciato da terminale, può anche semplicemente stampare a schermo il solo tempo di attività trascorso, nel formato hh:mm:ss, che verrà passato automaticamente come informazione a ffmpeg, senza questa parte discorsiva. Per fare questo, è sufficiente modificare il codice con la rimozione del carattere cancelletto (#) posto alla fine di questa riga, per attivare il pipe (|) seguito dal comando \"echo \$hh_mm_ss\" (senza le virgolette).\n\n" # | echo $hh_mm_ss
else
# process not found
echo -e “\n\nbyzanz-record non è un processo aperto e verrà ora avviato!\n\n”
byzanz-record -v -a -c --display=:0.0 --width=1366 --height=768 --duration=86400 --delay=0 $HOME/byzanz_temp_recording.flv &
fi
superfluo
exit 0
[/code]/*]
[/list]
[list=*]
*]Per l’interruzione, OK_kill_byzanz:
[code]
#!/bin/bash
dichiarazione cartella in cui infilare l’output
OUT_DIR="$HOME/Byzanz videos"
if “$(pidof byzanz-record)” ]; then # process was found
# PID del processo byzanz-record
pid_byzanz=$(ps -o pid --no-headers -C "byzanz-record")
# tempo di esecuzione in minuti:secondi
time1_byzanz=$(ps -p ${pid_byzanz} -o etime=)
# tempo di esecuzione in secondi
time2_byzanz=$(ps -p ${pid_byzanz} -o etime= |sed -E 's/(.*):(.+):(.+)/\1*3600+\2*60+\3/;s/(.+):(.+)/\1*60+\2/' |bc)
# tempo di esecuzione in ore:minuti:secondi, necessario a ffmpeg
h=$(( $time2_byzanz / 3600 ))
m=$(( ( $time2_byzanz / 60 ) % 60 ))
s=$(( $time2_byzanz % 60 ))
hh_mm_ss=$(printf "%02d:%02d:%02d\n" $h $m $s)
# ora di esportazione del file, da includere nel suo nome
mydate=$(date +"EndTime-%H.%M.%S")
echo -e "\n\nIl processo byzanz-record, identificato dal PID $pid_byzanz, verrà ora interrotto ed elaborato da ffmpeg per dare l'output finale nel percorso \$HOME/Byzanz videos/Byzanz_output_EndTime-h.m.s.flv; notare come il file ottenuto incorpora l'ora a cui è stato generato, espressa nel formato ora.minuto.secondo, evitando in tal modo la possibilità che possa essere sovrascritto, se avviato un successivo processo tramite lo script \"OK_chek_byzanz\".\n\nIl tempo di attività è stato $time1_byzanz, ovvero $time2_byzanz secondi, esprimibili anche come $hh_mm_ss.\n\n"
# interruzione registrazione
killall byzanz-record
# creazione directory dove mettere il file salvato da ffmpeg
test -d "$OUT_DIR" || mkdir "$OUT_DIR"
# processazione dell'output di byzanz-record, operata da ffmpeg
ffmpeg -y -ss 00:00:00 -t $hh_mm_ss -i $HOME/byzanz_temp_recording.flv -vcodec copy -acodec copy "$OUT_DIR"/Byzanz_output_$mydate.flv &> /dev/null
# controllo dell'esito del processo di ffmpeg
if "$?" -eq 0 ]; then # vero se $? è uguale a 0
echo -e "\n\nIl processo è terminato positivamente. Il file è pronto nel percorso "$OUT_DIR"/Byzanz_output_$mydate.flv.\n\n"
else
echo -e "\n\nIl processo non è andato a buon fine. Il codice di uscita è $?. Non è stato prodotto alcun file "$OUT_DIR"/Byzanz_output_$mydate.flv.\n\n"
fi
# rimozione del file temporaneo generato da byzanz-record
rm -f $HOME/byzanz_temp_recording.flv
else # process not found
echo -e “\n\nbyzanz-record non è avviato! Non c’è alcun processo da interrompere.\n\n”
fi
superfluo
exit 0
[/code]/*]
[/list]
Consiglio, magari, dopo averli resi eseguibili, di inserirli in una cartella a scelta nella propria home, aggiungendola alla PATH nel file .bashrc o .bash_profile; io, ad esempio, li ho inseriti nella cartella $HOME/Programmi/bin, aggiornando la $PATH in .bash_profile scrivendo:
PATH=$PATH:$HOME/.local/bin:$HOME/Programmi/bin:$HOME/bin
export PATH
Salvato il file, eseguire il logout e un successivo login per abilitare il richiamo e lancio dei due scripts direttamente da terminale, oltre che dai due lanciatori appositamente creati ed inseriti in /usr/share/applications, per richiamarli magari poi con gnome-do lanciato all’avvio della sessione.