Hoy (si 31 de Diciembre del 2010) tuve un problema intentando capturar los errores en postgres que me daba un script.
Cualquier persona que haya trabajado con psql sabe que muestra los errores durante la ejecución de los scripts en la pantalla. Sin embargo como el script era muy largo desde luego que era mejor, copiar todos los errores en una archivo y luego revisarlos uno a uno. De hecho se sabe que cuando son muchos mensajes después de cierto numero de lineas los mensajes que aparecen al principio se van perdiendo y no es posible recuperarlos.
Lo primero que hay que tener en cuenta es que la salida de errores no es lo mismo que la salida estándar. Aunque tanto los resultados de la salida de error como la estándar arrojan los resultados en pantalla.
Por esa razón pensaba que con un simple:
plsql -U usuario -d base_de_datos -c "\i archivo_de_script.sql" -h localhost > errores.out
Capturaría todos los errores. Pero así solamente se capturan los mensajes de la salida estándar. Para capturar los errores debe hacerse:
plsql -U usuario -d base_de_datos -c "\i archivo_de_script.sql" -h localhost 2> errores.out
Pero aquí tuve nuevamente un problema, no me daba de cuenta de que el "2>" era pegado y no separado. Me llevo tiempo darme cuenta.
Fuentes:
Curso de Linux Gratis. Tuberias. Wikilearning: http://www.wikilearning.com/curso_gratis/curso_de_linux-redirecciones_y_tuberias/4230-13
viernes, 31 de diciembre de 2010
sábado, 4 de diciembre de 2010
Archivo de configuración de NetBeans
Hace poco tuve que repararle el NetBeans a alguien que tuvo la mala idea de instalar el jdk en el escritorio y accidentalmente lo movió. Luego de detectar el problema quise ponerlo en otra ubicación.
Al principio pensaba que se trataba de las variables de entorno y eso. Pero a mi intuición le llevo más de una hora dar con el siguiente archivo
/usr/local/netbeans-6.9/etc/netbeans.conf
Fíjense el nombre del subdirectorio "etc", que coincide con el "/etc" de la instalación de linux. Desde en esa dirección es allí en donde esta netbeans en el caso de mi máquina y variara de una máquina a otra dependiendo de como se haya hecho la instalación.
Allí se cambia la dirección en donde dice:
# Default location of JDK, can be overridden by using --jdkhome <dir>:
netbeans_jdkhome="/opt/jdk1.6.0_20"
a la ubicación del jdk deseada y listo.
Al principio pensaba que se trataba de las variables de entorno y eso. Pero a mi intuición le llevo más de una hora dar con el siguiente archivo
/usr/local/netbeans-6.9/etc/netbeans.conf
Fíjense el nombre del subdirectorio "etc", que coincide con el "/etc" de la instalación de linux. Desde en esa dirección es allí en donde esta netbeans en el caso de mi máquina y variara de una máquina a otra dependiendo de como se haya hecho la instalación.
Allí se cambia la dirección en donde dice:
# Default location of JDK, can be overridden by using --jdkhome <dir>:
netbeans_jdkhome="/opt/jdk1.6.0_20"
a la ubicación del jdk deseada y listo.
Reiniciar un Sistema Operativo real como si fuera virtual en VirtualBox
Este es un ejemplo de cómo iniciar otro sistema operativo desde nuestra máquina, que no este virtualizado, sin tener que salirnos del sistema y volver a iniciar.
Antes que nada debemos tener todos los permisos del disco duro en donde este instalado el sistema operativo que se vaya a manipular. Generalmente el disco duro se identifica como sda (puede tener otro nombre o no ser un disco duro):
sudo chmod 666 /dev/sda
esto aunque parezca, no es tan peligroso y ese cambio que hicimos se perderá al volver arrancar el sistema. De hecho no tiene efecto desde el escritorio, para que tenga efecto tiene que arrancarse virtualbox desde la misma consola, como se verá más adelante
Luego se crea un enlace de disco duro virtual al disco duro real:
VBoxManage internalcommands createrawvmdk -filename ~/.VirtualBox/HardDisks/mint.vmdk -rawdisk /dev/sda -relative -register
por ultimo se arranca virutalbox (DESDE LA MISMA CONSOLA QUE ESTAMOS USANDO). Tecleando:
VirtualBox
En virtualbox se crea un sistema operativo virtual (cuyas características correspondan al real), escogiendo como unidad de disco duro la que se acaba de crear: "mint-vmdk", y con esto deberíamos poder arrancar el sistema real como virtual.
¡Pude arrancar en la máquina virtual el mismo SO que estaba corriendo!. Eso es peligroso y no se debería hacer.
Fuente: http://ubuntulife.wordpress.com/2009/05/13/ejecutar-varios-sistemas-operativos-reales-desde-virtualbox/
Antes que nada debemos tener todos los permisos del disco duro en donde este instalado el sistema operativo que se vaya a manipular. Generalmente el disco duro se identifica como sda (puede tener otro nombre o no ser un disco duro):
sudo chmod 666 /dev/sda
esto aunque parezca, no es tan peligroso y ese cambio que hicimos se perderá al volver arrancar el sistema. De hecho no tiene efecto desde el escritorio, para que tenga efecto tiene que arrancarse virtualbox desde la misma consola, como se verá más adelante
Luego se crea un enlace de disco duro virtual al disco duro real:
VBoxManage internalcommands createrawvmdk -filename ~/.VirtualBox/HardDisks/mint.vmdk -rawdisk /dev/sda -relative -register
por ultimo se arranca virutalbox (DESDE LA MISMA CONSOLA QUE ESTAMOS USANDO). Tecleando:
VirtualBox
En virtualbox se crea un sistema operativo virtual (cuyas características correspondan al real), escogiendo como unidad de disco duro la que se acaba de crear: "mint-vmdk", y con esto deberíamos poder arrancar el sistema real como virtual.
¡Pude arrancar en la máquina virtual el mismo SO que estaba corriendo!. Eso es peligroso y no se debería hacer.
Fuente: http://ubuntulife.wordpress.com/2009/05/13/ejecutar-varios-sistemas-operativos-reales-desde-virtualbox/
martes, 9 de noviembre de 2010
Hora del Hardware y hora de Linux
Existen dos horas: la hora del hardware (la hora que almacena el setup) y la hora de linux.
para saber la de linux se utiliza
date
mientras que para saber la de hardware
hwclock
Para establecer la hora de linux, por ejemplo, en el caso de la fecha 02-25-2009, con hora 16:25 se utiliza:
$ sudo date -s "02/25/2009 16:25:00"
Para establecer la hora de hardware, por ejemplo, en el caso de la fecha 02-25-2009, con hora 16:25 se utiliza:
# hwclock --set --date="2009-02-25 16:25"
Cambiar/Restaurar la Password del Root desde Grub
no se puede saber que password de root teniamos anteriormente a menos que se crackee la password, pero eso requiere tiempo (aunque existen algoritmos que permitirían crackearla en un tiempo razonable: vulnerabilidades en MD5, no se quien más pero la NSA lo sabe muy bien)
no es necesario si solo queremos volver a acceder al sistema.
Para cambiar la password de root desde Grub se debe en primer lugar, por supuesto, reiniciar el sistema y acceder al menú de Grub. Si este menú no aparece se debe mantener la tecla de mayúsculas presionada, la que tiene una flecha hacia arriba (en las versiones viejas se utiliza ESC).
la primera línea será algo como esto:
linux /boot/vmlinuz-2.6.32-25-generic root=UUID=4f89d205-8eff-44cd-a3ed-aabcf8380db7 ro quiet splash
no tiene que ser exactamente igual. Se edita esta línea presionando la letra 'e'.
Borra el 'splash' (si no podría no arrancar) y al final de la línea agrega esto init=/bin/bash
debería ser fácil pero será un poco fastidioso debido a que el teclado estará desconfigurado, si usas teclado un teclado español, latinoamericano, etc
quedará algo como esto:
linux /boot/vmlinuz-2.6.32-25-generic root=UUID=4f89d205-8eff-44cd-a3ed-aabcf8380db7 ro quiet init=/bin/bash
luego, tal como dice abajo del grub se presiona ctrl-x y arranca (no se porque en algunas páginas se dice que se presione 'b')
al arrancar y aparecer el '#' en el prompt que indica que estas trabajando como root se debe teclear el siguiente comando
mount -o remount,rw /
esto es debido a que el sistema de ficheros se carga como de solo lectura
finalmente cambias la password con
passwd
esto lo escribí con ayuda de esta fuente:
http://www.iberprensa.com/todolinux/articulos/TL96_grub.pdf
no es necesario si solo queremos volver a acceder al sistema.
Para cambiar la password de root desde Grub se debe en primer lugar, por supuesto, reiniciar el sistema y acceder al menú de Grub. Si este menú no aparece se debe mantener la tecla de mayúsculas presionada, la que tiene una flecha hacia arriba (en las versiones viejas se utiliza ESC).
la primera línea será algo como esto:
linux /boot/vmlinuz-2.6.32-25-generic root=UUID=4f89d205-8eff-44cd-a3ed-aabcf8380db7 ro quiet splash
no tiene que ser exactamente igual. Se edita esta línea presionando la letra 'e'.
Borra el 'splash' (si no podría no arrancar) y al final de la línea agrega esto init=/bin/bash
debería ser fácil pero será un poco fastidioso debido a que el teclado estará desconfigurado, si usas teclado un teclado español, latinoamericano, etc
quedará algo como esto:
linux /boot/vmlinuz-2.6.32-25-generic root=UUID=4f89d205-8eff-44cd-a3ed-aabcf8380db7 ro quiet init=/bin/bash
luego, tal como dice abajo del grub se presiona ctrl-x y arranca (no se porque en algunas páginas se dice que se presione 'b')
al arrancar y aparecer el '#' en el prompt que indica que estas trabajando como root se debe teclear el siguiente comando
mount -o remount,rw /
esto es debido a que el sistema de ficheros se carga como de solo lectura
finalmente cambias la password con
passwd
esto lo escribí con ayuda de esta fuente:
http://www.iberprensa.com/todolinux/articulos/TL96_grub.pdf
sábado, 23 de octubre de 2010
Pasar un video de un formato a otro desde la consola de linux
En mi caso necesitaba pasar el video de un formato flv a mpg.
Por si no esta instalado:
sudo apt-get install ffmpeg
para especificar resolución del video se utiliza el parámetro -s. En este caso utilice una resolución de 1024x800:
ffmpeg -i video.flv -s 1024x800 video.mpg
Por si no esta instalado:
sudo apt-get install ffmpeg
para especificar resolución del video se utiliza el parámetro -s. En este caso utilice una resolución de 1024x800:
ffmpeg -i video.flv -s 1024x800 video.mpg
jueves, 21 de octubre de 2010
Borrar un archivo con una extención específica de todo el árbol de directorios
Me ha pasado en varias ocasiones que después de introducir el pendriver en una computadora desconocida este me viene con infinidad de virus cuyos nombres son similares a los de los archivos que están en el pendriver pero que en realidad son programas ejecutables. Me llevaría horas borrar cada uno de esos archivos desde el directorio raíz y cada subcarpeta.
Más o menos lo primero que a uno se le ocurriría es algo así como esto (en realidad no recuerdo que fue todo lo que se me ocurrió) :
find /media/nombre_pendriver/ -iname '*.exe'| xargs rm -f -v
pero es inútil. No funciona o al menos eso es lo que pasa en ubuntu.
Después de revisar los man y eso descubrí que para que funcionase debía especificar el delimitador de cada entrada de archivo que le llega a xargs (este asume que por defecto ese delimitador es 0, si no recuerdo mal). El delimitador en el caso de ubuntu es '\n' que lo conocerán aquellos que tienen algo de experiencia en lenguaje C. Colocando entonces el delimitador el comando queda así:
find /media/nombre_pendriver/ -iname '*.exe'| xargs --delimiter='\n' rm -f -v
toma en cuenta que si el nombre del pendriver o de la carpeta raíz desde la cual se borrara tiene espacios en blanco se debe colocar '*' en lugar de los espacios en blanco o encerrar todo el nombre entrecomillas.
Más o menos lo primero que a uno se le ocurriría es algo así como esto (en realidad no recuerdo que fue todo lo que se me ocurrió) :
find /media/nombre_pendriver/ -iname '*.exe'| xargs rm -f -v
pero es inútil. No funciona o al menos eso es lo que pasa en ubuntu.
Después de revisar los man y eso descubrí que para que funcionase debía especificar el delimitador de cada entrada de archivo que le llega a xargs (este asume que por defecto ese delimitador es 0, si no recuerdo mal). El delimitador en el caso de ubuntu es '\n' que lo conocerán aquellos que tienen algo de experiencia en lenguaje C. Colocando entonces el delimitador el comando queda así:
find /media/nombre_pendriver/ -iname '*.exe'| xargs --delimiter='\n' rm -f -v
toma en cuenta que si el nombre del pendriver o de la carpeta raíz desde la cual se borrara tiene espacios en blanco se debe colocar '*' en lugar de los espacios en blanco o encerrar todo el nombre entrecomillas.
martes, 19 de octubre de 2010
Tomar un screenshot desde la consola en linux
#apt-get install imagemagick
#import -window root nombredearchivo.formato
Esto lo extraje desde esta fuente:
http://richieblog.wordpress.com/2008/10/12/tomar-un-screenshot-desde-la-consola-en-linux-probado-en-debian/
no lo he probado
pero la verdad es que no hace falta instalar nada (me di cuenta después de escribir lo anterior). Basta hacer:
xwd -root -screen > captura.xwd
fuente:
http://www.skamasle.com/como-capturar-la-pantalla-desde-la-consola-comando-tomar-capturas-en-debian-ubuntu/
#import -window root nombredearchivo.formato
Esto lo extraje desde esta fuente:
http://richieblog.wordpress.com/2008/10/12/tomar-un-screenshot-desde-la-consola-en-linux-probado-en-debian/
no lo he probado
pero la verdad es que no hace falta instalar nada (me di cuenta después de escribir lo anterior). Basta hacer:
xwd -root -screen > captura.xwd
fuente:
http://www.skamasle.com/como-capturar-la-pantalla-desde-la-consola-comando-tomar-capturas-en-debian-ubuntu/
Tomar una foto con la webcam desde la consola en Linux
Instala xawtv:
sudo apt-get install xawtv
Luego ejecuta v4lctl:
sudo v4lctl -c /dev/video0 snap jpeg 640x400 ~/foto.jpg&
la foto deberá aparecer en tu directorio home
sudo apt-get install xawtv
Luego ejecuta v4lctl:
sudo v4lctl -c /dev/video0 snap jpeg 640x400 ~/foto.jpg&
la foto deberá aparecer en tu directorio home
Suscribirse a:
Entradas (Atom)