viernes, 6 de diciembre de 2013

Linux: Scripts d'inici a Debian

Per afegir un script d'inici a l'arranc de Debian (per altres distribucions deu ser similar, deuen canviar les rutes i les comandes potser).

xddxdd@debian:~$ chmod +x script.sh

Canviem a root.

root@debian:~# cd /etc/init.d

Copiem l'script a aquest directori.

root@debian:~# update-rc.d script.sh defaults 99 

(99 és l'últim a la llista d'execució, es pot baixar el nombre a conveniència).

Si desitgéssim treure'l de l'arranc:

root@debian:~# update-rc.d -f script.sh remove

Linux: Solució als problemes de consum de CPU d'aMule

Sembla ser que aMule té alguns problemes d'alt consum de CPU, cosa totalment inaceptable per un procés que hauria de tenir un consum pràcticament despreciable donat el tipus de programa que és. Per solucionar-ho, aquest blog ens proposa aquesta solució.

http://allencch.wordpress.com/2012/08/17/amule-high-cpu-usage-solution/

Per qui no vulgui entrar a la pàgina o per si mai l'enllaç està down, la solució es instal·lar aMule en versió dimoni (Daemon, programa resident en memòria, no interactiu, executat en segon pla) i instal·lar aMule-gui per controlar-lo. Els passos per instal·lar-ho i configurar-ho són:

xddxdd@debian:~$ aptitude install amule-daemon amule-utils-gui

xddxdd@debian:~$ amuled -f -> creem la carpeta .aMule i els seus arxius (-f per ke vagi en background)

xddxdd@debian:~$ echo -n "mi-clave" | md5sum -> Substituir mi-clave per un password que vulguem i amb md5sum xifra la clau seguint uns algoritmes que ara no ens interessa saber.

xddxdd@debian:~$ gedit ~/.aMule/amule.conf -> Editem l'arxiu de configuració d'aMule i canviem les següents opcions.

AcceptExternalConnections=0
ECPassword=

per

AcceptExternalConnections=1
ECPassword=4c882dcb24bcb1bc225391a602feca7c  -> La contrassenya xifrada d'abans.

I tot seguit guardem.

xddxdd@debian:~$ killall amuled -> Matem el procés.

xddxdd@debian:~$ amuled -f & amule-gui (ho poso a la icona de l'aMule de l'entorn gràfic que tinguem)

De cara a tenir més seguretat, és recomanable borrar la contrassenya que hem xifrat abans de l'historial de bash (~/.bash_history).

Linux: Scripts de compressió utilitzant 7z.

7z fins a dia d'avui ofereix una de les millors ratios de compressió. Ara bé, com totes les eines, 7z pot ser configurat amb diferents paràmetres segons els interessos de l'usuari, com per exemple donar més importància a la taxa de compressió enfront la vel·locitat de compressió o a l'inrevés. Aquests 2 scripts que proposo aquí, són els que faig servir jo per les 2 situacions en les que em trobo que vull comprimir arxius:

1. Comprimeix qualsevol arxiu o directori (i els seus respectius arxius i subdirectoris, per tant és recursiu) utilitzant la comanda amb la que donem nom: ./exemple.sh nom_arxiu o ./exemple.sh nom_directori i 7z crearà un arxiu amb extensió 7z, amb el mateix nom base de l'arxiu o directori que haguem entrat per paràmetre. ./exemple.sh nom_arxiu.mp3 crearia l'arxiu arxiu.mp3.7z o ./exemple.sh nom_directori crearia un arxiu nom_directori.7z

#!/bin/sh
base=`echo $1 | sed 's/ /_/g' | tr -d '()/'`
/usr/bin/7z a -mx=9 -mmt=on -r $base.7z "$1"

2. Comprimeix TOTS els directoris dins del subdirectori on estiguem, però crea un arxiu 7z per a cada directori, el qual m'és sumament útil (Si tenim 4 carpetes per exemple, aquest script genera 4 arxius 7z amb el nom base de cada carpeta + l'extensió 7z).

 #!/bin/bash
for folder in */
do
base=`echo $folder | sed 's/ /_/g' | tr -d '()/'`
/usr/bin/7z a -mx=9 -mmt=on -r $base.7z "$folder"
done

