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.
Showing posts with label Linux. Show all posts
Showing posts with label Linux. Show all posts
Sunday, June 26, 2011
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
Luego en /etc/fstab tenemos las siguientes entradas
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:
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:
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:
Espero que les resulte util como a mi ;-)
Saludos !
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:
Reiniciamos ssh con:
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:
Saludos !
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:
o sino para ramfs, de la siguiente forma:
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:
Eso es todo amigos !
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):
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:
Y para mi asombro (gracias Carlitos), vim tiene tabs. Para usar este modo debemos invocar vim de la siguiente manera:
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 !
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:
por simplemente
Además en los shares, lo mismo:
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 :-/
[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 :-/
Subscribe to:
Posts (Atom)
Followers
About me
- coke
- Santa Fe, Argentina
- Programador Web, PHP, MySQL, JQuery, Administrador Linux. LAMP, Lighttpd, Nginx.