Posts filed under ‘Linux’

Reiniciar linux si tod lo demás es imposible

Si  ctrl + alt + Backspace o la combinación de teclas de función no funciona … 

  1. Pulsar Alt y SysRq (Imprimir Pantalla)  y  a la vez teclearREISUB.
  2. El ordenador se reiniciará
Anuncios

septiembre 20, 2007 at 6:36 pm Deja un comentario

Montar un sistema de archivo remoto usando sshfs

Traducción libre del artículo http://www.debianadmin.com/mount-a-remote-file-system-through-ssh-using-sshfs.html

Introducción

Sshs es un sistema de archivos cliente basado en ssh.
Por lo tanto necesitaremos un servidor ejecutando un servidor ssh y un cliente con sshfs, en donde se montará el sistema de archivos mediante el uso de ssh.

Características

  • Basado en FUSE ( framework de sistema de ficheros para linux que permite entre otras cosas encriptar sistemas de ficheros, comprimir etc)
  • Multi hilo
  • Permite lecturas de hast 64k
  • Cacheo del contenido de los directorios
  • Funciona en el espacio de usuario por lo que no es necesario privilegios especiales para hacerlo funcionar.

Instalación en Debian

#apt-get install fuse-utils sshfs
# modprobe fuse

Uso

$ sshfs usuario@maquina: punto_de_montaje

Esto montará el directorio home del usuario en el directorio local punto_de_montaje. El directorio deberá tener los permisos adecuados. Si quisiéramos montar otro directorio deberíamos hacerlo  

Ejemplo

  1. Crear el punto de montaje:
    #mkdir /mnt/remote
  2. Cambiar los permisos:
    #chown [nombre-usuario]:[nombre-grupo] /mnt/remote/
  3. Añadir el usuario al grupo fuse
    #adduser [usuario]  fuse
  4. Iniciar sesión con el usuario y monta el sistema de ficheros remoto
    #sshfs usuario-remoto@servidor-remoto:/remoto/directorio /mnt/remote/

Para desmontar el directorio

fusermount -u punto_de_montaje

septiembre 19, 2007 at 1:27 pm 1 comentario

Listado de comandos útiles en Bash

VARIABLES DE ENTORNO

set -    

export $PATH=/variable/entorno    

echo $PATH    

env - Muestra las variables de entornos del usuario

MÓDULOS

lsmod - Muestrar los módulos cargados en el núcleo de Linux    

modprobe nombre_modulo -> Añade o quita módulos del kernel

PROCESOS

fg - procesos en foreground    

bg - procesos en background    

ps -auxw -  Ver todos los procesos y que no nos corte la pantalla    

killall nombre_proceso - Si deseamos matar todos los procesos ejecutados por el comando vim    

kill -l - Ver todas las señales de los procesosEstados de los procesos
Id Estado del proceso
D uninterruptible sleep (usually IO)
R runnable (on run queue)- Proceso ejecutando o en cola
S sleeping - Proceso dormido
T traced or stopped - Proceso detenido
W paging - Proceso paginado
X dead - Proceso muerto
Z zombie Aquellos procesos cuyos procesos padres han muerto dejando el proceso hijo sin finalizar. Cuando esto ocurre no es una buena señal.

ESTADÍSTICAS

free -m     De memoria    

vmstat -s -S: M  Del sistema

GENÉRICAS

watch 'ls -la'  Muestra el resultado de un comando  cada x segundos    

which  comando - Localiza el comando    

type comando  - Muestra los aliases del comando    

sudo comando usuario  - Ejecuta un comando como si fuera otro usuario

RUNLEVELES

chkconfig --list ejemplo Muestra/Modifica el estado de los servicios del sistema en cada nivel de arranque (runlevel)

DISCOS

cat /dev/cdrom > /usr/imagen.iso  - Crea una imagen del cdrom    

cat /dev/hda > /dev/hdb  - Clona el disco duro    

mount -rt iso9660 /dev/hdc /cdrom   - Montar en modo lectura con sitema de fichero iso9660 un cdrom    

fsck /dev/hda1 - Comprueba el disco    

fdisk -l  - Muestra las particiones del disco

CADENAS Y FICHEROS

tr 'A-Z' 'a-z'

RED

netstat -atun | grep ESTAB  - Muestra las conexiones establecidas con nuestra máquina    

netstat -a - Muestras los puertos abiertos    