NOTA IMPORTANT: A més, tot sovint utilitzo aquesta opció -v3g que el que fa és que limita els arxius a 3GB (per qüestions de tamany de FAT32, hi poso 3GB ja que el paràmetre acceptat només és de Gigabyte natural, és a dir, 1GB, 2GB, 3GB, 4GB, 5GB etc.) de manera que si es necessiten més de 3GB, 7z generarà més d'un arxiu, amb extensio 00X. Per exemple per a un arxiu amb 7z de 4GB, es generar un arxiu1.7z.001 i un arxiu2.7z.002. El problema d'això (bé, més que problema, molestia, és que si afegim aquest paràmetre al script, totes les compressions de només 1 arxiu 7z es generaran amb 001 (arxiu.7z.001) i a mi personalment no m'acaba d'agrada perque pot dur confusió amb d'altres tipus d'arxius com HJSplit (a Linux, hi ha la variant que funciona igual anomenada LXSplit). La solució és o bé separar les carpetes que ocupin més de 3GB i les que ocupin fins a 3GB en 2 subcarpetes (exemple, 2 carpetes, una que conté 5 carpetes que ocupen 2, 2, 2,1 i 1 GB, i una altra carpeta que conté 3 carpetes de 4, 5 i 6 GB) de manera que en les carpetes que ocupin menys de 3GB no adherim el paràmetre -v3g al script i en les altres carpetes si l'adherim, o bé utilitzem la comanda rename per renombrar els arxius generats per 7z que només tinguin un arxiu *.7z.001 de la manera que proposo més abaix, de manera que ja no hem de modificar l'script, deixant el paràmetre -v3g sempre per a l'script:

xddxdd@debian:~$ rename 's/\.7z.001/\.7z/' *.7z.001


jueves, 5 de diciembre de 2013

Linux: Identificació de disc dur i informació

Tan senzill com (apt-get install hdparm):

root@debian:/home/buga# hdparm -i /dev/sda

(ha d'ésser executat amb privilegis de root)

Exemple de output:

/dev/sda:

 Model=TOSHIBA THNSNH128GBST, FwRev=HTRAN101, SerialNo=33BS105ZTE4Y
 Config={ Fixed }
 RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=0
 BuffType=unknown, BuffSize=unknown, MaxMultSect=16, MultSect=16
 CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=250069680
 IORDY=on/off, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120}
 PIO modes:  pio0 pio3 pio4 
 DMA modes:  mdma0 mdma1 mdma2 
 UDMA modes: udma0 udma1 udma2 udma3 udma4 *udma5 
 AdvancedPM=yes: unknown setting WriteCache=enabled
 Drive conforms to: Unspecified:  ATA/ATAPI-3,4,5,6,7
                                                                                                                                                                       

 * signifies the current active mode                                


Linux: Subtítols de pel·lícules MKV.

Ara recentment, utilitzant el format MKV, m'interessa la idea de tenir subtítols a les pel·licules, encara que no es tasca fàcil trobar-los. Una vegada trobats (Google o mirar la secció de Links d'aquesta web), alguns d'ells no es corresponen seqüèncialment amb la nostra versió de pel·lícula (ull, hi ha pel·lícules que tenen versiones extendidas i llavors això no entraria dins dels parametres que vull dir aquí) i el que caldria fer es adelantar o retardar tots els subtítols X segons endavant o X segons enrere per tal de sincronitzar correctament el subtítol amb l'audio i vídeo de la pel·lícula.

Per fer-ho (deuen haver-hi altres programes) faig servir el programa Subtitle editor que a més es pot trobar als repositoris de Debian (apt-get install subtitleeditor). L'ús bàsic que li dono és: Obrir un arxiu de subtítols (jo faig servir el format SRT, que em permet introduir-lo als arxius MKV amb facilitat (mkvtoolnix), seleccionar tots els diàlegs del subtítol de la pel·lícula "Selección" / "Seleccionar todos los subtítulos" i després moure endavant o endarrere o bé amb "Timings" / "Añadir 100 milisegundos" o "Quitar 100 milisegundos" (segons convingui) o bé amb  "Timings" / "Mover subtítulo". Hi ha diverses opcions com mostrar amb Frames o amb Temps la sincronització del subtítol però vaja, tampoc es difícil i només és qüestió de dedicar-li un mínim temps a aquest senzill programa per tal de veure com funciona aquesta útil eina.

Linux: Reestablir índex d'arxius AVI.

L'índex dels arxius de vídeo s'utilitza per buscar a través de l'arxiu i sincronitzar la pista d'audio amb la pista de vídeo. Si l'índex de l'arxiu està malmès, el vídeo es congelarà i deixarà de funcionar correctament.
Mencoder ofereix una opció per recuperar l'índex dels arxius AVI. La línea de comandes seria la següent:

xddxdd@debian:~$ $ mencoder -idx arxiu_origen.avi -ovc copy -oac copy -o arxiu_desti.avi


