<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>El Blog de Luis &#187; PCL</title>
	<atom:link href="http://lgallardo.com/tag/pcl/feed/" rel="self" type="application/rss+xml" />
	<link>http://lgallardo.com</link>
	<description>http://lgallardo.com &#62; Un poco de Linux, PS3, PSP y tecnología</description>
	<lastBuildDate>Mon, 06 Feb 2012 13:52:21 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>Syslogd: el demonio de las bitácoras</title>
		<link>http://lgallardo.com/2009/07/15/syslogd-el-demonio-de-las-bitacorassyslogd-the-logging-daemon/</link>
		<comments>http://lgallardo.com/2009/07/15/syslogd-el-demonio-de-las-bitacorassyslogd-the-logging-daemon/#comments</comments>
		<pubDate>Wed, 15 Jul 2009 05:00:22 +0000</pubDate>
		<dc:creator>Luis Gallardo</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[PCL]]></category>

		<guid isPermaLink="false">http://lgallardo.com/?p=989</guid>
		<description><![CDATA[Cuando un servicio falla este reporta lo que ha pasado o cuando algo va mal en tu máquina (por ejemplo un problema de hardware) esto también es reportado. Esos mensajes pueden ser encontrados en el directorio /var/log. Por ejemplo, muchos mensajes son reportados en el archivo /var/log/syslog o en el /var/log/messages. Por otro lado, si [...]
Artículos relacionados:<ol>
<li><a href='http://lgallardo.com/2009/11/21/estadisticas-de-baterias-de-laptops/' rel='bookmark' title='Estadísticas de baterías de laptops'>Estadísticas de baterías de laptops</a></li>
<li><a href='http://lgallardo.com/2010/04/27/desbloqueo-de-gnome-keyring-en-slim/' rel='bookmark' title='Desbloqueo de Gnome-Keyring en Slim'>Desbloqueo de Gnome-Keyring en Slim</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a title="Bitacora" href="http://static.flickr.com/2608/3717451639_9b304ea488.jpg"><img class="alignleft" style="float: left;" src="http://static.flickr.com/2608/3717451639_9b304ea488_t.jpg" alt="Bitacora" /></a>Cuando un servicio falla este reporta lo que ha pasado o cuando algo va mal en tu máquina (por ejemplo un problema de hardware) esto también es reportado. Esos mensajes pueden ser encontrados en el directorio <em>/var/log</em>. Por ejemplo, muchos mensajes son reportados en el archivo <em>/var/log/syslog</em> o en el <em>/var/log/messages</em>. Por otro lado, si un servicio genera muchos mensajes muy probablemente estos serán escritos en un archivo separado como lo hace Apache o el servicio de correo.</p>
<p>Todo esto es hecho por un demonio llamado <em>syslogd</em>, el cual es una utilidad del sistema que provee soporte para el registro de mensajes en sistemas *nix. Pero las bitácoras no están reservadas únicamente para las aplicaciones del sistema, tú también puedes registrar tus mensajes usando <em>syslogd</em>, configurando una regla apropiada en el archivo <em>/etc/syslog.conf</em>. Así que , veamos como hacerlo&#8230;</p>
<h2>Archivo de configuración</h2>
<p>En el archivo <em>/etc/syslog.conf</em> (o en el <em>/etc/rsyslog.conf</em>) están definidas las reglas para las bitácoras usando <em>syslogd</em>, una regla por línea.  Cada regla sigue esta sintaxis:</p>
<blockquote><p>selector acción</p></blockquote>
<p>A su vez, el <em>selector</em> está compuesto de <em>servicio.prioridad</em>, entonces la sintaxis completa sería:</p>
<blockquote><p>servicio.prioridad acción</p></blockquote>
<p>El servicio puede ser uno de las siguientes palabras:</p>
<table border="0">
<tbody>
<tr>
<td><strong>Servicio</strong></td>
<td><strong>Descripción</strong></td>
</tr>
<tr>
<td>auth</td>
<td>Mensajes de seguridad/autenticación</td>
</tr>
<tr>
<td>authpriv</td>
<td>Mensajes de seguridad/autenticación (privado)</td>
</tr>
<tr>
<td>cron</td>
<td>Demonio de tiempo (cron y at)</td>
</tr>
<tr>
<td>daemon</td>
<td>Demonios del sistema sin valor de servicio separado</td>
</tr>
<tr>
<td>kern</td>
<td>Mensajes del kernel</td>
</tr>
<tr>
<td>lpr</td>
<td>Mensajes del servicio de impresión</td>
</tr>
<tr>
<td>mail</td>
<td>Mensajes del servicio de correo</td>
</tr>
<tr>
<td>mark</td>
<td>Para uso interno. No usar al hacer las reglas</td>
</tr>
<tr>
<td>news</td>
<td>Mensajes del servicio de noticias USENET</td>
</tr>
<tr>
<td>security (same as auth)</td>
<td>Obsoleto, usar <em>auth</em></td>
</tr>
<tr>
<td>syslog</td>
<td>Mensajes generados internamente por syslogd</td>
</tr>
<tr>
<td>user</td>
<td>Mensajes genéricos a nivel de usuario</td>
</tr>
<tr>
<td>uucp</td>
<td>mensajes de UUCP</td>
</tr>
<tr>
<td>local0 a local7</td>
<td>Reservado para uso local</td>
</tr>
</tbody>
</table>
<p>La prioridad puede ser una de las palabras listadas en la siguiente tabla. Los mensajes serán reportados por prioridad, deforma ascendente. Por ejemplo, si se especifica la prioridad <em>alert</em> se reportarán los mensajes con prioridad <em>alert</em>, <em>emer</em> y <em>panic</em>, mientras que los <em>crit</em>, <em>error</em>, hasta <em>debug</em> no serán reportados.</p>
<table style="text-align: left;" border="0">
<tbody>
<tr>
<td><strong>Prioridad</strong></td>
<td style="text-align: left;"><strong>Descripción</strong></td>
</tr>
<tr>
<td>debug</td>
<td>Usado para depurar servicios, por ejemplo si no están funcionando apropiadamente</td>
</tr>
<tr>
<td>info</td>
<td>Usado para reportar mensajes informativos.</td>
</tr>
<tr>
<td>notice</td>
<td>Como la prioridad <em>info</em>, pero haciendo notar algo que puede ser relevante</td>
</tr>
<tr>
<td>warning</td>
<td>Usado para reportar advertencias. Puede darte pistas sobre errores (si los hubiera) o solo mostrarte que hay algo que no está trabajando como debería, pero que igual sigue funcionando.</td>
</tr>
<tr>
<td>warn</td>
<td>Igual que <em>warning</em></td>
</tr>
<tr>
<td>err</td>
<td>Usado para reportar errores. Por ejemplo, si tienes un servicio mal configurado este reportará esos errores.</td>
</tr>
<tr>
<td>error</td>
<td>Igual que <em>err</em></td>
</tr>
<tr>
<td>crit</td>
<td>Usado para reportar errores más críticos. Por ejemplo errores de hardware.</td>
</tr>
<tr>
<td>alert</td>
<td>Usado para reportar errores aun más críticos. Se debe tomar algún correctivo inmediatamente. Por ejemplo, corrupción de una base de datos.</td>
</tr>
<tr>
<td>emerg</td>
<td>Usado para reportar errores realmente críticos. Muy probablemente el servicio está inoperante</td>
</tr>
<tr>
<td>panic</td>
<td>Igual que <em>emerg</em></td>
</tr>
<tr>
<td>none</td>
<td>Usado para deshabilitar el reporte de un servicio.</td>
</tr>
</tbody>
</table>
<p>La acción describe qué se debe hacer con el mensaje reportado. Comúnmente, todos los mensajes son escritos a un archivo de bitácoras, pero también hay otras acciones como reenviar los mensajes a otra máquina. De forma que el campo <em>acción</em> puede ser uno de los siguientes:</p>
<table border="0">
<tbody>
<tr>
<td><strong>Acción</strong></td>
<td><strong>Descripción </strong></td>
</tr>
<tr>
<td>/ruta/de/bitácora</td>
<td>Escribir los mensajes a un archivo de bitácoras</td>
</tr>
<tr>
<td>| fifo</td>
<td>Usar un fifo o una tubería como el destino de los mensajes. Esto es útil para depuración o enviar correos. Note que el fifo debe ser creado con el comando mkfifo(1) antes de que syslogd(8) sea iniciado</td>
</tr>
<tr>
<td>/dev/tty[1-6]</td>
<td>Escribir mensajes en las consolas /dev/tty[1-6]. Note que /dev/console también funcionará</td>
</tr>
<tr>
<td>@192.168.0.1</td>
<td>Reenviar mensajes a la máquina 192.168.0.1 vía UDP. Debido a la naturaleza de UDP, probablemente se perderán mensajes en tránsito. Si esperas alto volumen de tráfico, debes esperar una pérdida considerable de mensajes. Nota: para aceptar mensajes, el servidor remoto debe correr syslogd con la opción -r (en Debian esta opción puede ser dada en el archivo<em> /etc/default/syslogd o en el /etc/default/rsyslog</em>)</td>
</tr>
<tr>
<td>:omrelp:192.168.0.1:2514</td>
<td>Si quieres prevenir la pérdida de mensajes UDP, usa RELP</td>
</tr>
<tr>
<td>lgallard, atorres</td>
<td>Lista de usuarios. Por defecto, los mensajes críticos son enviados a root</td>
</tr>
</tbody>
</table>
<h2>Modificadores</h2>
<p>Básicamente existen tres modificadores: =, ! y *. El modificador &#8220;=&#8221; le indica a <em>syslogd</em> que debe reportar solo los mensajes con la prioridad exacta. Por ejemplo:</p>
<blockquote>
<pre>mail.=error                       /var/log/mail.error</pre>
</blockquote>
<p>Aquí <em>syslogd</em> reportará solo los mensajes de <em>error</em>. Sin el modificador =, <em>syslogd</em> reportaría los mensajes tipo<em> error, crit, alert</em> y  <em>panic</em>. Este modificador solo puede usarse con las prioridades.</p>
<p>El segundo modificador es &#8220;!&#8221;, el cual invierte el significado de la regla. Por ejemplo:</p>
<blockquote>
<pre>mail.!error                       /var/log/mail.error</pre>
</blockquote>
<p><em>Syslogd</em> reportará los mensajes con menos prioridad que <em>error</em>, ergo <em>warning, notice, info</em> y <em>debug</em>. Si quieres excluir solo una prioridad, debes usar la combinación !=.</p>
<p>Finalmente, el modificador &#8220;*&#8221; te permite seleccionar entre los distintos servicios y prioridades. Por ejemplo:</p>
<blockquote>
<pre>mail.*                       /var/log/mail.log</pre>
</blockquote>
<p>Aquí, todos los mensajes provenientes del servicio de correo serán guardados en el archivo <em>/var/log/mail.log</em>, no importando su prioridad. Otro ejemplo:</p>
<blockquote>
<pre>*.info                       /var/log/info.log</pre>
</blockquote>
<p>No importa el servicio, todos los mensajes cuya prioridad sean <em>info</em> serán guardados en el archivo <em>/var/log/info.log</em>.</p>
<h2>Operadores coma, y punto y coma</h2>
<p>El operador punto y coma te permite escribir varias reglas en una forma más compacta. Por ejemplo:</p>
<blockquote>
<pre>mail.=info                       /var/log/info.log
mail.=notice                     /var/log/info.log
auth.=info                       /var/log/info.log</pre>
</blockquote>
<p>Las reglas anteriores pueden ser escrita en una sola línea:</p>
<blockquote>
<pre>mail.=info;mail.=notice;auth.=info   /var/log/info.log</pre>
</blockquote>
<p>Por otro lado, si quieres seleccionar varios servicios, puedes usar el operador coma. Por ejemplo:</p>
<blockquote>
<pre>mail.info                       /var/log/info.log
auth.info                       /var/log/info.log</pre>
</blockquote>
<p>Puedes escribir las reglas anteriores en una línea, de la siguiente forma:</p>
<blockquote>
<pre>mail,auth.info                  /var/log/info.log</pre>
</blockquote>
<p>La gran diferencia entre el operador coma y el operador punto y coma es que el primero solo separa servicios y el ultimo puede separar prioridades y servicios, incluso si estos son incompatibles entre sí.</p>
<h2>Registro síncrono</h2>
<p>Algunas bitácoras deben ser monitoreadas en tiempo real, por ejemplo cuando se está depurando un servicio. El asunto es que <em>syslogd</em> escribe mensajes solo cuando su buffer está lleno, es decir, de forma asíncrona. Si quieres escribir mensajes síncronamente debes colocar un &#8220;-&#8221; antes de la ruta del archivo donde se guardará las bitácoras.</p>
<h2>Ejemplos</h2>
<p>Aquí hay unos ejemplos inventados por mí y otros tomados del archivo <em>/etc/syslog.conf</em>:</p>
<blockquote>
<pre>local3.info                     /var/log/milog</pre>
</blockquote>
<p>Usar el servicio <em>local3</em>, reportando mensajes tipo <em>info</em> al archivo <em>/var/log/milog</em>.</p>
<blockquote>
<pre>auth,authpriv.*                 /var/log/auth.log</pre>
</blockquote>
<p>Reportar todas las prioridades para los servicios <em>auth</em> y <em>authpriv</em> en el archivo <em>/var/log/auth.log</em>.</p>
<blockquote>
<pre>mail.warn                       -/var/log/mail.warn</pre>
</blockquote>
<p>Los mensajes de <em>warn</em> del servicio de correo serán guardados en el archivo <em>/var/log/mail.warn</em> síncronamente.</p>
<blockquote>
<pre>mail.!=error                       /var/log/mail.error</pre>
</blockquote>
<p>Todos los mensajes excepto los de <em>error</em> serán guardados en el archivo <em>/var/log/mail.error</em>.</p>
<blockquote>
<pre>*.=debug;\
	auth,authpriv.none;\
	news.none;mail.none	-/var/log/debug</pre>
</blockquote>
<p>Todos los mensajes serán guardados en el archivo <em>/var/log/debug</em> de forma síncrona, excepto aquellos provenientes de los servicios <em>auth, authpriv, news</em> y <em>mail</em>.</p>
<h2>El comando logger</h2>
<p>Si quieres comunicarte con <em>syslogd</em>, puedes utilizar el comando logger. Por ejemplo, para enviar un mensaje con prioridad <em>info</em> y servicio <em>local3</em>, solo escribe:</p>
<blockquote><p>logger -p local3.info &#8220;Esto es un mensaje&#8221;</p></blockquote>
<h2>Referencias</h2>
<ul>
<li><a href="http://linux.die.net/man/3/syslog" target="_blank">man syslog</a></li>
<li><a href="http://unixhelp.ed.ac.uk/CGI/man-cgi?logger+1" target="_blank">man logger</a></li>
<li>Revista &#8220;Todo Linux&#8221; . Año 8. Número 92. Páginas 43-47.</li>
</ul>
<p>Artículos relacionados:<ol>
<li><a href='http://lgallardo.com/2009/11/21/estadisticas-de-baterias-de-laptops/' rel='bookmark' title='Estadísticas de baterías de laptops'>Estadísticas de baterías de laptops</a></li>
<li><a href='http://lgallardo.com/2010/04/27/desbloqueo-de-gnome-keyring-en-slim/' rel='bookmark' title='Desbloqueo de Gnome-Keyring en Slim'>Desbloqueo de Gnome-Keyring en Slim</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://lgallardo.com/2009/07/15/syslogd-el-demonio-de-las-bitacorassyslogd-the-logging-daemon/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>FTP activo vs. FTP pasivo</title>
		<link>http://lgallardo.com/2009/06/23/ftp-activo-vs-ftp-pasivoftp-active-vs-passive/</link>
		<comments>http://lgallardo.com/2009/06/23/ftp-activo-vs-ftp-pasivoftp-active-vs-passive/#comments</comments>
		<pubDate>Tue, 23 Jun 2009 20:43:17 +0000</pubDate>
		<dc:creator>Luis Gallardo</dc:creator>
				<category><![CDATA[Off-Topic]]></category>
		<category><![CDATA[PCL]]></category>

		<guid isPermaLink="false">http://lgallardo.com/?p=1116</guid>
		<description><![CDATA[El FTP es un servicio TCP que usa un puerto de datos y uno de control o comando. Comúnmente esos puertos son el 20 y el 21, respectivamente. Pero no es siempre es de esa forma&#8230;especialmente si estás detrás de un cortafuegos (firewall). FTP Activo Veamos como funcionan las conexiones ftp normalmente: El cliente se [...]
Artículos relacionados:<ol>
<li><a href='http://lgallardo.com/2009/05/21/comando-netstatthe-netstat-command/' rel='bookmark' title='Comando netstat'>Comando netstat</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>El FTP es un servicio TCP que usa un puerto de datos y uno de control o comando. Comúnmente esos puertos son el 20 y el 21, respectivamente. Pero no es siempre es de esa forma&#8230;especialmente si estás detrás de un cortafuegos (firewall).</p>
<h2>FTP Activo</h2>
<p>Veamos como funcionan las conexiones ftp normalmente:</p>
<ul>
<li>El cliente se conecta desde un puerto aleatorio no privilegiado (N &gt; 1024) al puerto de control del servidor (21)</li>
<li>El cliente comienza a escuchar en el puerto N+1 y envía este puerto de control al servidor.</li>
<li>El servidor se conectará al cliente en el puerto N+1 desde su puerto de datos (20)</li>
</ul>
<div class="wp-caption aligncenter" style="width: 328px"><a title="activeftp" href="http://static.flickr.com/3319/3653200134_bfc6b8fe71.jpg"><img src="http://static.flickr.com/3319/3653200134_bfc6b8fe71.jpg" alt="activeftp" width="318" height="294" /></a><p class="wp-caption-text">FTP Activo</p></div>
<p>Aquí tenemos un ejemplo de conexión:</p>
<ol>
<li>El puerto de control del cliente (1026) se conecta al puerto de control del servidor (21) y envía el número del puerto de datos (1027)</li>
<li>El servidor responde con un ACK al puerto de control del cliente</li>
<li>El servidor inicia una conexión entre su puerto de datos (20) y el puerto de datos del cliente (1027)</li>
<li>El cliente responde con un ACK al servidor</li>
</ol>
<h2>FTP Pasivo</h2>
<p>El modo activo tiene un inconveniente, si estás detrás de un cortafuegos (firewall) el servidor no podrá establecer una conexión al puerto de datos aleatorio del cliente (el que está por encima de 1024). Para solucionar este detalle, hay otra forma de conexión llamada FTP pasiva:</p>
<ul>
<li>El cliente abre dos puertos aleatorios no privilegiados (N &gt; 1024 y N+1)</li>
<li>El primer puerto (puerto de control) se conecta al puerto 21 del lado del servidor (puerto de control) y envía el comando PASV</li>
<li>Luego, el servidor abre un puerto aleatorio no privilegiado (P &gt; 1024) y envía el comando PORT P al cliente</li>
<li>Finalmente, el cliente inicia una conexión desde el puerto N+1 al puerto P en el servidor para transferir datos</li>
</ul>
<div class="wp-caption aligncenter" style="width: 368px"><a title="passiveftp" href="http://static.flickr.com/3341/3655032708_13be9f791c.jpg"><img src="http://static.flickr.com/3341/3655032708_13be9f791c.jpg" alt="passiveftp" width="358" height="286" /></a><p class="wp-caption-text">FTP Pasivo</p></div>
<p>Aquí tenemos un ejemplo:</p>
<ol>
<li>El puerto de control del cliente (1026) se conecta al servidor al puerto de control (21) y envía el comando PASV</li>
<li>El servidor responde al cliente con el puerto 2024, el pueto aleatorio de datos abierto para conexiones de datos</li>
<li>El cliente inicia una conexión desde su puerto de datos (1027) al puerto de datos del servidor (2024)</li>
<li>Finalmente, el servidor envía de vuelta un ACK al puerto de datos del cliente</li>
</ol>
<h2>Referencia</h2>
<ul>
<li><a href="http://slacksite.com/other/ftp.html" target="_blank">Active FTP vs. Passive FTP, a Definitive Explanation</a></li>
</ul>
<p>Artículos relacionados:<ol>
<li><a href='http://lgallardo.com/2009/05/21/comando-netstatthe-netstat-command/' rel='bookmark' title='Comando netstat'>Comando netstat</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://lgallardo.com/2009/06/23/ftp-activo-vs-ftp-pasivoftp-active-vs-passive/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RAID</title>
		<link>http://lgallardo.com/2009/06/18/raidraid/</link>
		<comments>http://lgallardo.com/2009/06/18/raidraid/#comments</comments>
		<pubDate>Fri, 19 Jun 2009 03:04:26 +0000</pubDate>
		<dc:creator>Luis Gallardo</dc:creator>
				<category><![CDATA[Off-Topic]]></category>
		<category><![CDATA[PCL]]></category>

		<guid isPermaLink="false">http://lgallardo.com/?p=1068</guid>
		<description><![CDATA[Según la definición de Wikipedia: &#8220;&#8230;el acrónimo RAID (originalmente del inglés Redundant Array of Inexpensive Disks, ‘arreglo redundante de discos baratos&#8217;, en la actualidad también de Redundant Array of Independent Disks, ‘arreglo redundante de discos independientes&#8217;) hace referencia a un sistema de almacenamiento que usa múltiples discos duros entre los que distribuye o replica los [...]
Artículos relacionados:<ol>
<li><a href='http://lgallardo.com/2009/06/23/ftp-activo-vs-ftp-pasivoftp-active-vs-passive/' rel='bookmark' title='FTP activo vs. FTP pasivo'>FTP activo vs. FTP pasivo</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a title="raid-hard-drive-array" href="http://static.flickr.com/3637/3640451744_c4c0b2405b.jpg"><img class="alignleft" style="float: left;" src="http://static.flickr.com/3637/3640451744_c4c0b2405b_t.jpg" alt="raid-hard-drive-array" /></a>Según la definición de Wikipedia: &#8220;&#8230;el acrónimo RAID (originalmente del inglés Redundant Array of Inexpensive Disks, ‘arreglo redundante de discos baratos&#8217;, en la actualidad también de Redundant Array of Independent Disks, ‘arreglo redundante de discos independientes&#8217;) hace referencia a un sistema de almacenamiento que usa múltiples discos duros entre los que distribuye o replica los datos.&#8221;</p>
<p style="text-align: left;">Esta distribución de los datos en múltiples discos puede ser gestionada por hardware dedicado o por software, o incluso  a través de sistemas RAID híbridos basados en software y hardware específico.</p>
<p>Según la configuración que se seleccione, algunos de los beneficios de usar RAID son:</p>
<ul>
<li>Integridad de los datos</li>
<li>Mayor tolerancia a fallos</li>
<li>Mayor rendimiento</li>
<li>Mayor capacidad</li>
<li>Combinación de dispositivos de bajo costo</li>
</ul>
<p>La especificación RAID original sugería cierto número de &#8220;niveles RAID&#8221;, cada uno con ventajas y desventajas teóricas. Con el paso de los años han aparecido diferentes implementaciones del conceptop RAID, la mayoría difieren sustancialmente bde los niveles RAID idealizados originalmente, pero se ha conservado la costumbre de llamarlos con números (ejemplo: RAID7)<br />
<span id="more-1068"></span></p>
<h2>RAID 0 (Conjunto dividido)</h2>
<table border="0">
<tbody>
<tr>
<td>
<p><div id="attachment_1073" class="wp-caption aligncenter" style="width: 210px"><a href="http://lgallardo.com/wp-content/uploads/2009/06/raid0.gif"><img class="size-full wp-image-1073" title="raid0" src="http://lgallardo.com/wp-content/uploads/2009/06/raid0.gif" alt="RAID 0" width="200" height="200" /></a><p class="wp-caption-text">RAID 0</p></div></td>
<td>
<p style="text-align: center;"><a title="RAID_0" href="http://static.flickr.com/3540/3632772399_405a2130f0.jpg"><img class="alignnone" src="http://static.flickr.com/3540/3632772399_405a2130f0_m.jpg" alt="RAID_0" /></a></p>
</td>
</tr>
</tbody>
</table>
<ul>
<li>Distribución de datos equitativa entre discos</li>
<li>No hay redundancia</li>
<li>Incremento del rendimiento</li>
<li>Crear un disco grande a partir de varios pequeños</li>
<li>Puede ser creado con discos de diferentes tamaños, pero está limitado por el disco más pequeño. Ejemplo: 160 GB + 120 GB = <strong>240 GB</strong></li>
</ul>
<h2>JBOD (Concatenación de discos)</h2>
<p style="text-align: center;"><a title="JBOD" href="http://static.flickr.com/3329/3632868645_de4afeacb8.jpg"><img class="alignnone" src="http://static.flickr.com/3329/3632868645_de4afeacb8_m.jpg" alt="JBOD" /></a></p>
<ul>
<li>No es RAID propiamente dicho pero es una forma común de combinar varios discos físicos en uno virtual</li>
<li>Parecido a LVM y LSM, solo que se hace a nivel de hardware y no de software como LVM/LSM</li>
<li>Distribución de datos por disco</li>
<li>Si se pierde un disco solo se pierde los datos de ese disco</li>
<li>No hay mejora en el rendimiento</li>
<li>El disco total es la suma de los discos. Ejemplo: 160 GB + 120 GB = <strong>280 GB</strong></li>
</ul>
<h2>RAID 1 (Espejo)</h2>
<table border="0">
<tbody>
<tr>
<td>
<p><div id="attachment_1075" class="wp-caption aligncenter" style="width: 210px"><a href="http://lgallardo.com/wp-content/uploads/2009/06/raid1.gif"><img class="size-full wp-image-1075" title="raid1" src="http://lgallardo.com/wp-content/uploads/2009/06/raid1.gif" alt="RAID 1" width="200" height="200" /></a><p class="wp-caption-text">RAID 1</p></div></td>
<td>
<p style="text-align: center;"><a title="RAID1" href="http://static.flickr.com/3551/3633737856_009aaf2cdd.jpg"><img class="alignnone" src="http://static.flickr.com/3551/3633737856_009aaf2cdd_m.jpg" alt="RAID1" /></a></p>
</td>
</tr>
</tbody>
</table>
<ul>
<li>Crea una copia exacta de un disco en uno o más discos</li>
<li>Útil cuando más importante la lectura que la capacidad</li>
<li>El rendimiento de lectura se incrementa linealmente (con hardware independiente)</li>
<li>No hay mejora de rendimiento en la escritura (al escribir el conjunto se comporta como un único disco)</li>
<li>El disco total es igual al más pequeño de los discos. Ejemplo: 160 GB + 120 GB= <strong>120 GB</strong></li>
</ul>
<h2>RAID 2 (Código de detección de errores)</h2>
<ul>
<li>Divide los datos a n ivel de bits en vez de bloques</li>
<li>Usa código Hamming para corregir errores (añade redundancia a nivel de bits)</li>
<li>El uso de código  Hamming(7,4) (cuatro bits de datos más tres de bits de paridad) también permite usar 7 discos en RAID 2, con 4 disco siendo usados para guardar datos y 3 discos pra corrección de error.</li>
</ul>
<h2>RAID 3 (Conjunto dividido con paridad)</h2>
<table border="0">
<tbody>
<tr>
<td>
<p><div id="attachment_1077" class="wp-caption aligncenter" style="width: 210px"><a href="http://lgallardo.com/wp-content/uploads/2009/06/raid3.gif"><img class="size-full wp-image-1077" title="raid3" src="http://lgallardo.com/wp-content/uploads/2009/06/raid3.gif" alt="RAID 3" width="200" height="200" /></a><p class="wp-caption-text">RAID 3</p></div></td>
<td>
<p style="text-align: center;"><a title="RAID_3" href="http://static.flickr.com/3416/3633792662_6c4a5469bd.jpg"><img class="alignnone" src="http://static.flickr.com/3416/3633792662_6c4a5469bd_m.jpg" alt="RAID_3" /></a></p>
</td>
</tr>
</tbody>
</table>
<ul>
<li>Usa división a nivel de bytes</li>
<li>usa un disco de paridad dedicado</li>
<li>Todos los discos son activados al leer o escribir</li>
<li>No puede atender peticiones simultáneas ya que cualquier bloque de datos se dividirá entre los bloques del arreglo. Ejemplo: pedir A y B simultáneamente implica que se accede a B una vez que se hallan leído A<sub>1</sub>, A<sub>2</sub>, A<sub>3</sub>, A<sub>3</sub>&#8230;A<sub>6</sub></li>
</ul>
<h2>RAID 4 (Conjunto dividido por bloque con paridad)</h2>
<table border="0">
<tbody>
<tr>
<td>
<p><div id="attachment_1078" class="wp-caption aligncenter" style="width: 210px"><a href="http://lgallardo.com/wp-content/uploads/2009/06/raid4.gif"><img class="size-full wp-image-1078" title="raid4" src="http://lgallardo.com/wp-content/uploads/2009/06/raid4.gif" alt="RAID 4" width="200" height="200" /></a><p class="wp-caption-text">RAID 4</p></div></td>
<td>
<p style="text-align: center;"><a title="RAID_4" href="http://static.flickr.com/3310/3633046331_769b10abf2.jpg"><img class="alignnone" src="http://static.flickr.com/3310/3633046331_769b10abf2_m.jpg" alt="RAID_4" /></a></p>
</td>
</tr>
</tbody>
</table>
<ul>
<li>Usa división a nivel de bloques</li>
<li>Usa un disco de paridad dedicado</li>
<li>Cada miembro del conjunto funciona independientemente cuando se solicita un único bloque</li>
<li>Si la controladora de disco lo permite, se pueden atender peticiones de lectura simultánea.</li>
<li>Existe un cuello de botella en el disco de paridad que complica la escritura</li>
<li>Si un disco falla, el disco de paridad es usado para reconstruirlo en un disco de reemplazo</li>
</ul>
<h2>RAID 5 (Bloques con paridad distribuida)</h2>
<table border="0">
<tbody>
<tr>
<td>
<p><div id="attachment_1079" class="wp-caption aligncenter" style="width: 210px"><a href="http://lgallardo.com/wp-content/uploads/2009/06/raid5.gif"><img class="size-full wp-image-1079" title="raid5" src="http://lgallardo.com/wp-content/uploads/2009/06/raid5.gif" alt="RAID 5" width="200" height="200" /></a><p class="wp-caption-text">RAID 5</p></div></td>
<td>
<p style="text-align: center;"><a title="RAID_5" href="http://static.flickr.com/3549/3633881780_a71990c824.jpg"><img class="alignnone" src="http://static.flickr.com/3549/3633881780_a71990c824_m.jpg" alt="RAID_5" /></a></p>
</td>
</tr>
</tbody>
</table>
<ul>
<li>Usa división de datos a nivel de bloques</li>
<li>Se distribuye la paridad entre todos los discos del arreglo</li>
<li>Bajo costo de redundancia</li>
<li>Una petición del bloque A<sub>1</sub> es servido por el disco cero. Una petición simultánea del bloque B<sub>1</sub> tendrá que esperar, no así una petición del bloque B<sub>2</sub> (está en otro disco)</li>
<li>Si un bloque de datos es actualizado, entonces todos los bloques sin cambió deben leerse nuevamente de los discos para calcular la nueva paridad la cual será guardada al igual que el bloque actualizado.</li>
<li>Si falla un disco del arreglo, los bloques  de paridad de los discos restantes son usados para reconstruir los datos del disco que ha fallado</li>
<li>Requiere al menos de 3 unidades de disco para ser implementado</li>
<li>La falla de un segundo disco provocaría la pérdida completa de los datos</li>
<li>Si falla el disco 2, A<sub>3</sub> se calcula como sigue:</li>
</ul>
<p style="padding-left: 30px;">A<sub>3</sub>=Pinv(A<sub>1</sub>,A<sub>2</sub>,P<sub>123</sub>)</p>
<div id="attachment_1085" class="wp-caption aligncenter" style="width: 210px"><a href="http://lgallardo.com/wp-content/uploads/2009/06/raid5wo.gif"><img class="size-full wp-image-1085" title="raid5wo" src="http://lgallardo.com/wp-content/uploads/2009/06/raid5wo.gif" alt="RAID 5 update" width="200" height="200" /></a><p class="wp-caption-text">RAID 5 update</p></div>
<h2>Referencias</h2>
<ul>
<li><a href="http://es.wikipedia.org/wiki/RAID" target="_blank">RAID en Wikipedia</a></li>
<li><a href="http://www.lascon.co.uk/d008005.htm" target="_blank">LasCon Storage</a></li>
<li><a href="http://www.z-a-recovery.com/art-raid-estimator.htm">Calculadora RAID en línea</a></li>
</ul>
<p>Artículos relacionados:<ol>
<li><a href='http://lgallardo.com/2009/06/23/ftp-activo-vs-ftp-pasivoftp-active-vs-passive/' rel='bookmark' title='FTP activo vs. FTP pasivo'>FTP activo vs. FTP pasivo</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://lgallardo.com/2009/06/18/raidraid/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Trabajando con tar</title>
		<link>http://lgallardo.com/2009/06/15/trabajando-con-tar-working-with-tar/</link>
		<comments>http://lgallardo.com/2009/06/15/trabajando-con-tar-working-with-tar/#comments</comments>
		<pubDate>Mon, 15 Jun 2009 05:00:22 +0000</pubDate>
		<dc:creator>Luis Gallardo</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[PCL]]></category>

		<guid isPermaLink="false">http://lgallardo.com/?p=996</guid>
		<description><![CDATA[Si nunca has trabajado con tar antes o si conoces pocas opciones esta entrada te mostrará como usar tar, por lo menos las opciones básicas. Primero que nada, vamos a ver un extracto de la descripción del manual de tar: &#8220;Tar guarda y extrae archivos desde cintas de archivo o disco. El primer argumento debe [...]
Artículos relacionados:<ol>
<li><a href='http://lgallardo.com/2009/03/28/jugar-con-el-psp-en-el-monitor-usando-linux/' rel='bookmark' title='Jugar con el PSP en el monitor usando Linux'>Jugar con el PSP en el monitor usando Linux</a></li>
<li><a href='http://lgallardo.com/2009/09/22/crear-un-entorno-debian-con-debootstrap/' rel='bookmark' title='Crear un entorno Debian con debootstrap'>Crear un entorno Debian con debootstrap</a></li>
<li><a href='http://lgallardo.com/2009/03/30/compilando-el-kernel-en-el-ps3/' rel='bookmark' title='Compilando el Kernel en el PS3'>Compilando el Kernel en el PS3</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a title="file-roller" href="http://static.flickr.com/3622/3627273600_af9d232754.jpg"><img style="float: left;" src="http://static.flickr.com/3622/3627273600_af9d232754_m.jpg" alt="file-roller" /></a>Si nunca has trabajado con <em>tar</em> antes o si conoces pocas opciones esta entrada te mostrará como usar <em>tar</em>, por lo menos las opciones básicas. Primero que nada, vamos a ver un extracto de la descripción del manual de <em>tar</em>:</p>
<p>&#8220;<em>Tar</em> guarda y extrae archivos desde cintas de archivo o disco. El primer argumento debe ser una función; cualquiera de las letras Acdrtux, o uno de los nombres de funciones. Una letra de función no necesita como prefijo &#8216;-&#8217;, y puede combinarse con otras opciones de un solo carácter. Algunas opciones toman un parámetro; con el formato de una sola letra estos deben ser dados como argumentos separados. Una función de nombre largo debe tener el prefijo &#8212;  Ok, veamos algunas de esas opciones&#8230;<br />
<span id="more-996"></span></p>
<h2>Funciones y opciones de tar</h2>
<table border="0">
<tbody>
<tr>
<td><strong>Función / Opción</strong></td>
<td><strong> Descripción</strong></td>
</tr>
<tr>
<td>
<pre>-f</pre>
</td>
<td>Es una archivo</td>
</tr>
<tr>
<td>
<pre>-A</pre>
</td>
<td>Agregar archivo tar al contenedor</td>
</tr>
<tr>
<td>
<pre>-c</pre>
</td>
<td>Crear un nuevo contenedor (archivo tar)</td>
</tr>
<tr>
<td>
<pre>-d</pre>
</td>
<td>Buscar diferencias entre el contenedor y el sistema de archivos</td>
</tr>
<tr>
<td>
<pre>-r</pre>
</td>
<td>Agregar archivo al final del contenedor</td>
</tr>
<tr>
<td>
<pre>-t</pre>
</td>
<td>Listar el contendedor del archivo tar</td>
</tr>
<tr>
<td>
<pre>-z</pre>
</td>
<td>Filtrar el contenedor a través de gzip</td>
</tr>
<tr>
<td>
<pre>-j</pre>
</td>
<td>Filtrar el contenedor a través de bzip2</td>
</tr>
<tr>
<td>
<pre>-x</pre>
</td>
<td>Extraer los archivos del contenedor</td>
</tr>
<tr>
<td>
<pre>--delete</pre>
</td>
<td>Borrar archivo del contenedor  (no hacer en cintas mag!)</td>
</tr>
</tbody>
</table>
<h2>Ejemplos</h2>
<p>Aquí hay unos ejemplos de cómo usar el comando tar&#8230;  Crear un nuevo archivo a partir de la carpeta <em>Imágenes</em></p>
<p>:</p>
<blockquote>
<pre>tar cfv imágenes.tar Imágenes/</pre>
</blockquote>
<p>Ahora leamos su contenido:</p>
<blockquote>
<pre>tar tf imágenes.tar</pre>
</blockquote>
<p>Ok, qué tal si agregamos un nuevo archivo:</p>
<blockquote>
<pre>tar rf imágenes.tar Imágenes/Pantallazo.png</pre>
</blockquote>
<p>Si tienes un archivo tar y quieres agregárselo a otro archivo tar:</p>
<blockquote>
<pre>tar Af imágenes.tar aplicación.tar</pre>
</blockquote>
<p>Eliminar un archivo del contenedor:</p>
<blockquote>
<pre>tar f imágenes.tar --delete Imágenes/Pantallazo.png</pre>
</blockquote>
<p>Si quieres ver los cambios realizados en el sistema de archivo contra el contenedor:</p>
<blockquote>
<pre>tar df imágenes.tar Imágenes/</pre>
</blockquote>
<p>Para crear un tarball compuesto de archivos jpg:</p>
<blockquote>
<pre>tar cfzv imágenes.tar.gz Imágenes/*.jpg</pre>
</blockquote>
<p>Si descargas el kernel de Linux desde <a href="http://kernel.org" target="_blank">http://kernel.org</a>, necesitarás extraerlo:</p>
<blockquote>
<pre>tar xfjv linux-2.6.30.tar.bz2</pre>
</blockquote>
<h2>Referencia</h2>
<ul>
<li><a href="http://unixhelp.ed.ac.uk/CGI/man-cgi?tar" target="_blank">Manual de tar</a></li>
</ul>
<p>Artículos relacionados:<ol>
<li><a href='http://lgallardo.com/2009/03/28/jugar-con-el-psp-en-el-monitor-usando-linux/' rel='bookmark' title='Jugar con el PSP en el monitor usando Linux'>Jugar con el PSP en el monitor usando Linux</a></li>
<li><a href='http://lgallardo.com/2009/09/22/crear-un-entorno-debian-con-debootstrap/' rel='bookmark' title='Crear un entorno Debian con debootstrap'>Crear un entorno Debian con debootstrap</a></li>
<li><a href='http://lgallardo.com/2009/03/30/compilando-el-kernel-en-el-ps3/' rel='bookmark' title='Compilando el Kernel en el PS3'>Compilando el Kernel en el PS3</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://lgallardo.com/2009/06/15/trabajando-con-tar-working-with-tar/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Comando netstat</title>
		<link>http://lgallardo.com/2009/05/21/comando-netstatthe-netstat-command/</link>
		<comments>http://lgallardo.com/2009/05/21/comando-netstatthe-netstat-command/#comments</comments>
		<pubDate>Thu, 21 May 2009 05:45:50 +0000</pubDate>
		<dc:creator>Luis Gallardo</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[PCL]]></category>

		<guid isPermaLink="false">http://lgallardo.com/?p=811</guid>
		<description><![CDATA[Según Wikipedia, &#8220;Netstat (network statistics) es una herramienta de línea de comandos que muestra un listado de las conexiones activas de un computador, tanto entrantes como salientes&#8221;. Por defecto, netstat sin opciones muestra el estatus de las conexiones actuales listando los conectores. Pero veamos otras opciones que puedes usar con el comando netstat&#8230; Opciones Option [...]
Artículos relacionados:<ol>
<li><a href='http://lgallardo.com/2009/04/13/comando-find/' rel='bookmark' title='Comando find'>Comando find</a></li>
<li><a href='http://lgallardo.com/2009/05/11/interpretando-el-comando-freeunderstanding-the-free-command/' rel='bookmark' title='Interpretando el comando free'>Interpretando el comando free</a></li>
<li><a href='http://lgallardo.com/2009/06/23/ftp-activo-vs-ftp-pasivoftp-active-vs-passive/' rel='bookmark' title='FTP activo vs. FTP pasivo'>FTP activo vs. FTP pasivo</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<div class="wp-caption aligncenter" style="width: 610px"><img title="Comando netstat" src="http://farm4.static.flickr.com/3655/3550874346_fe4ae44b60_o.png" alt="Comando netstat" width="600" height="165" /><p class="wp-caption-text">Comando netstat</p></div>
<p>Según Wikipedia, &#8220;Netstat (network statistics) es una herramienta de línea de comandos que muestra un listado de las conexiones activas de un computador, tanto entrantes como salientes&#8221;.</p>
<p>Por defecto, netstat sin opciones muestra el estatus de las conexiones actuales listando los conectores. Pero veamos otras opciones que puedes usar con el comando netstat&#8230;</p>
<h2>Opciones</h2>
<table style="border: 0pt solid #000000; width: 600px;" border="1">
<tbody>
<tr>
<td style="text-align: center;"><strong>Option</strong></td>
<td style="text-align: center;"><strong>Description</strong></td>
</tr>
<tr>
<td>-e</td>
<td>Muestra información adicional. Use esta opción dos veces para máximo detalle</td>
</tr>
<tr>
<td>-r</td>
<td>Muestra el contenido de la tabla de rutas IP (es como el comando <em>route</em>)</td>
</tr>
<tr>
<td>-i</td>
<td>Muestra las interfaces de red y sus estadísticas.</td>
</tr>
<tr>
<td>-n</td>
<td>Las direcciones, número de puertos, y usuarios son expresados numéricamente y no se intenta resolver nombres</td>
</tr>
<tr>
<td>-l</td>
<td>Muestra solamente sockets que están escuchando</td>
</tr>
<tr>
<td>-a</td>
<td>Muestra tanto las socket que están escuchando como los que no (muestra las conexiones TCP activas y los puertos TCP y UDP qu estén escuchando en el computador</td>
</tr>
<tr>
<td>-s</td>
<td>Muestra la estadística resumen para cada protocolo. Puede usarse el parámetro <strong>-p</strong> para especificar los tipos de protocolos.</td>
</tr>
<tr>
<td>-t</td>
<td>Muestra solo las conexiones TCP</td>
</tr>
<tr>
<td>-u</td>
<td>Muestra solo las conexiones UDP</td>
</tr>
<tr>
<td>-c</td>
<td>Esto hace que se muestre de forma continua la salida de netstat cada segundo.</td>
</tr>
<tr>
<td>-p</td>
<td>Muestra el PID y el nombre del programa al cual el socket pertenece</td>
</tr>
</tbody>
</table>
<p><span id="more-811"></span></p>
<h2>Salida</h2>
<p>La salida dependerá del tipo de conexión. Aquí vemos el formato para las Conexiones Activas de Internet (TCP, UDP, raw)</p>
<table style="border: 0pt solid #000000; width: 600px;" border="1">
<tbody>
<tr>
<td style="text-align: center;"><strong>Field</strong></td>
<td style="text-align: center;"><strong>Description</strong></td>
</tr>
<tr>
<td>Proto</td>
<td>El protocolo (tcp, udp, raw) usado por el socket.</td>
</tr>
<tr>
<td>Recv-Q</td>
<td>La cantidad de bytes no copiados por el programa usuario conectado a este socket.</td>
</tr>
<tr>
<td>Send-Q</td>
<td>La cantidad de bytes no reconocidos por la máquina remota.</td>
</tr>
<tr>
<td>Local Address</td>
<td>Dirección y número de puerto  del lado local del socket.</td>
</tr>
<tr>
<td>Foreign Address</td>
<td>Dirección y número de puerto  del lado remoto del socket.</td>
</tr>
<tr>
<td>State</td>
<td>El estado del socket.</td>
</tr>
<tr>
<td>User</td>
<td>El nombre de usuario o el identificador de usuario (UID) del propietario del socket.</td>
</tr>
<tr>
<td>PID/Program name</td>
<td>Par separado por &#8220;barra&#8221; del identificador de proceso (PID) y en nombre del proceso al que le pertenece el socket. Necesitarás privilegios de <em>superusuario</em> para ver la información en otros sockets que no te pertenezcan.</td>
</tr>
</tbody>
</table>
<p>Donde <em>State</em> puede ser cualquiera de estos valores:</p>
<table style="border: 0pt solid #000000; width: 600px;" border="1">
<tbody>
<tr>
<td>ESTABLISHED</td>
<td>El socket tiene una conexión establecida.</td>
</tr>
<tr>
<td>SYN_SENT</td>
<td>El socket está intentando activamente de establecer una conexión.</td>
</tr>
<tr>
<td>SYN_RECV</td>
<td>Una petición de conexión ha sido recibida desde la red.</td>
</tr>
<tr>
<td>FIN_WAIT1</td>
<td>El socket está cerrado, y la conexión se está cerrando.</td>
</tr>
<tr>
<td>FIN_WAIT2</td>
<td>La conexión está cerrada, y el socket está esperando por una desconexión desde el lado remoto.</td>
</tr>
<tr>
<td>TIME_WAIT</td>
<td>El socket está esperando después de cerrar para manejar paquetes que están aún en la red.</td>
</tr>
<tr>
<td>CLOSED</td>
<td>El socket no está siendo usado.</td>
</tr>
<tr>
<td>CLOSE_WAIT</td>
<td>El lado remoto ha desconectado, esperando por el socket para cerrar.</td>
</tr>
<tr>
<td>LAST_ACK</td>
<td>El lado remoto ha desconectado, y el socket está cerrado. Esperando por reconocimiento.</td>
</tr>
<tr>
<td>LISTEN</td>
<td>El socket está escuchando por conexiones entrantes.</td>
</tr>
<tr>
<td>CLOSING</td>
<td>Ambos sockets están desconectados pero nosotros aún no hemos enviado todos nuestros datos.</td>
</tr>
<tr>
<td>UNKNOWN</td>
<td>El estado del socket es desconocido.</td>
</tr>
</tbody>
</table>
<h2>Referencias</h2>
<ul>
<li><a href="http://en.wikipedia.org/wiki/Netstat" target="_blank">http://es.wikipedia.org/wiki/Netstat</a></li>
<li><a href="http://linux.die.net/man/8/netstat" target="_blank">http://linux.die.net/man/8/netstat</a></li>
</ul>
<p>Artículos relacionados:<ol>
<li><a href='http://lgallardo.com/2009/04/13/comando-find/' rel='bookmark' title='Comando find'>Comando find</a></li>
<li><a href='http://lgallardo.com/2009/05/11/interpretando-el-comando-freeunderstanding-the-free-command/' rel='bookmark' title='Interpretando el comando free'>Interpretando el comando free</a></li>
<li><a href='http://lgallardo.com/2009/06/23/ftp-activo-vs-ftp-pasivoftp-active-vs-passive/' rel='bookmark' title='FTP activo vs. FTP pasivo'>FTP activo vs. FTP pasivo</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://lgallardo.com/2009/05/21/comando-netstatthe-netstat-command/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Interpretando el comando free</title>
		<link>http://lgallardo.com/2009/05/11/interpretando-el-comando-freeunderstanding-the-free-command/</link>
		<comments>http://lgallardo.com/2009/05/11/interpretando-el-comando-freeunderstanding-the-free-command/#comments</comments>
		<pubDate>Mon, 11 May 2009 05:00:11 +0000</pubDate>
		<dc:creator>Luis Gallardo</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[PCL]]></category>

		<guid isPermaLink="false">http://lgallardo.com/?p=744</guid>
		<description><![CDATA[El comando free muestra la cantidad de memoria libre y usada en el sistema, según el manual (man free). Pero aquí está una de los términos que se presta a confusión en Linux: &#8220;memoria usada&#8221;. De otros sistemas operativos, estamos acostumbrados a la idea de que &#8220;memoria usada&#8221; se refiere a memoria que ya se [...]
Artículos relacionados:<ol>
<li><a href='http://lgallardo.com/2009/05/21/comando-netstatthe-netstat-command/' rel='bookmark' title='Comando netstat'>Comando netstat</a></li>
<li><a href='http://lgallardo.com/2009/04/13/comando-find/' rel='bookmark' title='Comando find'>Comando find</a></li>
<li><a href='http://lgallardo.com/2010/02/25/la-orden-lsof/' rel='bookmark' title='La orden lsof'>La orden lsof</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<div class="wp-caption aligncenter" style="width: 510px"><a title="free" href="http://static.flickr.com/3567/3505730239_f4ba87bae6.jpg"><img title="free command's output and System monitor" src="http://static.flickr.com/3567/3505730239_f4ba87bae6.jpg" alt="free" width="500" height="341" /></a><p class="wp-caption-text">Salida del comando free Monitor del Sistema</p></div>
<p>El comando free muestra la cantidad de memoria libre y usada en el sistema, según el manual (man free). Pero aquí está una de los términos que se presta a confusión en Linux: &#8220;memoria usada&#8221;. De otros sistemas operativos, estamos acostumbrados a la idea de que &#8220;memoria usada&#8221; se refiere a memoria que ya se usó, por ende no podemos usarla en el futuro. En Linux, &#8220;memoria usada&#8217; significa memoria tomada por el sistema, de forma que pueda ser empleada por usuarios y aplicaciones. Desde este punto de vista entre más memoria usada se tenga, mejor. Si tienes un 1GB de ram y memoria usada de 900 MB, por favor no salgas corriendo a comprar otro giga extra porque  lo más probable es que tendrás 1.9 GB de memoria usada&#8230;de nuevo, no te preocupes esto es normal.</p>
<p><span id="more-744"></span></p>
<h2>Free vs Monitor del Sistema</h2>
<p>Puedes verificar la memoria usada, disponible y total usando una herramienta llamada &#8220;Monitor del Sistema&#8221;. Solo ve a <em>Aplicaciones &gt; Herramientas del Sistema &gt; Monitor del Sistema</em>. Si ejecutas el comando <em>free</em> y lo comparas con la salida del <em>Monitor del Sistema</em> paracería que ambas aplicaciones reportan información diferente, pero no es así. La imagen de arriba nos ayudará a comprender la salida del comando free.</p>
<p>Si quieres saber cúanta memoria usada (de la forma tradicioal), usa esta fórmula:</p>
<table border="0">
<tbody>
<tr>
<td>Monitor del Sistema</td>
<td>Comando free</td>
<td>Ejemplo</td>
</tr>
<tr>
<td>used(Monitor del Sistema)</td>
<td>used(free) &#8211; shared &#8211; buffers &#8211; cached</td>
<td>921-0-12-284 = <strong>625</strong></td>
</tr>
</tbody>
</table>
<p>Por cierto, también puedes obtener la misma informacíon que reporta el <em>Monitor del Sistema</em> leyendo la segunda fila de la salida del comando <em>free</em>.</p>
<h2>Referencias</h2>
<ul>
<li><a href="http://linux.die.net/man/1/free">http://linux.die.net/man/1/free</a></li>
</ul>
<p>Artículos relacionados:<ol>
<li><a href='http://lgallardo.com/2009/05/21/comando-netstatthe-netstat-command/' rel='bookmark' title='Comando netstat'>Comando netstat</a></li>
<li><a href='http://lgallardo.com/2009/04/13/comando-find/' rel='bookmark' title='Comando find'>Comando find</a></li>
<li><a href='http://lgallardo.com/2010/02/25/la-orden-lsof/' rel='bookmark' title='La orden lsof'>La orden lsof</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://lgallardo.com/2009/05/11/interpretando-el-comando-freeunderstanding-the-free-command/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Preguntas de repaso PCL I y II (Profesional Certificado Linux)</title>
		<link>http://lgallardo.com/2009/05/05/preguntas-de-repaso-pcl-i-y-ii-profesional-certificado-linux-review-questions-for-pcl-i-ii-exam-profesional-certificado-linux/</link>
		<comments>http://lgallardo.com/2009/05/05/preguntas-de-repaso-pcl-i-y-ii-profesional-certificado-linux-review-questions-for-pcl-i-ii-exam-profesional-certificado-linux/#comments</comments>
		<pubDate>Tue, 05 May 2009 18:25:05 +0000</pubDate>
		<dc:creator>Luis Gallardo</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[PCL]]></category>

		<guid isPermaLink="false">http://lgallardo.com/?p=747</guid>
		<description><![CDATA[Si estás tomando el curso de Profesional Certificado Linux (PCL)  en el ISEIT, aquí te dejo unas preguntas de repaso para los exámenes de certificación PCL I y PCL II. Preguntas de repaso PCL I Preguntas de repaso PCL II Las respuestas dependen de ti :) URL del instituto: http://ve.iseit.net Artículos relacionados: Montando sistemas de [...]
Artículos relacionados:<ol>
<li><a href='http://lgallardo.com/2009/04/08/montando-sistemas-de-archivos-en-linux/' rel='bookmark' title='Montando sistemas de archivos en Linux'>Montando sistemas de archivos en Linux</a></li>
<li><a href='http://lgallardo.com/2010/09/20/graduacion-iseit-2010/' rel='bookmark' title='Graduación ISEIT 2010'>Graduación ISEIT 2010</a></li>
<li><a href='http://lgallardo.com/2010/04/15/actualizacion-necesaria-de-ps3-elimina-linux/' rel='bookmark' title='Actualización necesaria de PS3 elimina Linux'>Actualización necesaria de PS3 elimina Linux</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a title="logo-iseit" href="http://static.flickr.com/3394/3504452625_f210a32377.jpg"><img class="alignnone" src="http://static.flickr.com/3394/3504452625_f210a32377_m.jpg" alt="logo-iseit" /></a></p>
<p>Si estás tomando el curso de Profesional Certificado Linux (PCL)  en el ISEIT, aquí te dejo unas preguntas de repaso para los exámenes de certificación PCL I y PCL II.</p>
<ol>
<li><a href="http://lgallardo.com/wp-content/uploads/2009/05/repaso1.pdf">Preguntas de repaso PCL I</a></li>
<li><a href="http://lgallardo.com/wp-content/uploads/2009/05/repaso2.pdf">Preguntas de repaso PCL II</a></li>
</ol>
<p>Las respuestas dependen de ti :)</p>
<p><strong>URL del instituto: </strong><a href="http://ve.iseit.net">http://ve.iseit.net</a></p>
<p>Artículos relacionados:<ol>
<li><a href='http://lgallardo.com/2009/04/08/montando-sistemas-de-archivos-en-linux/' rel='bookmark' title='Montando sistemas de archivos en Linux'>Montando sistemas de archivos en Linux</a></li>
<li><a href='http://lgallardo.com/2010/09/20/graduacion-iseit-2010/' rel='bookmark' title='Graduación ISEIT 2010'>Graduación ISEIT 2010</a></li>
<li><a href='http://lgallardo.com/2010/04/15/actualizacion-necesaria-de-ps3-elimina-linux/' rel='bookmark' title='Actualización necesaria de PS3 elimina Linux'>Actualización necesaria de PS3 elimina Linux</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://lgallardo.com/2009/05/05/preguntas-de-repaso-pcl-i-y-ii-profesional-certificado-linux-review-questions-for-pcl-i-ii-exam-profesional-certificado-linux/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Guía rápida de Vi</title>
		<link>http://lgallardo.com/2009/04/30/guia-rapida-de-vivi-quick-reference/</link>
		<comments>http://lgallardo.com/2009/04/30/guia-rapida-de-vivi-quick-reference/#comments</comments>
		<pubDate>Thu, 30 Apr 2009 06:16:17 +0000</pubDate>
		<dc:creator>Luis Gallardo</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[PCL]]></category>

		<guid isPermaLink="false">http://lgallardo.com/?p=669</guid>
		<description><![CDATA[¿Cansado de usar tu mismo editor de texto? ¿Cansado de estar atado a un editor específico? ¿Tus compañeros de trabajo se burlan porque no entiendes vi?&#8230;No te preocupe más!!! Ya está aquí una guía rápida de vi. ¿Cómo funciona Vi? Quizás estás cansado de vi porque cada vez que intentas utilizarlo no obtienes los resultados [...]
Artículos relacionados:<ol>
<li><a href='http://lgallardo.com/2009/04/21/acceso-rapido-en-el-terminalterminals-shortcuts/' rel='bookmark' title='Acceso rápido en el terminal'>Acceso rápido en el terminal</a></li>
<li><a href='http://lgallardo.com/2009/09/02/bloquear-pantalla-en-xfce4/' rel='bookmark' title='Bloquear la pantalla en Xfce4'>Bloquear la pantalla en Xfce4</a></li>
<li><a href='http://lgallardo.com/2009/04/13/comando-find/' rel='bookmark' title='Comando find'>Comando find</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a title="vicmd" href="http://farm4.static.flickr.com/3343/3487174214_f0c5f0c192_o.png" target="_blank"><img class="aligncenter" src="http://farm4.static.flickr.com/3343/3487174214_6fbf5f9b1b.jpg" alt="vicmd" width="500" height="343" /></a></p>
<p>¿Cansado de usar tu mismo editor de texto? ¿Cansado de estar atado a un editor específico? ¿Tus compañeros de trabajo se burlan porque no entiendes vi?&#8230;No te preocupe más!!! Ya está aquí una guía rápida de vi.</p>
<h2>¿Cómo funciona Vi?</h2>
<p>Quizás estás cansado de vi porque cada vez que intentas utilizarlo no obtienes los resultados esperados. Ok, vamos a hablar de cómo funciona vi. Existen tres modos de operación:</p>
<ul>
<li><strong>Modo comando:</strong> En este modo, vi espera una acción a ser ejecutada como copiar, pegar o mover el cursor. Este es su comportamiento por defecto, así que cuando abres un archivo y empiezas a escribir no verás lo que estás escribiendo porque estarás ejecutando comandos.</li>
<li><strong>Modo Insertar:</strong> En este modo de hecho puedes escribir en el archivo, pero antes debes usar uno de los comandos de insertar como &#8220;i&#8221;</li>
<li><strong>Modo comando extendido:</strong> Este es un modo especial donde puedes pasarle argumentos a los comandos. Para entrar en este modo solo escribe dos puntos y el comando. Por ejemplo:</li>
</ul>
<blockquote><p>:1,4 y</p></blockquote>
<p>Esto indica que se debe copiar de la línea 1 a la 4. Ahora vamos a ver algunos comandos agrupados según su funcionalidad:</p>
<h2>Movimiento de cursor</h2>
<table border="0">
<tbody>
<tr>
<td>h</td>
<td>Mueve a la izquierda</td>
</tr>
<tr>
<td>j</td>
<td>Mueve hacia abajo</td>
</tr>
<tr>
<td>k</td>
<td>Mueve hacia arriba</td>
</tr>
<tr>
<td>l</td>
<td>Mueve hacia la derecha</td>
</tr>
<tr>
<td>w</td>
<td>Ir al inicio de la palabra (próxima palabra)</td>
</tr>
<tr>
<td>e</td>
<td>Ir al final de la palabra actual</td>
</tr>
<tr>
<td>b</td>
<td>Ir hacia atrás una palabra</td>
</tr>
<tr>
<td>0</td>
<td>Ir al comienzo de línea</td>
</tr>
<tr>
<td>$</td>
<td>Ir al final de la línea</td>
</tr>
<tr>
<td>nG</td>
<td>Ir a la línea n. G solo significa ir a la última línea</td>
</tr>
<tr>
<td>:n</td>
<td>Ir a la línea n</td>
</tr>
</tbody>
</table>
<p><span id="more-669"></span></p>
<h2>Insertando texto</h2>
<table border="0">
<tbody>
<tr>
<td>i</td>
<td>Inicio de modo de inserción en el cursor</td>
</tr>
<tr>
<td>I</td>
<td>Modo de inserción al inicio de la línea</td>
</tr>
<tr>
<td>a</td>
<td>Agregar después del cursor</td>
</tr>
<tr>
<td>A</td>
<td>Agregar al final de la línea</td>
</tr>
<tr>
<td>o</td>
<td>Nueva línea abajo del cursor</td>
</tr>
<tr>
<td>O</td>
<td>Nueva línea arriba del cursor</td>
</tr>
<tr>
<td>ea</td>
<td>Agregar al final de la palabra</td>
</tr>
<tr>
<td>Esc</td>
<td>Salir del modo de inserción y regresar al modo de comando</td>
</tr>
</tbody>
</table>
<h2>Edición de texto</h2>
<table border="0">
<tbody>
<tr>
<td>r</td>
<td>Reemplaza un único carácter sin entrar al modo de inserción</td>
</tr>
<tr>
<td>J</td>
<td>Unir con la línea abajo del cursor</td>
</tr>
<tr>
<td>cc</td>
<td>Cambia (reemplaza) la línea</td>
</tr>
<tr>
<td>cw</td>
<td>Cambiar palabra</td>
</tr>
<tr>
<td>c$</td>
<td>Cambiar hasta el final de la línea</td>
</tr>
<tr>
<td>s</td>
<td>Borrar carácter y sustituye</td>
</tr>
<tr>
<td>S</td>
<td>Borrar línea y sustituir (como cc)</td>
</tr>
<tr>
<td>u</td>
<td>Deshacer</td>
</tr>
<tr>
<td>Ctrl+R</td>
<td>Rehacer</td>
</tr>
<tr>
<td>.</td>
<td>Repetir último comando</td>
</tr>
</tbody>
</table>
<h2>Cortar y pegar</h2>
<table border="0">
<tbody>
<tr>
<td>yy</td>
<td>Copiar línea</td>
</tr>
<tr>
<td>p</td>
<td>Pegar después del cursor</td>
</tr>
<tr>
<td>P</td>
<td>Pegar antes del cursor</td>
</tr>
<tr>
<td>dd</td>
<td>Borrar línea</td>
</tr>
<tr>
<td>x</td>
<td>Borra el carácter actual</td>
</tr>
</tbody>
</table>
<h2>Saliendo</h2>
<table border="0">
<tbody>
<tr>
<td>:w</td>
<td>Guardar sin salir</td>
</tr>
<tr>
<td>:wq</td>
<td>Guardar y salir</td>
</tr>
<tr>
<td>:q</td>
<td>salir (no sale si han habido cambios)</td>
</tr>
<tr>
<td>:q!</td>
<td>Salir sin guardar</td>
</tr>
<tr>
<td>ZZ</td>
<td>Como :wq</td>
</tr>
</tbody>
</table>
<h2>Búsqueda de texto</h2>
<table border="0">
<tbody>
<tr>
<td>/</td>
<td>Búsqueda progresiva</td>
</tr>
<tr>
<td>?</td>
<td>Búsqueda regresiva</td>
</tr>
<tr>
<td>n</td>
<td>Próxima ocurrencia</td>
</tr>
</tbody>
</table>
<h2>Modo Visual (marcando texto)</h2>
<table border="0">
<tbody>
<tr>
<td>v</td>
<td>Modo visual por carácter</td>
</tr>
<tr>
<td>V</td>
<td>Modo visual por línea</td>
</tr>
<tr>
<td>Ctrl+v</td>
<td>Modo visual por bloque</td>
</tr>
</tbody>
</table>
<h2>Comandos del modo visual</h2>
<table border="0">
<tbody>
<tr>
<td>aw</td>
<td>marcar palabra</td>
</tr>
<tr>
<td>ab</td>
<td>Marcar lo que este en paréntesis</td>
</tr>
<tr>
<td>aB</td>
<td>marcar lo que está en corchetes</td>
</tr>
<tr>
<td>&gt;</td>
<td>Desplazar a la derecha</td>
</tr>
<tr>
<td>&lt;</td>
<td>Desplazar a la izquierda</td>
</tr>
<tr>
<td>y</td>
<td>Copiar el texto marcado</td>
</tr>
<tr>
<td>d</td>
<td>Borrar el texto macado</td>
</tr>
<tr>
<td>~</td>
<td>intercambio de mayúsculas y minúsculas</td>
</tr>
</tbody>
</table>
<h2>Trabajando con varias ventanas</h2>
<table border="0">
<tbody>
<tr>
<td>Ctrl+ws</td>
<td>Dividir ventanas</td>
</tr>
<tr>
<td>Ctrl+ww</td>
<td>cambiarse entre ventanas</td>
</tr>
<tr>
<td>Ctrl+wq</td>
<td>Salir de ventana</td>
</tr>
<tr>
<td>Ctrl+wv</td>
<td>Dividir ventanas verticalmente</td>
</tr>
</tbody>
</table>
<h2>Sintaxis general de vi</h2>
<p>Existe una sintaxis más general para ejecutar comandos en vi:</p>
<blockquote><p>contador operador movimiento</p></blockquote>
<p>Por ejemplo, si quieres borrar tres palabras puedes escribir esto:</p>
<blockquote><p>3dw</p></blockquote>
<p>Puedes omitir el operador y usar esta sintaxis como un comando de movimiento. Por ejemplo, si quieres moverte diez palabras:</p>
<blockquote><p>10w</p></blockquote>
<p>O puedes usarlo para ejecutar comandos varias veces, sin realizar movimientos:</p>
<blockquote><p>5yy</p></blockquote>
<h2>Otras cosas útiles</h2>
<table border="0">
<tbody>
<tr>
<td>:set number</td>
<td>Activar numeración de línea</td>
</tr>
<tr>
<td>:syntax on</td>
<td>Reconocimiento de sintaxis de lenguaje.</td>
</tr>
<tr>
<td>:set ai</td>
<td>Indentación automática</td>
</tr>
<tr>
<td>&gt;&gt;</td>
<td>Agregar un nivel de indentación</td>
</tr>
<tr>
<td>&lt;&lt;</td>
<td>Quitar un nivel de indentación</td>
</tr>
</tbody>
</table>
<h2>Necesito más práctica, por favor!</h2>
<p>Si necesitas más práctica (incluso desde cero) puedes seguir un tutorial con escribir en la consola de texto:</p>
<blockquote><p>vimtutor</p></blockquote>
<h2>Referencias</h2>
<ul>
<li><a href="http://www.worldtimzone.com/res/vi.html" target="_blank">http://www.worldtimzone.com/res/vi.html</a></li>
<li><a href="http://tnerual.eriogerg.free.fr/vimqrc.html" target="_blank"> http://tnerual.eriogerg.free.fr/vimqrc.html</a></li>
<li><a href="http://zarb.org/%7Ezerodogg/vicmd.png" target="_blank">http://zarb.org/%7Ezerodogg/vicmd.png</a></li>
</ul>
<p>Artículos relacionados:<ol>
<li><a href='http://lgallardo.com/2009/04/21/acceso-rapido-en-el-terminalterminals-shortcuts/' rel='bookmark' title='Acceso rápido en el terminal'>Acceso rápido en el terminal</a></li>
<li><a href='http://lgallardo.com/2009/09/02/bloquear-pantalla-en-xfce4/' rel='bookmark' title='Bloquear la pantalla en Xfce4'>Bloquear la pantalla en Xfce4</a></li>
<li><a href='http://lgallardo.com/2009/04/13/comando-find/' rel='bookmark' title='Comando find'>Comando find</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://lgallardo.com/2009/04/30/guia-rapida-de-vivi-quick-reference/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Acceso rápido en el terminal</title>
		<link>http://lgallardo.com/2009/04/21/acceso-rapido-en-el-terminalterminals-shortcuts/</link>
		<comments>http://lgallardo.com/2009/04/21/acceso-rapido-en-el-terminalterminals-shortcuts/#comments</comments>
		<pubDate>Tue, 21 Apr 2009 05:00:56 +0000</pubDate>
		<dc:creator>Luis Gallardo</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[PCL]]></category>

		<guid isPermaLink="false">http://lgallardo.com/?p=641</guid>
		<description><![CDATA[Mis alumnos siempre me preguntan cómo limpio la pantalla sin usar el comando clear cuando hago este truquito al  trabajar en el terminal. Bien, la respuesta es usando este acceso rápido: Ctrl+l. Inmediatamente después me preguntan si hay más accesos rápidos, y siempre respondo &#8220;Si, claro&#8230;pero no los recuerdo. Cuando comencé a usar Linux leí [...]
Artículos relacionados:<ol>
<li><a href='http://lgallardo.com/2009/04/30/guia-rapida-de-vivi-quick-reference/' rel='bookmark' title='Guía rápida de Vi'>Guía rápida de Vi</a></li>
<li><a href='http://lgallardo.com/2009/07/18/accesos-rapidos-en-xfce-4keyboard-shortcuts-in-xfce-4/' rel='bookmark' title='Accesos rápidos en Xfce 4'>Accesos rápidos en Xfce 4</a></li>
<li><a href='http://lgallardo.com/2009/09/02/bloquear-pantalla-en-xfce4/' rel='bookmark' title='Bloquear la pantalla en Xfce4'>Bloquear la pantalla en Xfce4</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a title="Fingerprint Evidence" href="http://static.flickr.com/3556/3326288985_cec1dea6b0.jpg"><img class="alignleft" style="float: left;" src="http://static.flickr.com/3556/3326288985_cec1dea6b0_t.jpg" alt="Fingerprint Evidence" /></a></p>
<p>Mis alumnos siempre me preguntan cómo limpio la pantalla sin usar el comando <em>clear</em> cuando hago este truquito al  trabajar en el terminal. Bien, la respuesta es usando este acceso rápido: Ctrl+l. Inmediatamente después me preguntan si hay más accesos rápidos, y siempre respondo &#8220;Si, claro&#8230;pero no los recuerdo. Cuando comencé a usar Linux leí algunos de ellos, pero solo me acuerdo de el acceso Ctrl+l&#8221;.</p>
<p>Por esto decidí que ya era hora de rechequear estos accesos rápidos y postearlos aquí&#8230;<br />
<span id="more-641"></span></p>
<h2>Accesos del terminal</h2>
<p>La siguiente tabla muestra algunos accesos rápidos. Tenga en cuenta que algunos pueden funcionar o no dependiendo de la consola que use. Por ejemplo, Alt+f es un acceso rápido definido en el terminal de Gnome.</p>
<table style="width: 600px; height: 550px;" border="0">
<thead>
<tr>
<td><strong>Accesor</strong></td>
<td><strong>Descripción</strong></td>
</tr>
</thead>
<tbody>
<tr>
<td>Ctrl+b</td>
<td>Mover un carácter hacia adelante.</td>
</tr>
<tr>
<td>Ctrl+f</td>
<td>Mover un carácter hacia atrás.</td>
</tr>
<tr>
<td>Ctrl+d</td>
<td>Borra el carácter que le sigue al cursor.</td>
</tr>
<tr>
<td>Ctrl+_ or  Ctrl+x Ctrl+u</td>
<td>Deshacer el último comando en edición. Puede deshacer hasta dejar la línea vacía.</td>
</tr>
<tr>
<td>Alt+u</td>
<td>Convertir a mayúsculas</td>
</tr>
<tr>
<td>Alt+l</td>
<td>Convertir a minúsculas</td>
</tr>
<tr>
<td>Altc+c</td>
<td>Convertir a títulos</td>
</tr>
<tr>
<td style="text-align: center;" colspan="2"><em><strong>Comandos de movimiento<br />
</strong></em></td>
</tr>
<tr>
<td>Ctrl+a</td>
<td>Ir al principio de línea.</td>
</tr>
<tr>
<td>Ctrl+e</td>
<td>Ir al final de la línea.</td>
</tr>
<tr>
<td>Alt+f</td>
<td>Moverse una palabra hacia adelante, donde palabra se compone de letras y dígitos.</td>
</tr>
<tr>
<td>Alt+b</td>
<td>Moverse una palabra hacia atrás.</td>
</tr>
<tr>
<td>Ctrl+l</td>
<td>Limpiar la pantalla, reimprimiendo la línea actual al inicio de la pantalla.</td>
</tr>
<tr>
<td style="text-align: center;" colspan="2"><em><strong>Comandos de cortar y pegar<br />
</strong></em></td>
</tr>
<tr>
<td>Ctrl+k</td>
<td>Corta el texto desde la posición actual del cursor hasta el final de la línea, y la copia al buffer. Cortar texto también es conocido como &#8220;killing&#8221;. El texto &#8220;matado&#8221; se guarda en un anillo de kill (<strong>kill-ring</strong>) para posterior uso de pegado (yanking).</td>
</tr>
<tr>
<td>Alt+d</td>
<td>Cortar desde el cursor hasta el final de la palabra actual, o si está entre palabras, hasta el inicio de la próxima palabra. Los límites de la palabras son los mismos usados por Alt+f.</td>
</tr>
<tr>
<td>Alt+DEL</td>
<td>Cortar desde el cursor hasta el inicio del la palabra actual, o si está entre palabras, hasta el inicio de la palabra anterior. Los límites de la palabras son los mismos usados por Alt+b.</td>
</tr>
<tr>
<td>Ctrl+w</td>
<td>Cortar desde el cursor hasta el espacio en blanco anterior. Este es distinto a Alt+DEL porque el límite de la palabra difiere.</td>
</tr>
<tr>
<td>Ctrl+y</td>
<td>Pegar (yank) en la posición actual del cursor el texto más recientemente cortado.</td>
</tr>
<tr>
<td>Alt+y</td>
<td>Rotar el kill-ring (los buffers), y pegar el nuevo tope. Solo se puede hacer esto si el comando anterior es <kbd>Ctrl+y</kbd> o <kbd>Alt-y</kbd>.</td>
</tr>
<tr>
<td style="text-align: center;" colspan="2"><em><strong>Comandos del histórico<br />
</strong></em></td>
</tr>
<tr>
<td>Ctrl+r</td>
<td>Búsqueda regresiva en el histórico para una cadena dada.</td>
</tr>
<tr>
<td>Ctrl+s</td>
<td>Búsqueda hacia adelante a través del histórico (puede que no funcione).</td>
</tr>
<tr>
<td>Alt+&lt;</td>
<td>Ir a la primera línea del histórico.</td>
</tr>
<tr>
<td>Alt+&gt;</td>
<td>Ir a la última línea del histórico, es decir, la línea que se está editando actualmente.</td>
</tr>
</tbody>
</table>
<h2>Argumentos para los accesos rápidos</h2>
<p>Se pueden pasar argumentos numéricos al terminal de comandos. Por ejemplo, para darle al comando Ctrl+d un argumento de 10, puede escribir <samp>`Alt+1 0 Ctrl+d&#8217;</samp> lo cual eliminará los próximos diez caracteres en la línea de entrada.</p>
<h2>Accesos rápidos personalizados</h2>
<p>Puede ir más allá y definir sus propios accesos rápidos en bash. Para hacer esto solo agregue el acceso rápido en su archivo <em>~/.inputrc</em> (o <em>/etc/inputrc</em> para todos los usuarios). Por ejemplo, la función de búsqueda hacia adelante en el histórico en mi PC no funcionaba así que tuve que poner esta línea:</p>
<p>&#8220;C-h&#8221;:history-search-forward</p>
<p>Donde &#8220;C-h&#8221; significa Ctrl+h. Puede incluso definir accesos rápidos a comandos como &#8216;<em>ps aux</em>&#8216;  colocando esta línea:</p>
<p>&#8220;C-o&#8221;:&#8217;ps axun&#8217;</p>
<p>Para que los cambios tengan efectos el archivo inputrc debe ser releído usando este acceso Ctr+x Ctrl+r.</p>
<h2>Referencias</h2>
<ul>
<li><a href="http://unixhelp.ed.ac.uk/CGI/man-cgi?readline+3" target="_blank">http://unixhelp.ed.ac.uk/CGI/man-cgi?readline+3</a></li>
<li><a href="http://www.linuxquestions.org/questions/linux-general-1/any-way-to-create-bash-short-cuts-like-ctrll-for-clear-and-ctrld-for-exit-554420/" target="_blank">http://www.linuxquestions.org/questions/linux-general-1/any-way-to-create-bash-short-cuts-like-ctrll-for-clear-and-ctrld-for-exit-554420/</a></li>
<li><a href="http://developer.apple.com/documentation/developertools/gdb/gdb/gdb_28.html" target="_blank">http://developer.apple.com/documentation/developertools/gdb/gdb/gdb_28.html</a></li>
</ul>
<p>Artículos relacionados:<ol>
<li><a href='http://lgallardo.com/2009/04/30/guia-rapida-de-vivi-quick-reference/' rel='bookmark' title='Guía rápida de Vi'>Guía rápida de Vi</a></li>
<li><a href='http://lgallardo.com/2009/07/18/accesos-rapidos-en-xfce-4keyboard-shortcuts-in-xfce-4/' rel='bookmark' title='Accesos rápidos en Xfce 4'>Accesos rápidos en Xfce 4</a></li>
<li><a href='http://lgallardo.com/2009/09/02/bloquear-pantalla-en-xfce4/' rel='bookmark' title='Bloquear la pantalla en Xfce4'>Bloquear la pantalla en Xfce4</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://lgallardo.com/2009/04/21/acceso-rapido-en-el-terminalterminals-shortcuts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Comando find</title>
		<link>http://lgallardo.com/2009/04/13/comando-find/</link>
		<comments>http://lgallardo.com/2009/04/13/comando-find/#comments</comments>
		<pubDate>Mon, 13 Apr 2009 05:00:55 +0000</pubDate>
		<dc:creator>Luis Gallardo</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[PCL]]></category>

		<guid isPermaLink="false">http://lgallardo.com/?p=520</guid>
		<description><![CDATA[En Linux podemos hacer búsquedas de archivos de varias manera. Por ejemplo, desde Nautilus (el navegador de archivos de Gnome) podemos buscar en el directorio actual todos los archivos mp3&#8242;s con esta expresión &#8216;*.mp3&#8242;. Pero cuando necesitamos hacer búsquedas más completas,  por ejemplo todos los archivos mp3s mayores a 5 MB, Nautilus no es lo [...]
Artículos relacionados:<ol>
<li><a href='http://lgallardo.com/2009/05/21/comando-netstatthe-netstat-command/' rel='bookmark' title='Comando netstat'>Comando netstat</a></li>
<li><a href='http://lgallardo.com/2009/05/11/interpretando-el-comando-freeunderstanding-the-free-command/' rel='bookmark' title='Interpretando el comando free'>Interpretando el comando free</a></li>
<li><a href='http://lgallardo.com/2009/04/08/montando-sistemas-de-archivos-en-linux/' rel='bookmark' title='Montando sistemas de archivos en Linux'>Montando sistemas de archivos en Linux</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a title="lupa.jpg" href="http://static.flickr.com/3603/3428959358_a14003616b.jpg"><img class="alignleft" style="float: left;" src="http://static.flickr.com/3603/3428959358_a14003616b_t.jpg" alt="lupa.jpg" /></a></p>
<p>En Linux podemos hacer búsquedas de archivos de varias manera. Por ejemplo, desde Nautilus (el navegador de archivos de Gnome) podemos buscar en el directorio actual todos los archivos mp3&#8242;s con esta expresión &#8216;*.mp3&#8242;. Pero cuando necesitamos hacer búsquedas más completas,  por ejemplo todos los archivos mp3s mayores a 5 MB, Nautilus no es lo más adecuado. Para estos casos tendremos que usar un comando de consola muy versátil y poderoso: <em>find</em></p>
<p><span id="more-520"></span></p>
<h2>Comando find</h2>
<p>El comando find permite realizar búsquedas de archivos y directorios en el sistema según una expresión dada. El formato básico es</p>
<blockquote><p>find ruta expresión</p></blockquote>
<p>Donde expresión está compuesto de opciones (modificación del comportamiento de find en general), pruebas (cosas que devuelven verdadero o falso) y acciones (que ejecuta procesamiento sobre los archivos y directorios.</p>
<p>Veamos algunas opciones, pruebas y acciones&#8230;</p>
<h2>Opciones</h2>
<p><!-- 		@page { size: 8.5in 11in; margin: 0.79in } 		TD P { margin-bottom: 0in } 		P { margin-bottom: 0.08in } --></p>
<table style="width: 100%;" border="1" cellspacing="0" cellpadding="4" bordercolor="#000000">
<col width="45"></col>
<col width="42"></col>
<col width="169"></col>
<tbody>
<tr valign="top">
<td width="17%">-maxdepth</td>
<td width="16%">n</td>
<td width="66%">Desciende hasta n niveles.</td>
</tr>
<tr valign="top">
<td width="17%">-mount</td>
<td width="16%"></td>
<td width="66%">No realizar búsquedas en otros sistemas de archivos.</td>
</tr>
</tbody>
</table>
<h2>Pruebas (Tests)</h2>
<p><!-- 		@page { size: 8.5in 11in; margin: 0.79in } 		TD P { margin-bottom: 0in } 		P { margin-bottom: 0.08in } --></p>
<table style="width: 100%;" border="1" cellspacing="0" cellpadding="4" bordercolor="#000000">
<col width="45"></col>
<col width="42"></col>
<col width="169"></col>
<tbody>
<tr valign="top">
<td width="17%">n</td>
<td width="16%"></td>
<td width="66%">Exactamente n</td>
</tr>
<tr valign="top">
<td width="17%">+n</td>
<td width="16%"></td>
<td width="66%">Mayor que n</td>
</tr>
<tr valign="top">
<td width="17%">-n</td>
<td width="16%"></td>
<td width="66%">Menor que n</td>
</tr>
<tr valign="top">
<td width="17%">-amin</td>
<td width="16%">n</td>
<td width="66%">Archivos que fueron accedidos hace n minutos</td>
</tr>
<tr valign="top">
<td width="17%">-anewer</td>
<td width="16%">archivo</td>
<td width="66%">Archivos que fueron accedidos mas recientemente que la última 			modificación de archivo</td>
</tr>
<tr valign="top">
<td width="17%">-atime</td>
<td width="16%">n</td>
<td width="66%">Archivos que fueron accedidos hace n*24  horas</td>
</tr>
<tr valign="top">
<td width="17%">-cmin</td>
<td width="16%">n</td>
<td width="66%">Archivos cuyo estado hayan sido modificado hace n minutos</td>
</tr>
<tr valign="top">
<td width="17%">-cnewer</td>
<td width="16%">archivo</td>
<td width="66%">Archivos cuyo estado hayan sido modificado mas recientemente 			que la última modificación de archivo</td>
</tr>
<tr valign="top">
<td width="17%">-ctime</td>
<td width="16%">n</td>
<td width="66%">Archivos cuyo estado hayan sido modificado hace n*24  horas</td>
</tr>
<tr valign="top">
<td width="17%">-mmin</td>
<td width="16%">n</td>
<td width="66%">Archivos que fueron modificados hace n minutos</td>
</tr>
<tr valign="top">
<td width="17%">-newer</td>
<td width="16%">archivo</td>
<td width="66%">Archivos que fueron modificados mas recientemente que la última 			modificación de archivo</td>
</tr>
<tr valign="top">
<td width="17%">-mtime</td>
<td width="16%">n</td>
<td width="66%">Archivos que fueron modificados hace n*24  horas</td>
</tr>
<tr valign="top">
<td width="17%">-empty</td>
<td width="16%"></td>
<td width="66%">Archivos o directorios vacíos</td>
</tr>
<tr valign="top">
<td width="17%">-executables</td>
<td width="16%"></td>
<td width="66%">Archivos ejecutables y directorios navegables</td>
</tr>
<tr valign="top">
<td width="17%">-readable</td>
<td width="16%"></td>
<td width="66%">Archivos que se pueden leer</td>
</tr>
<tr valign="top">
<td width="17%">-fstype</td>
<td width="16%">tipo</td>
<td width="66%">Archivos en sistemas de archivos tipo (ejemplo vfat)</td>
</tr>
<tr valign="top">
<td width="17%">-uid</td>
<td width="16%">n</td>
<td width="66%">Archivos cuyo identificador de usuario  es n</td>
</tr>
<tr valign="top">
<td width="17%">-user</td>
<td width="16%">usuario</td>
<td width="66%">Archivos pertenecientes a usuario</td>
</tr>
<tr valign="top">
<td width="17%">-gid</td>
<td width="16%">n</td>
<td width="66%">Archivos cuyo identificador de grupo es n</td>
</tr>
<tr valign="top">
<td width="17%">-group</td>
<td width="16%">grupo</td>
<td width="66%">Archivos pertenecientes a grupo</td>
</tr>
<tr valign="top">
<td width="17%">-name</td>
<td width="16%">patrón</td>
<td width="66%">Archivos cuyo nombre coincida con el patrón dado. El patrón 			acepta los metacaracteres  (‘*’, ‘?’, y ‘[]’)</td>
</tr>
<tr valign="top">
<td width="17%">-nogroup</td>
<td width="16%"></td>
<td width="66%">Archivos que no le pertenezcan a ningún grupo</td>
</tr>
<tr valign="top">
<td width="17%">-nouser</td>
<td width="16%"></td>
<td width="66%">Archivos que no le pertenezcan a ningún usuario</td>
</tr>
<tr valign="top">
<td width="17%">-perm</td>
<td width="16%">modo</td>
<td width="66%">Los permisos del archivo son exactamente a modo. Se puede usar 			la superfetación octal o la de letras (-perm  g=w)</td>
</tr>
<tr valign="top">
<td width="17%">-perm</td>
<td width="16%">-modo</td>
<td width="66%">Los permisos del archivo contienen a modo.</td>
</tr>
<tr valign="top">
<td width="17%">-perm</td>
<td width="16%">/modo</td>
<td width="66%">Cualquiera de los permisos en modo está activado en el archivo</td>
</tr>
<tr valign="top">
<td width="17%">-size</td>
<td width="16%">n[cwbkMG]</td>
<td width="66%">Archivos de tamaño n.</td>
</tr>
<tr valign="top">
<td width="17%">-type</td>
<td width="16%">c</td>
<td width="66%">Archivos tipo c (bloque, carácter, directorio, enlace 			simbólico, regular, etc.</td>
</tr>
</tbody>
</table>
<h2>Acciones</h2>
<table style="width: 100%;" border="1" cellspacing="0" cellpadding="4" bordercolor="#000000">
<col width="45"></col>
<col width="42"></col>
<col width="169"></col>
<tbody>
<tr valign="top">
<td width="17%">-delete</td>
<td width="16%"></td>
<td width="66%">Eliminar archivos</td>
</tr>
<tr valign="top">
<td width="17%">-exec</td>
<td width="16%">comando ;</td>
<td width="66%">Ejecutar comando</td>
</tr>
<tr valign="top">
<td width="17%">-exec</td>
<td width="16%">comando &#8216;{}&#8217; \;</td>
<td width="66%">Ejecutar comando sobre los archivos especificados</td>
</tr>
</tbody>
</table>
<h2>Ejemplos</h2>
<table style="width: 100%;" border="0" cellspacing="0" cellpadding="4">
<col width="128"></col>
<col width="128"></col>
<tbody>
<tr valign="top">
<td width="50%">find /home -name &#8216;*.bash*&#8217;</td>
<td width="50%">Cualquier archivo que contenga .bash en su nombre</td>
</tr>
<tr valign="top">
<td width="50%">find $HOME -mtime 0</td>
<td width="50%">Archivos en su directorio home que hayan sido modificados las 			últimas  24horas</td>
</tr>
<tr valign="top">
<td width="50%">find -perm 644</td>
<td width="50%">Exactamente 644</td>
</tr>
<tr valign="top">
<td width="50%">find -perm -644</td>
<td width="50%">Trae 644 y 777, por ejemplo</td>
</tr>
<tr valign="top">
<td width="50%">find -perm /222</td>
<td width="50%">Cualquier archivo con el bit de escritura activo</td>
</tr>
<tr valign="top">
<td width="50%">find -perm /u=w</td>
<td width="50%">Archivos con el bit de escritura activo para el usuario</td>
</tr>
<tr valign="top">
<td width="50%">find /home -nouser -exec rm -r &#8216;{ }&#8217; \;</td>
<td width="50%">Borrar los archivos del /home que no tengan un usuario definido 			en el /etc/passwd</td>
</tr>
<tr valign="top">
<td width="50%">find /home  -size +1G</td>
<td width="50%">Archivos mayores a 1 GB en /home</td>
</tr>
<tr valign="top">
<td width="50%">find / -size +1G -user lgallard</td>
<td width="50%">Archivos mayores a 1 GB en el sistema que le pertenezcan al 			usuario lgallard</td>
</tr>
</tbody>
</table>
<h2>Referencias</h2>
<ul>
<li><a href="http://en.wikipedia.org/wiki/Find" target="_blank">http://en.wikipedia.org/wiki/Find</a></li>
<li><a href="http://www.gnome.org/~newren/tutorials/developing-with-gnome/html/re02.html" target="_blank">http://www.gnome.org/~newren/tutorials/developing-with-gnome/html/re02.html</a></li>
</ul>
<p>Artículos relacionados:<ol>
<li><a href='http://lgallardo.com/2009/05/21/comando-netstatthe-netstat-command/' rel='bookmark' title='Comando netstat'>Comando netstat</a></li>
<li><a href='http://lgallardo.com/2009/05/11/interpretando-el-comando-freeunderstanding-the-free-command/' rel='bookmark' title='Interpretando el comando free'>Interpretando el comando free</a></li>
<li><a href='http://lgallardo.com/2009/04/08/montando-sistemas-de-archivos-en-linux/' rel='bookmark' title='Montando sistemas de archivos en Linux'>Montando sistemas de archivos en Linux</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://lgallardo.com/2009/04/13/comando-find/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