ifdown eth0 - Desactiva el servicio de red para la tarjeta eth0    

ifup eth0 - Activa el servicio de red para la tarjeta eth0    

iptraf - Herramienta gráfica de gestión de tráfico de red    

/usr/sbin/iftop - Otra herramienta de análisis de tráfico

TAR

tar -tzvf fichero.tar Muestra el contenido del fichero

COMPILACIÓN

gcc -o prueba prueba.c

FIND

find / -name mysql* -exec rm {}  - Busca todos los ficheros que comiencen por  mysql y los elimina    

find . -name "*mysql*" -print    - Busca todos los ficheros que contengan la palabra mysql

HORAS

date --set=15:30 - Cambiar la hora

APT

apt-cache search datoabuscar - Busca una aplicación en la lista de aplicaciones a instalar (sólo distribuciones Debian)    

apt-get install nombreaplicacion - Instala la aplicación especificada (si se tiene conexión a Internet), sólo disponible en distribuciones Debian    

apt-get install -f - Comprueba la correcta instalación de los paquetes descargados en '/var/cache/apt/archives/', repitiendo la instalación si fuese necesario o bajando algún paquete dependiente que no se haya descargado    

apt-get update - Actualiza la base de datos de paquetes a actualizar o instalar a partir del fichero '/etc/apt/sources.list'. La base de datos la constituyen un conjunto de ficheros ubicados en '/var/lib/apt/lists/'    

apt-get upgrade - Actualiza todos los paquetes instalados en el sistema a la última versión disponible    

apt-get clean - Elimina todos los paquetes (.deb) descargados (almacenados automáticamente en '/var/cache/apt/archives/') 

apt-get update && apt-get -f dist-upgrade && apt-get clean . Actualizar completamente el listado de paquetes disponibles

Si estás detrás de un proxy  no transparente  apt-get necesita IP y puerto del proxy obtenido de unas variable de entorno que vamos a menter automáticamente en .bashrc y .bash_profile:
export http_proxy=http://128.19.54.25:8080/
export ftp_proxy=http://128.19.54.25:8021/ 

YUM

Por defecto YUM lee el fichero de configuración /etc/yum.conf    

Importar las claves GPG    

rpm --import /usr/share/rhn/RPM-GPG-KEY    

rpm --import /usr/share/rhn/BETA-RPM-GPG-KEYyum info festival    

yum install festival    

yum list festival*    

yum update    

RedHat sólo ofrece soporte para up2date    

up2date

febrero 23, 2007 at 9:36 am Deja un comentario

10 Buenos hábitos a la hora de programar en shell scripting

Traducción propia del artículo de IBM http://www-128.ibm.com/developerworks/aix/library/au-badunixhabits.html

1 – Definir una estructura de árbol de una sóla vez

mkdir -p tmp/a/b/c  

en vez de 

~ $ mkdir tmp 
~ $ cd tmp 
~/tmp $ mkdir a 
~/tmp $ cd a 
~/tmp/a $ mkdir b 
~/tmp/a $ cd b 
~/tmp/a/b/ $ mkdir c 
~/tmp/a/b/ $ cd c 
~/tmp/a/b/c $ 

Y mejor todavía, pues crea el directorio project y dentro los distintos directorios 

mkdir -p project/{lib/ext,bin,src,doc/{html,info,pdf},demo/stat/a}

2 – Cambiar el path, no mover el fichero. Por ejemplo, no desempaquetar ficheros directamente en el directorio que deseemos. Para ello podemo usar la opción -C

tar xvf -C tmp/a/b/c newarc.tar.gz

3 – Combinar comandos con operadores de control

Por ejemplo:  Ejecutar un comando sólo si otro comando ha devuelto 0 exit status. 

cd tmp/a/b/c && tar xvf ~/archive.tar 

Otro ejemplo: Ejecutar un comando sólo si otro comando no ha devuelto un 0 exit status. 
cd tmp/a/b/c || tar xvf ~/archive.tar

4 – Entrecomillar variables con cuidado

Ejemplos: 
ls tmp/ 
a b 

~ $ VAR="tmp/*" 

~ $ echo $VAR 
tmp/a tmp/b 

