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