Ir al contenido

Entradas etiquetadas como ‘consola’

20
dic

Memoria consumida en Linux

Muchas veces puede ser necesario encontrar la memoria que un proceso o un usuario consumen en el sistema. Lograr esto es bastante sencillo aunque implica hacer algunas cuentas. Por ello es posible simplificar la tarea utilizando algún script que la haga por nosotros. A continuación puede verse primero cómo calcular la memoria física consumida por el proceso Apache y luego por el usuario www-data. La unidad final está dada en MB.

root@server:~# ps -C apache2 -o rss --no-headers | (tr '\n' +; echo 0) | bc | awk '{print $0 "/1024"}' | bc
267
root@server:~# ps -U www-data -o rss --no-headers | (tr '\n' +; echo 0) | bc | awk '{print $0 "/1024"}' | bc
146

Existe otra forma también de chequearlo que es bastante más sencilla y es utilizando la herramienta smem. El problema es que dicha herramienta es compatible sólo con los kernels 2.6.27 o más nuevos. A continuación se puede ver la consulta de cuánto consume el proceso apache2. En este caso, smem mostrará todos los procesos y, al final, la suma de los consumos (debido a la opción -t suministrada). La opción que nos interesa en este caso es RSS, que se ve que da un total de 16720 bytes. Es para tener en cuenta que smem está sumando a lo consumido por el proceso que se le pidió la propia ejecución del comando; esto debería restarse del total para tener una valor más preciso. Daría finalmente 12020 bytes.

root@server:/home/leandro# smem -t -P "apache2"
  PID User     Command                         Swap      USS      PSS      RSS
10171 root     /usr/sbin/apache2 -k start       348      144      248     1328
 7173 root     /usr/sbin/apache2 -k start       360      172      276     1476
 7171 root     /usr/sbin/apache2 -k start       364      200      302     1516
 7174 root     /usr/sbin/apache2 -k start       364      200      302     1516
 7175 root     /usr/sbin/apache2 -k start       364      200      302     1516
 7731 root     /usr/sbin/apache2 -k start       364      200      302     1516
 7172 root     /usr/sbin/apache2 -k start       352      204      306     1520
 1816 root     /usr/sbin/apache2 -k start       364      180      319     1632
18189 root     /usr/bin/python /usr/bin/sm        0     2944     3119     4700
-------------------------------------------------------------------------------
  183 1                                        2880     4444     5476    16720

Finalmente, debajo se hace la misma consulta pero esta vez preguntando lo consumido por el usuario leandro.

root@server:/home/leandro# smem -t -U "leandro"
  PID User     Command                         Swap      USS      PSS      RSS
17381 leandro  -bash                             36     5312     5459     6880
-------------------------------------------------------------------------------
  183 1                                          36     5312     5459     6880
11
nov

Crear una ISO a partir de un CD

Linux tiene varias maravillas que lo hacen realmente simple y potente (sí, simple!). Una de ellas es el comando dd, que permite hacer varias cosas, entre las que puede considerarse la de crear una ISO. Esto se hace de manera muy sencilla:

dd if=/dev/cdrom of=nombre_imagen.iso

En el ejemplo anterior se toma como origen el dispositivo de CD (que puede variar según la distribución) y se genera el archivo nombre_imagen.iso. Que hay utilidades gráficas más “amigables” no lo niego, pero hay que reconocer que dd es la más ampliamente distribuida y nadie puede decir que no es capaz de ejecutar el comando anterior.

11
nov

Watch: repetir periódicamente la ejecución de un programa

Muchas veces nos encontramos en la necesidad de ejecutar repetidas veces un comando, siendo la forma más común de hacerlo la de escribir una y otra vez el mismo comando. Por suerte, existe en Linux una utilidad que se llama watch que hace precisamente esa tarea por nosotros. La forma de uso es extremadamente simple:

watch comando

Por ejemplo, si estamos copiando archivos desde otro lugar y deseamos hacer un ls de un directorio para controlar el ritmo de la copia se podría ejecutar:

watch ls

Que dará como salida:

Every 2.0s: ls                           Thu Nov 11 16:55:00 2010

netstorming

-----------------------------------------------------------------

Every 2.0s: ls                           Thu Nov 11 16:55:04 2010

netstorming
mikroways

Sin dudas, hay situaciones donde el watch es mucho más útil, espero entiendan que lo anterior fue sólo a modo de ejemplo.

7
may

Montar filesystem remoto con SSH

Ya se habrá entendido que SSH es más que un simple protocolo para administración remota. De hecho, nos brinda una cantidad enorme de funciones muy útiles. Hace unos días veíamos cómo redireccionar puertos con SSH; un tiempo atrás habíamos visto también cómo ejecutar aplicaciones gráficas remotas.  Esta vez veremos cómo montar un sistema de archivos remoto utilizando sólo SSH. Para ello necesitamos, lógicamente, acceso por SSH a la máquina que tiene el filesystem que deseamos montar. Además, en la máquina de destino tendremos que instalar la utilidad que nos permitirá hacer esto: sshfs. A continuación muestro un ejemplo utilizando Fedora:

[root@megan leandro]# yum install fuse-sshfs.i686

Una vez instalado sshfs su uso es muy trivial. Simplemente especificamos el nombre de usuario@IP_maquina:/directorio/a/montar /punto/de/montaje.

[leandro@megan ~]# sshfs leandro@192.168.1.2:/Users/leandro/datos/ /mnt/scarlet/
Password:
[leandro@megan ~]$ mount
192.168.1.2:/Users/leandro/datos on /mnt/scarlet type fuse.sshfs (rw,nosuid,nodev,max_read=65536,user=leandro)

En el ejemplo anterior se puede ver cómo se ha montado el sistema de archivos. Importante y a destacar es que podemos montar el mismo sin ser root. De hecho, conviene hacerlo con el usuario sin privilegios que utilicemos dado que de esa manera podremos leer y escribir sin problemas.

5
may

Redirección de puertos con SSH

Supongamos que tenemos la siguiente topología:

  • RTB tiene una redirección del puerto 22 hacia la PCB. Esto significa que todas las conexiones que se hagan al puerto TCP 22 con la IP del router serán enviadas a la PCB.
  • Tanto RTA como RTB están en lugares remotos en Internet. Ambos hacen NAT de sus redes internas.
  • PCB tiene un servidor SSH.
  • PCB puede alcanzar al servidor web porque está en la misma LAN.
  • SRV es un servidor web.

En este caso, desde la PCA deseamos acceder al servidor web SRV. Con lo único que contamos es con el acceso vía SSH a la PCB, dado que el servidor SRV tiene una IP privada y ningún puerto redireccionado. En este caso SSH nos da la posibilidad de redireccionar el puerto 80 del servidor por medio de la PCB, permitiéndonos acceder efectivamente al mismo. Esto se logra por medio de SSH haciendo un redirección local de puertos, de la siguiente manera:

ssh -L 10080:192.168.2.3:80 leandro@200.200.200.200

Para entender bien lo que ocurre sigamos los pasos:

  • La PCB puede acceder normalmente al servidor web en SRV, sin ninguna restricción.
  • La PCA tiene acceso SSH a la PCB.
  • La PCA forma un túnel hacia el SRV utilizando la PCB.
  • Luego de la redirección, la PCA puede acceder localmente al puerto 10080 que en realidad es uno de los extremos del túnel. El otro extremo es el puerto 80 en SRV.

Para hacer uso de la redirección se abre un navegador de Internet en PCA y se escribe http://127.0.0.1:10080, lo que hará que las peticiones lleguen hasta SRV, como si estuviéramos en esa red LAN.