~ $ echo "$VAR" 
tmp/* 

~ $ echo $VARa 

~ $ echo "$VARa" 

~ $ echo "${VAR}a" 
tmp/*a 

~ $ echo ${VAR}a 
tmp/a

5 – Usar secuencias de escape para controlar la entrada en el log

cd tmp/a/b/c ||  
> mkdir -p tmp/a/b/c &&  
> tar xvf -C tmp/a/b/c ~/archive.tar 

cd tmp/a/b/c  
>                 ||  
> mkdir -p tmp/a/b/c  
>                    &&  
> tar xvf -C tmp/a/b/c ~/archive.tar 

6 – Agrupar los comandos en una lista para poder ir redirigiendo los resultados

Ej. Ejecutar una lista de comandos en un subshell 

~( cd tmp/a/b/c/ || mkdir -p tmp/a/b/c &&  
> VAR=$PWD; cd ~; tar xvf -C $VAR archive.tar )  
> | mailx admin -S "Archive contents" 

Ej. Ejecutar una lista de comandos en el propio shell 

~ $ { cp ${VAR}a . && chown -R guest.guest a &&  
> tar cvf newarchive.tar a; } | mailx admin -S "New archive" 

7 – Usar xargs fuera de find. Usar con -e. Por defecto se considera el símbolo _ como fin de línea. Si por alguna razón aparece ese símbolo en una línea como único carácter con xargs, todo lo que venga detrás no será filtrado. 

~ $ find some-file-criteria some-file-path |  
> xargs some-great-command-that-needs-filename-arguments 

Otros ejemplos de xargs 
$ xargs 
a 
b 
c 
Control-D 
a b c 
~ $ 

Otros ejemplos: 

~/tmp $ ls -1 | xargs 
December_Report.pdf README a archive.tar mkdirhier.sh 

~/tmp $ ls -1 | xargs file 
December_Report.pdf: PDF document, version 1.3 
README: ASCII text 
a: directory 
archive.tar: POSIX tar archive 
mkdirhier.sh: Bourne shell script text executable 
~/tmp $

8 – Evitar usar grep y wc -l. Usar mejor -c que cuenta las líneas y es más rápido

time grep -c and tmp/a/longfile.txt

9 – Es preferible usar awk en vez de grep

Usar 
ls -l | awk '$6 == "Dec"' 

en vez de 
ls -l /tmp/a/b/c | grep Dec 

 10 – No usar tuberías con grep y cat puesto que grep toma el nombre del fichero como argumento
 

BIEN 
time grep and tmp/a/longfile.txt 

MAL 
time cat tmp/a/longfile.txt | grep and

febrero 23, 2007 at 8:35 am 5 comentarios

Uso del comando at y crontab para programar tareas

COMANDO AT

# Programar tareas puntualmente

at -f /scripts/copia  5am tomorrow 
at  -f /scripts/copia  3:50am May 19

#Para ver los trabajos  activos

atq  
at -l

CRONTAB

crontab -e

Se abre el editor vi y nos permite editarlo.

Pulsamos la letra i, editamos el fichero.

Pulsamos la tecla Esc, y escribimos :qw para guardar los cambios.

Si no deseamos guardarlos escribimos :q!

# Ejecución de un comando todos los días a media noche
0  0  * * * /comando

# Ejecución de un comando cada hora en punto

0 * * * * /comando

# Ejecución de un comando el primer día de cada mes a las 0 y a las 12 horas

0 0,12 1 * * /comando

# Ejecución de un comando el día 12 que sea domingo, lunes o sábado a las 2 de la mañana

0  2   12   *  0,1,6 /comando

# Ejecución de un comando cada 5 minutos

*/5  * * * *  /comando

#Ejecución de un comando cada media hora 

0,30 * * * * /comando

# Para poder ver las tareas

crontab -l

febrero 22, 2007 at 5:32 pm 1 comentario

Comprobar si existe un fichero en bash

  if [ -d “$RUTA_COPIA/$i” ]
            then
                echo “Ya existe”
        else
            mkdir $RUTA_COPIA/$i
   fi

febrero 22, 2007 at 4:59 pm 7 comentarios

Arrays en bash

sitio[1]=bbdd1
sitio[2]=bbd2
# Recorro el array
for i in “${sitio[@]}”
   do
     echo $i;
  done

febrero 22, 2007 at 4:57 pm 5 comentarios

Entradas antiguas


Calendario

septiembre 2017
L M X J V S D
« Feb    
 123
45678910
11121314151617
18192021222324
252627282930  

Posts by Month

Posts by Category