Showing posts with label Linux. Show all posts
Showing posts with label Linux. Show all posts

Sunday, June 26, 2011

tmux (a terminal multiplexer similar to screen)

This is a list of the most useful keys/commands (IMHO) for tmux, a terminal multiplexer like the old screen.

Global config file: /etc/tmux.conf
Per-user config file: ~/.tmux.conf

Configuration options:

set-option -g prefix Ctrl-a # this will bind the Ctrl-a combination to the prefix key
set-option -g prefix ` # this will bind the ` key to the prefix key
setw -g monitor-activity on # mark visually the window that had activity on the status bar
set -g visual-activity on # pop a message in the status bar for the window that had activity

The default prefix, or the key that precedes the command is Ctrl-b

prefix c Create new window
prefix d Detach current client
prefix l Move to previously selected window
prefix n Move to the next window
prefix p Move to the previous window
prefix & Kill the current window
prefix , Rename the current window
prefix % Split the current window into two vertical panes
prefix q Show pane numbers (quickly press the number shown and you'll go to that pane)
prefix o Switch to the next pane
prefix ? List all keybindings

Window management:

prefix n Go to the next window
prefix p Go to the previous window
prefix l Go to the previous selected window
prefix w (List all windows / window numbers)
prefix window_number Go to the specified window number
prefix f Type the window name and tmux will try to find and switch to it
prefix { Move current pane to the left
prefix } Move current pane to the right
prefix space Rearrange windows (even-horizontal, even-vertical, main-horizontal, main-vertical and tiled)
prefix arrow_keys You can use the prefix key plus the up/right/down/left arrows to switch panes
prefix [ Enters copy mode so you can scroll up/down through that pane's terminal history (with Shift + PgUp/PgDown)

Command mode:

You can go into command mode by typing

prefix :

Inside command mode you can type whatever command tmux supports. One important tip here is that the command mode has a history function, so while inside you can use the up and down arrows to go through the history of commands you entered

A couple interesting commands are

rename-window name Rename current window
rename-session name Rename current session
break-pane Make the current pane into its own window
switch -t session_name Switch to the session named session_name
ls List sessions

After you have your client detached:

tmux new -s session_name Create a new session named session_name
tmux attach -t session_name Attach the client to the session named session_name (tip: you can type only a couple chars of the session name, tmux is intelligent enough to find out)
tmux ls This is the same as tmux list-sessions

I'm using squeeze which currently has the 1.3-2+squeeze1 version that has a little problem to properly draw the pane divisions on PuTTY so I installed a greater version from the squeeze-backports which is 1.4-6~bpo60+1 that correct this issue.

Extracted from the tmux changelog:

CHANGES FROM 1.3 TO 1.4, 27 December 2010

* Use UTF-8 line drawing characters on UTF-8 terminals, thus fixing some terminals (eg putty) which disable the vt100 ACS mode switching sequences in UTF-8 mode. On terminals without ACS, use ASCII equivalents.

Thursday, December 17, 2009

Particiones y labels en ext3, swap y reiserfs

Se pueden crear y montar particiones con "labels", y tiene la ventaja de que si el nombre del dispositivo cambia, no nos interesa porque el kernel sabe que label corresponde a cada particion. Esto es MUY util en servidores ya que de cambiar el nombre del dispositivo por cualquier motivo, evitamos quedarnos con un sistema sin bootear.
Supongamos claro que /dev/hda1 es una swap, /dev/hda2 es el root del sistema de archivos con ext3 y /dev/hdb1 es una particion reiser

tune2fs -L ROOT /dev/hda2
swapoff /dev/hda1
mkswap -L SWAP /dev/hda1
swapon /dev/hda1
umount /dev/hdb1
reiserfstune -l DATA /dev/hdb1

Luego en /etc/fstab tenemos las siguientes entradas

LABEL=ROOT / ext3 noatime,errors=remount-ro 0 1
LABEL=SWAP none swap sw 0 0
LABEL=DATA /www reiserfs defaults 0 0

Monday, November 24, 2008

Conociendo fuser (que proceso usa un socket o un sistema de archivos)

fuser es una utilidad que sirve para averiguar que proceso esta usando un archivo, socket o sistema de archivos.

El otro dia necesite saber que proceso estaba abriendo el puerto 113, entonces ahi vino fuser al rescate:

fuser -n tcp 113

lo cual me devolvio

113/tcp: 2786

El numero 2786 que vemos en la salida indica (en mi caso) que el proceso con numero 2786 esta abriendo el puerto 113 tcp. Por supuesto se puede cambiar el "space" y en vez de usar tcp, usar udp si es necesario.

Otro uso muy util es para averiguar que procesos estan usando un filesystem, y se usa de la siguiente manera:

# fuser -m -u /dev/sda3
/dev/sda3: 1rce(root) 2rc(root) 3rc(root) 4rc(root) 5rc(root) 6rc(root) 9rc(root) 10rc(root) 103rc(root) 143rc(root) 144rc(root) 145rc(root) 146rc(root) 595rc(root)

y la lista continua pero la corto por una cuestion de simplicidad ...

Lo que podemos ver en la salida del comando es el numero de proceso seguido por algunas letras y entre parentesis el propietario o usuario del proceso. Las letras que se ven tienen el siguiente significado:

c = current directory / directorio actual
e = executable being run / ejecutable siendo corrido
f = open file / archivo abierto
F = open file for writing / archivo abierto para escritura
r = root directory / directorio de root
m = mmap'ed file or shared library / archivo de mmap o libreria compartida

Espero que les resulte util como a mi ;-)

Saludos !

Thursday, November 20, 2008

TIP: Conectar con SSH o SFTP en otro puerto que no sea el 22

Supongamos que deseamos correr el daemon sshd en otro puerto que no sea el default (o sea, el 22) para evitar la mayoria de los escaneos por bots, e intentos de conexion por diccionario, u otro motivo si vamos al caso.

Modificamos el /etc/ssh/sshd_config en la linea de Port = 22 y le asignamos el numero de puerto que deseemos:

Port = 5000

Reiniciamos ssh con:

/etc/init.d/ssh restart

Y luego desde algun cliente podemos conectar, suponiendo que la IP de esa maquina es 192.168.1.1 al puerto 5000 de la siguiente forma:

sftp "-oPort=5000" 192.168.1.1
ssh "-oPort=5000" 192.168.1.1

Saludos !

Uso de la RAM para guardar datos con RAMFS o TMPFS

Hace algun tiempo se me ocurrio la idea de que seria util almacenar ciertos datos en la RAM debido a su velocidad de escritura, asi que me puse a investigar y encontre dos sistemas para hacerlo, uno RAMFS y el otro TMPFS.

Como montar ambos ? aqui va para los impacientes nuevamente:

mkdir -p /mnt/tmp
mount -t tmpfs -o size=10m tmpfs /mnt/tmp

o sino para ramfs, de la siguiente forma:

mkdir -p /mnt/ram
mount -t ramfs -o size=10m ramfs /mnt/ram

Con ambos comandos disponemos de 10 MB en RAM para escribir, pero con las siguientes diferencias:

- RAMFS crece dinamicamente, asi que si tenemos 1 GB de RAM y le seguimos tirando datos, ocupara toda la memoria e incluso ocupara SWAP (peligroso para mi gusto).

- TMPFS no crece dinamicamente, asi que si lo usamos como en el ejemplo, nunca nos iremos del limite de 10 MB, pero logicamente obtendremos los mismos errores al quedarnos sin espacio que con una particion llena en disco. No usa SWAP, por ende es el mas seguro de los dos.

Logicamente, podemos montar una particion con cualquiera de los dos sistemas al inicio en /etc/fstab como cualquier otro sistema de archivos.

Y por ultimo, una obviedad: al ser ambos sistemas de archivos alojados en la RAM, al desmontarlos o al reiniciar el equipo perdemos los datos, asi que hay que copiar los datos a algun otro lugar antes de desmontar o reiniciar.

El uso personal que le doy a todo esto es para almacenar las sesiones de php en un directorio especial, en el php.ini se puede cambiar con la directiva:

session.save_path = "/tmp/ramdisk"

Eso es todo amigos !

Editor Vim (explicación sencilla)

Increíblemente, después de años de usar linux para distintas cosas, recién ahora me pongo a ver como usar más o menos el famoso editor Vim.

El editor consta de 2 modos: Inserción y Comando

Para entrar en el modo Inserción basta con presionar la tecla "Insert" en nuestro teclado, y abajo a la izquierda vim nos avisa con "-- INSERT --" o si presionamos dos veces "Insert" con "-- REPLACE --" (obviamente con este último modo reemplazamos el texto).

Para salir del modo Inserción presionamos la tecla "Esc".

Cabe aclarar que vim se inicia en modo comando.

Los comandos que aprendi hasta el momento (los que me sirven a mi por lo menos) son los siguientes (nótese la diferencia entre mayúsculas y minúsculas):

h: mueve el cursor hacia la izquierda
j: mueve el cursor hacia abajo
k: mueve el cursor hacia arriba
l: mueve el cursor hacia la derecha

$: mueve el cursor al final de la linea
0: mueve el cursor al principio de la linea

v: marca una selección de texto
CTRL+v: marca una selección de texto libre (modo columna, similar a UltraEdit)
y: copia el texto seleccionado
x: corta el texto seleccionado
p: pega el texto después del cursor
P: pega el texto antes del cursor

u: deshace los cambios
U: deshace los cambios pero solo en la línea actual
CTRL+r: rehace los cambios

Para borrar un número de lineas, se puede presionar "d" mas el nro de lineas que deseamos borrar (ej: 3) y luego "d" nuevamente.

Tambien en el modo comando, al ingresar "dos puntos" o ":" podemos tipear diversos comandos, como pueden ser:

:q (salir)
:q! (salir sin guardar cambios)
:w (guardar archivo)
:wq (salir guardando el archivo)
:e nombre_archivo (abrir otro archivo en la misma consola)
:bn (proximo buffer/archivo, usado para moverse entre archivos si tenemos mas de uno abierto)
:bp (igual que :bn pero para ir al buffer previo)

Y para mi asombro (gracias Carlitos), vim tiene tabs. Para usar este modo debemos invocar vim de la siguiente manera:

vim -p archivo1.txt archivo2.txt archivo3.txt

Luego nos movemos entre tabs con los comandos :tabn y :tabp (para next/siguiente o previous/anterior respectivamente)

Tambien una vez dentro de vim se puede usar el comando :tabnew nombrearchivo para abrir un nuevo tab con otro archivo.

Por supuesto existen muchos mas comandos y tips para vim, estos son simplemente los comandos que permiten un uso básico (y que como ya dije, me sirven a mi).


Espero que les sea de utilidad

Saludos !

Problema con Samba y Windows Vista (NTLMv2)

Sin demasiada introducción (los impacientes, contentos), hay que cambiar estas líneas por las siguientes:

[global]
valid users = %S

por simplemente

[global]
users = %S

Además en los shares, lo mismo:

[www]
comment = sites
path = /www
users = %S # esta linea estaba con "valid users" antes
public = no
writable = yes
printable = no
create mask = 0700


Además es necesario ajustar en las máquinas Vista lo siguiente:

1) Abrir la consola "Local Security Policies" ejecutando el comando "secpol.msc" (solo disponibles en la version Bussiness y Ultimate).
2) Ir a Local Policies –> Security Options –> Network Security: LAN Manager authentication level.
3) Cambiar el valor de "NTLMv2 responses only" a "LM and NTLM – use NTLMV2 session security if negotiated".

Si tienen la version Home de Vista (que no tiene la consola secpol.msc como dije mas arriba) se puede cambiar el valor directamente desde el registro ejecutando el comando "regedit" y ajustando el siguiente valor de 3 a 1:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\LMCompatibilityLevel

Como siempre, mucho cuidado al editar el registro a mano.

Esta configuración me permitió tener un mix de clientes con XP y Vista y seguir usando el sistema de autenticación con usuarios simples


PD: Disculpen, pero tengo Windows en ingles :-/

Followers

About me

Santa Fe, Argentina
Programador Web, PHP, MySQL, JQuery, Administrador Linux. LAMP, Lighttpd, Nginx.