Però malgrat això, en alguns vídeos sembla no funcionar. En comptes d'això, utlilitzarem l'aplicació DivFix (http://www.divfix.org/), que a més té el seu paquet corresponent per a Debian. El seu ús és senzill: Add files per afegir l'arxiu AVI a corregir, Check errors per comprovar errors i finalment Fix per crear un arxiu nou AVI amb l'índex arreglat.

martes, 3 de diciembre de 2013

Linux: Renombrar un arxiu d'una extensió a una altra extensió.

El que, conceptualment, s'entendria per: mv *.ext1 *.ext2, és a dir, tots els arxius que tinguin extensió ext1 canviar-los l'extensió a ext2:

xddxdd@debian:~$ rename 's/\.ext_inicial/\.ext_final/' *.ext_inicial

Exemple (exemple pràctic que faig servir per renombrar arxius 7z amb extensió 7z.001 que he creat que només tenen un volum i per tant els vull només amb l'extensió 7z i prou):

xddxdd@debian:~$ rename 's/\.7z.001/\.7z/' *.7z.001

Linux: Afegir un directori a PATH.

PATH és la variable del sistema que permet al sistema operatiu buscar els executables. Dit d'una altra manera, si posem un directory a PATH, tots els executables que contingui aquest directori (NO recursivament, es clar) es podran executar sense haver d'estar dins del directori. Per fer-ho:

xddxdd@debian:~$ PATH=$PATH:/data/myscripts

xddxdd@debian:~$ export PATH

On /data/myscripts seria la ruta on tenim els executables que volem executar desde qualsevol directori. Però quan tanquem la sessió, perdrem les noves rutes afegides. Si volem tenir-les permanentment, cal posar les rutes a un dels arxius següents (si no existeixen, crear-los), depenent de les nostres necessitats.

One user$HOME/.bash_profile
All users except root/etc/profile
root/root/.bash_profile

Per veure el contingut actual de la variable PATH:

xddxdd@debian:~$ echo $PATH

miércoles, 27 de noviembre de 2013

Linux: Quadre comparatiu de recodificació de vídeo amb Ffmpeg i Mencoder

Nota preliminar: Encara no se bén be perque quan utilitzo aplicacions de recodificació (tant Ffmpeg com Mencoder) utilitzant molts threads (ara no recordo bé si 6 o més) que en teoria són el nombre de nuclis de la CPU (la meva CPU és una AMD de 8 cores) a utilitzar en el procés, l'ordinador es reseteja o s'apaga. La càrrega total de la CPU en aquests casos crec que arriba a més del 80% així que diria que el problema podria ser de càrrega de la CPU encara que m'inclinaria més a pensar que pot ser un problema de prevenció de temperatura, ja que aquesta puja espectacularment al fer aquests processos, malgrat que compto amb un bon refrigerador Noctua. També vaig pensar que fos un problema de software però em vaig baixar les fonts de Ffmpeg i Mencoder per a ser compilades i el problema persistia. La nota aquesta la escric perque els paràmetres de recodificació que faré servir, haurien d'incloure un màxim de 5 threads que és un nombre prou considerable de cores i que he comprovat que l'ordinador no en pateix les conseqüències.

Paràmetres utilitzats
  • Tamany de l'arxiu: 373,3 Mb.
  • Duració del vídeo: 27 minuts aprox.
  • No recodificació d'audio.



Comandes (per ordre de dalt a baix)

mencoder original_video.avi -oac copy -ovc xvid -xvidencopts pass=1:chroma_opt:vhq=4:max_bframes=1:quant_type=mpeg:threads=5 -o /dev/null

mencoder original_video.avi -oac copy -ovc xvid -xvidencopts pass=2:chroma_opt:vhq=4:max_bframes=1:quant_type=mpeg:bitrate=3000:threads=5 -o output_video.avi

mencoder original_video.avi -oac copy -ovc x264 -x264encopts pass=1:preset=veryslow:fast_pskip=0:tune=film:frameref=15:bitrate=3000:threads=5 -o /dev/null

mencoder original_video.avi -oac copy -ovc x264 -x264encopts pass=2:preset=veryslow:fast_pskip=0:tune=film:frameref=15:bitrate=3000:threads=5 -o output_video.avi

ffmpeg -i original_video.avi -an -vcodec mpeg4 -pass 1 -mbd 2 -trellis 2 -flags +cbp+mv0 -pre_dia_size 4 -dia_size 4 -precmp 4 -cmp 4 -subcmp 4 -preme 2 -qns 2 -b 3000k -threads 5 -f rawvideo -y /dev/null

ffmpeg -i original_video.avi -acodec copy -vcodec mpeg4 -vtag DX50 -pass 2 -mbd 2 -trellis 2 -flags +cbp+mv0 -pre_dia_size 4 -dia_size 4 -precmp 4 -cmp 4 -subcmp 4 -preme 2 -qns 2 -b 3000k -threads 5 output_video.avi

ffmpeg -i original_video.avi -an -vcodec libx264 -pass 1 -preset veryslow -threads 5 -b 3000k -x264opts frameref=15:fast_pskip=0 -f rawvideo -y /dev/null

ffmpeg -i original_video.avi -acodec copy -vcodec libx264 -pass 2 -preset veryslow -threads 5 -b:v 3000k -x264opts frameref=15:fast_pskip=0 output_video.mkv

lunes, 25 de noviembre de 2013

Linux: Extreure video/audio/subtítols d'un arxiu MKV.

La comanda és:

xddxdd@debian:~$ mkvextract tracks arxiu.mkv 0:video

Mkvextract es pot trobar dins del paquet mkvtoolnix que es troba als repositoris de Debian. El missatge de sortida serà similar a aquest depenent del que extraiem (una pista de vídeo, audio o subtítol):

Extrayendo pista 0 con ID del códec 'V_MS/VFW/FOURCC' al archivo 'video'. Formato del contenedor: AVI (Microsoft Audio/Video Interleaved)

domingo, 28 de abril de 2013

Linux: Instal·lar sistema Debian des d'un pendrive

Primer de tot cal setejar a la BIOS que el sistema bootegi primer el Pendrive(USB) en qüestió abans que qualsevol altre mitja (CD, Disc dur, etc.) de manera que com que cada BIOS es diferent ho deixo a tasca de cadascú. Passos següents:

1. Descarregar l'imatge d'arranc (boot.img.gz) per exemple d'aquí en la versió testing:
i386:


root@debian:~# wget http://ftp.debian.org/debian/dists/testing/main/installer-i386/current/images/hd-media/boot.img.gz


amd64:


root@debian:~# wget http://ftp.debian.org/debian/dists/testing/main/installer-amd64/current/images/hd-media/boot.img.gz

2. ULL !!!! Desmontem la partició del pendrive on vulguem posar l'instal·lador (suposem que el tenim a la partició SBD).


root@debian:~# umount /dev/sdh1


root@debian:~# zcat boot.img.gz > /dev/sdh


Fent això eliminarem totes les dades del pendrive i la taula de particions del mateix i crearà u


n sistema d'arxius FAT16 que ocuparà tot el dispositiu del pendrive, en aquest cas /dev/sdh (

no hi haurà particions). Tot seguit muntem el dispositiu a qualsevol directori buit que tinguem

o creem (en aquest cas "mp" que voldria dir "mount point"):

root@debian:~# mkdir mp/

root@debian:~# mount /dev/sdh mp/


3. Copiem la iso del instal·lador a la arrel del directori on haguem monta segons la arquitectura 

que vulguem.


i386

root@debian:~# wget http://cdimage.debian.org/cdimage/daily-builds/daily/arch-latest/i386/iso-cd/debian-testing-i386-netinst.iso



amd64


root@debian:~# wget http://cdimage.debian.org/cdimage/daily-builds/daily/arch-latest/amd64/iso-cd/debian-testing-amd64-netinst.iso


4. Desmuntem i reiniciem
root@debian:~# umount /dev/sdh




miércoles, 9 de enero de 2013

Linux: Gravar so intern del PC & XVidcap

Hi ha diverses aplicaciones per gravar NOMÉS el so intern del PC. Audacity n'es una d'elles, és la que faig servir jo.

Per poder-ho fer seguirem els següents passos extrets d'aquest link:

Nota: Jo el pas 1 el vaig ometre, em vaig descarregar directament el fitxer font 1.1.7 del xvidcap.

1.Uninstall xvidcap in Synaptic
2. Install xvidcap from http://sourceforge.net/projects/xvidcap/files/xvidcap/1.1.7/xvidcap_1.1.7jaunty_i386.deb/download
3. Lock the installed version in Synaptic
4. Install pavucontrol in Synaptic (Needed in Ubuntu 10.04 but not in Linux Mint 10: already present)
Open the program with padsp xvidcap -> molt important, sense escriure padsp abans no anirà el so.
5. Click on the recording button (red circle)
6. Run pavucontrol, go to the Recording tab and there choose Monitor of Analog Stereo Internal Audio -> Bé aqui ajustarem el control de volum que ens interessi.
Done!!

Amb Audacity funcionaria igual, quan clickem per Gravar hem d'anar al Pavucontrol i a la pestanya Tab i ajustar els controls.