Publicado el

El comando screen para múltiples ventanas de SSH

el-comando-screen-para-multiples-ventanas-de-SSH

Para obtener diversas ventanas abiertas en SSH podemos ejecutar el comando screen. La primera vez que lo ejecutemos se activará dicha funcionalidad. Cada vez que lo ejecutemos posteriormente se abrirá una nueva ventana.

Los comandos disponibles para usar screen son:

Comando Descripción
screen -S MiSesion Crear sesión de screen con nombre asignado
CTRL+a c Crear ventana
CTRL+a 0-9 Cambiar de ventana
CTRL+a n próxima ventana
CTRL+a A Nombre de Ventana
CTRL+a k Mata un programa
CTRL+a Shift+” Lista las ventanas
CTRL+a Shift+s dividir una screen en dos regiones
CTRL+a TAB mover a región siguiente
CTRL+a Shift+c crea una ventana en la region
CTRL+a Shift+x cerrar región actual
CTRL+a Shift+q cerrar todas las regiones menos la actual
CTRL+a d Minimizar consola
screen -r retornar a la consola
Publicado el

Optimizar un Servidor de Alto Tráfico

optimizar-un-servidor-de-alto-tráfico

Si se están alcanzando los límites de un servidor ejecutando Apache, sirviendo una gran cantidad de contenido dinámico, puede cambiarse el mismo por un hardware más poderoso o primero intentar algunas técnicas para mejorar su rendimiento. Este punto cita las técnicas que pueden permitir esto último.

Problemas Comunes:

  • Swapping – Demasiados procesos en ejecución utilizando demasiada RAM
  • CPU ” Consultas a Bases de Datos mal optimizadas, código de programación mal optimizado, procesos fuera de control
  • Red – Límites de hardware, Ataques

Soluciones Básicas:

  • Utilizar el comando top d2c y ps axu para comprobar si hay procesos que utilizan mucha CPU o RAM.
  • Usar netstat -anp | sort -u para comprobar si hay problemas de red.

Mejorar el Uso de la RAM por el Apache

Los procesos del Apache pueden utilizar grandes cantidades de memoria RAM si no están bien optimizados.

  • Si el Apache sirve 100% archivos estáticos, cada proceso httpd utilizará alrededor de 2-3 megas de RAM.
  • Si el Apache sirve 99% archivos estáticos y 1% archivos dinámicos, cada proceso httpd utilizará desde 3-20 megas de RAM (dependiendo de la complejidad de las páginas dinámicas).

Esto ocurre porque un proceso crece para dar cabida a todo lo que debe servir y nunca disminuye nuevamente a menos que ese proceso muera. En forma sencilla, a menos que se tengan muy pocas páginas dinámicas y una fluctuación de tráfico importante, la mayoría de los procesos httpd ocuparán una cantidad de RAM igual al script dinámico más grande en el sistema. Un servidor web inteligente debería tratar esto automáticamente, sin embargo, se tiene varias opciones para mejorar el uso de la RAM de forma manual.

Reducir los procesos desperdicio mediante la adecuación de KeepAlive:

Se trata de un equilibrio. KeepAliveTimeout es la cantidad de tiempo que se permite un proceso cuando no hace nada, pero sigue ocupando espacio. Esos segundos se suman en gran medida. Pero usando KeepAlive puede aumentarse la velocidad tanto para usted como para el cliente (si se desactiva KeepAlive el servicio de archivos estáticos como las imágenes puede ser mucho más lento). Lo mejor es tener KeepAlive en On y KeepAliveTimeout con un valor bajo (como 1 ó 2 segundos).

Límitar los procesos totales con MaxClients:

Si se usa Apache para servir contenido dinámico, las conexiones simultáneas se hacen muy limitadas. Si se supera un determinado número, el sistema comienza a realizar intercambios caníbales, haciéndose más lento y más lento hasta que muere. Use el ensayo y error para averiguar cuántos procesos de Apache pueden manejar el servidor y establecer dicho valor en MaxClients.

Nota:

la documentación del Apache sobre esto es engañosa – si se alcanza este límite, los clientes no serán “bloqueados”, simplemente se colocarán en la cola y su acceso se vuelve más lento. Basándose en el valor de MaxClients, se pueden estimar los valores que se necesitan para StartServers, MinSpareServers y MaxSpareServers.

Forzar el reinicio de procesos con MaxRequestsPerChild:

Obligar que los procesos mueran después de un tiempo hace que luego empiecen con un bajo uso de RAM, y esto en muchas situaciones puede reducir el uso de la memoria total. A menor contenido dinámico que se tenga, más útil será este método. Esto crea un juego de aumento-disminución, con los archivos dinámicos constantemente aumentando el uso total de la RAM y el reinicio de procesos constantemente reducirlo. Experimente con la directiva MaxRequestsPerChild – incluso valores tan bajos como 20 pueden funcionar bien. Pero no la coloque demasiado baja, porque la creación de nuevos procesos causa sobrecarga. Es posible averiguar la mejor configuración de carga mediante la ejecución del comando ps axu –sort:rss .

Nota:

El uso de este método es delicado. Si la única manera de mantener el servidor en ejecución es mediante el uso de este parámetro, finalmente se caerá en problemas. Dicho esto, modificando MaxRequestsPerChild es posible aumentar MaxClients tanto como en un 50%.

Mayor Afinación del Apache:

Para sitios de propósito mixto (como galerías de imágenes, sitios de descarga, etc.), a menudo puede mejorarse el rendimiento mediante la ejecución de dos demonios de apache diferentes en el mismo servidor. Esto es una opción avanzada solo para servidores dedicados a sitios de muy alta carga

Uso de CPU y RAM de PHP:

Compilar scripts PHP es generalmente más caro que ejectuarlos. ¿Por qué no usar una herramienta sencilla que los mantenga precompilados?. Se recomienda el uso de Turck MMCache. Algunas alternativas son PHP Accelerator, APC y Zend Accelerator. Esto causará un aumento en la velocidad entre 2x a 10x.

Optimizar las consultas de la base de datos:

Esto se trata en detalle en diversas partes, algunas notas importantes son: una instrucción de consulta incorrecta, ejecutándose a menudo, puede hacer que un sitio se cuelgue. Si se optimiza solo una consulta no se puede ver gran mejora de velocidad de todo el servidor. Si se buscan y optimizan todas las consultas ineficientes puede llegarse a una mejora de velocidad del servidor equivalente a 5x. La característica log-slow-queries de MySQL puede ser muy útil.

Cómo reportar logs de consultas lentas:

Ejecutar:

# nano /etc/rc.d/init.d/mysqld

Buscar esta línea:

SAFE_MYSQLD_OPTIONS="--defaults-file=/etc/my.cnf"

Cambiar a:

SAFE_MYSQLD_OPTIONS="--defaults-file=/etc/my.cnf--log-slow-queries=/var/log/slow-queries.log"

Como se puede ver, se añade la opción de registrar todas las consultas lentas a /var/log/slow-queries.log

Cierre y guarde el archivo.

Ahora ejecutar:

touch /var/log/slow-queries.log
chmod 644 /var/log/slow-queries.log

Ahora debe re-arrancarse mysql:

service myslqd restart

mysqld registrará todas las consultas lentas a este archivo.

Publicado el

Las Cargas del Servidor (Server Loads)

las-cargas-del-servidor-server-loads

El promedio de carga de un servidor trata de medir el número de procesos activos en cualquier momento. Como una medida del uso del CPU, el promedio de carga es muy simple y no tiene una definición precisa, sin embargo es muy útil. Promedios altos en las cargas significa que el sistema esta siendo usado con intensidad y que su tiempo de respuesta correspondiente será lento. ¿Qué se considera alto?, Idealmente, la carga no debería ser mayor a 3, sin embargo, podría serlo por momentos cortos.

Cuando se muestra la carga del servidor se reflejan 3 valores que se refieren a la carga reportada hace 1, 5 y 15 minutos.

¿Como verificar la carga del servidor?

Existen diversas maneras de verificar la carga del servidor. La primera de ellas es ingresar al WHM y ver las cargas en la esquina superior derecha.

A su vez, a través del SSH se pueden ver las cargas con:

Método 1 – usando el comando uptime:

El comando uptime muestra lo siguiente:

uptime
 9:40am up 9 days, 10:36, 4 users, load average: 0.02, 0.01, 0.00

Este comando muestra el tiempo transcurrido desde que se reinició la última vez el sistema, el número de procesos de usuario activos y el promedio de las cargas.

Método 2 – usando el comando procinfo:

El comando procinfo muestra lo siguiente:

 procinfo
 
 Linux 2.0.36 (root@tsv) (gcc 2.7.2.3)
 #1 Wed Jul 25 21:40:16 EST 2010 [tsv]
 Memory: Total Used Free Shared Buffers Cached Mem:
 95564 90252 5312 31412 33104 26412
 Swap: 68508 0 68508
 Bootup: Sun Jul 21 15:21:15 2010
 Load average: 0.15 0.03 0.01 2/58 8557

El promedio de carga se muestra en la esquina inferior derecha.

Método 3 – usando el comando w:

El comando w muestra lo siguiente:

 w
 
 9:40am up 9 days, 10:35, 4 users, load average: 0.02, 0.01, 0.00
 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
 mir ttyp0 :0.0 Fri10pm 3days 0.09s 0.09s bash
 neil ttyp2 12-35-86-1.ea.co 9:40am 0.00s 0.29s 0.15s w

Note que la primera línea es exactamente igual a la mostrada por uptime.

Método 4 – usando el comando top – preferido:

El comado top hace un ranking de los procesos de acuerdo a la cantidad de tiempo del CPU que consumen, mostrando lo siguiente:

 top

 4:09am up 12:48, 1 user, load average: 0.02, 0.27, 0.17
 58 processes: 57 sleeping, 1 running, 0 zombie, 0 stopped
 CPU states: 0.5% user, 0.9% system, 0.0% nice, 98.5% idle
 Mem: 95564K av, 78704K used, 16860K free, 32836K shrd, 40132K buff
 Swap: 68508K av, 0K used, 68508K free 14508K cached
 PID USER PRI NI SIZE RSS SHARE STAT LIB %CPU %MEM TIME COMMAND
 5909 neil 13 0 720 720 552 R 0 1.5 0.7 0:01 top
 1 root 0 0 396 396 328 S 0 0.0 0.4 0:02 init
 2 root 0 0 0 0 0 SW 0 0.0 0.0 0:00 kflushd
 3 root -12 -12 0 0 0 SW< 0 0.0 0.0 0:00 kswapd
 ...

El comando top muestra también el tiempo de funcionamiento del servidor (uptime), la información de la memoria y el listado de los procesos que pueden ordenarse por uso del CPU, entre otros.

 

¿Qué se considera una carga alta, normal o media?

La respuesta a este punto es subjetiva, sin embargo, para dar una idea de lo que debería ser, una carga excelente es aquella igual o menor a 1.0. Una carga normal oscila entre 2.0 y 4.0 y una carga un poco mayor puede considerarse un poco alta. Si se nota que la respuesta del servidor se esta volviendo lenta, verifique primero la carga.

Existen situaciones particulares en las cuales un dominio de un servidor presenta cargas muy altas (ej. Día de la final del beisbol nacional en el portal del equipo campeón). Esas situaciones temporales se auto regularán cuando pase el evento que causa la carga muy alta. Gracias al sistema SIM los servidores están configurados para reiniciar sus procesos automáticamente cuando no se reportan por cargas muy altas.

Cuando las cargas promedio de un servidor están por encima de 2.0 es conveniente considerar colocar un servidor más poderoso ya que es de alto uso. Vale decir que estas cargas promedio no deberían tomarse cuando el sistema esta realizando el procesamiento de los logs, respaldos o estadísticas.

Publicado el

Comandos Básicos

comandos-básicos

La siguiente lista de comandos pretende ser de utilidad como referencia rápida para utilizar comandos de sistema. Se ha agrupado en dos: los comandos de sistema corrientes y los relacionados con la administración.

Comandos Básicos:

Comando

Descripción

Ejemplos

ls

listar contenido de directorios

ls, ls -l, ls -fl, ls –color

cp

copiar ficheros/directorios

cp -rfp directorio /tmp, cp archivo archivo_nuevo

rm

borrar ficheros/directorios

rm -f fichero, rm -rf directorio, rm -i fichero

mkdir

crear directorios

mkdir directorio

rmdir

borrar directorios, deben estar vacios

rmdir directorio

mv

renombrar o mover ficheros/directorios

mv directorio directorio, mv fichero nuevo_nombre, mv fichero a_directorio

date

gestion de fecha de sistema, se puede ver y establecer

date, date 10091923

history

muestra el historial de comandos introducidos por el usuario

history | more

more

muestra el contenido de un fichero con pausas cada 25 lineas

more fichero

grep

filtra los contenidos de un fichero

cat fichero | grep cadena

cat

muestra todo el contenido de un fichero sin pausa alguna

cat fichero

chmod

cambia los permisos de lectura/escritura/ejecucion de ficheros/directorios

chmod +r fichero, chmod +w directorio, chmod +rw directorio -R, chmod -r fichero

chown

cambia los permisos de usuario:grupo de ficheros/directorios

chown root:root fichero, chown pello:usuarios directorio -R

tar

archivador de ficheros

tar cvf fichero.tar directorio , tar xvf fichero.tar, tar zcvf fichero.tgz directorio, tar zxvf fichero.tgz

gunzip

descompresor compatible con ZIP

gunzip fichero

rpm

gestor de paquetes de redhat. Para instalar o actualizar software de sistema.

rpm -i paquete.rpm, rpm -qa programa, rpm –force paquete.rpm, rpm -q –info programa

mount

montar unidades de disco duro, diskette, cdrom

mount /dev/hda2 /mnt/lnx, mount /dev/hdb1 /mnt -t vfat

umount

desmontar unidades

umount /dev/hda2, umount /mnt/lnx

wget

programa para descargar ficheros por http o ftp

wget https://www.tecnoestudios.com/documento.pdf

lynx

navegador web con opciones de ftp, https

lynx www.tecnoestudios.net, lynx –source https://www.tecnoestudios.com/script.sh | sh

ftp

cliente FTP

ftp ftp.tecnoestudios.net

whois

whois de dominios

whois tecnoestudios.net

who

muestra los usuarios de sistema que han iniciado una sesion

who, w, who am i

mail

envio y lectura de correo electronico

mail pepe@tecnoestudios.net < fichero, mail -v pepe@tecnoestudios.net < fichero

sort

ordena el contenido de un fichero

cat /etc/numeros | sort, ls | sort

ln

para crear enlaces, accesos directos

ln -s /directorio enlace

tail

muestra el final (10 lineas) de un fichero

tail -f /var/log/maillog, tail -100 /var/log/maillog | more

head

muestra la cabecera (10 lineas) de un fichero

head fichero, head -100 /var/log/maillog | more

file

nos dice de que tipo es un fichero

file fichero, file *

 

Comandos de Administración

Comando

Descripción

Ejemplos

sysctl

Configurar los parámetros del kernel en tiempo de ejecución

sysctl -a

ulimit

muestra los limites del sistema (maximo de ficheros abiertos, etc..)

ulimit

adduser

añadir usuario de sistema

adduser pepe, adduser -s /bin/false pepe

userdel

eliminar usuario de sistema

userdel pepe

usermod

modificar usuario de sistema

usermod -s /bin/bash pepe

df

espacio en disco disponible, muy útil

df, df -h

uname

Información sobre el tipo de unix (linux) en el que estamos, kernel, etc.

uname, uname -a

netstat

la información sobre las conexiones de red activas

netstat, netstat -ln, netstat -l, netstat -a

ps

toda la información sobre procesos en ejecución

ps, ps -axf, ps -A, ps -auxf

free

muestra el estado de la memoria RAM y el SWAP

free

ping

herramienta de red para comprobar entre otras cosas si llegamos a un host remoto

ping www.tecnoestudios.net

traceroute

herramienta de red que nos muestra el camino que se necesita para llegar a otra maquina

traceroute www.tecnoestudios.net

du

uso de disco. Muestra el espacio que está ocupado en disco

du *, du -sH /*, du -sH /etc

ifconfig

configuración de interfaces de red, modems, etc.

ifconfig, ifconfig eth0 ip netmask 255.255.255.0

route

gestiona las rutas a otras redes.

route, route -n

iptraf

muestra en una aplicacion de consola TODO el trafico de red IP, UDP, ICMP. Permite utilizar filtros, y es SUMAMENTE UTIL para diagnostico y depuración de firewalls

iptraf

tcpdump

vuelca el contenido del trafico de red

tcpdump, tcpdump -u

lsof

muestra los ficheros (librerías, conexiones) que utiliza cada proceso

lsof, lsof -i, lsof | grep fichero

lsmod

Muestra los módulos de kernel que están cargados

lsmod

modprobe

Trata de instalar un modulo, si lo encuentra lo instala pero de forma temporal

modprobe ip_tables, modprobe eepro100

rmmod

Elimina modulos del kernel que estan cargados

rmmod <nombre de modulo>

sniffit

Sniffer o husmeador de todo el trafico de red. No suele venir instalado por defecto.

sniffit -i

 

Combinaciones Útiles

Los comandos son muy útiles, pero con el conocimiento básico del shell y sus comandos tenemos armas muy poderosas que muestran todo el potencial del interprete de comandos Unix. A continuación se muestran algunos ejemplos avanzados de comandos que se usan con cierta frecuencia.

Combinación

Descripción

comando | grep filtro

A la salida de cualquier comando le podemos aplicar grep para que solo nos muestre la información que nos interesa.

mail pepe@tecnoestudios.net < fichero.conf

Con esto nos enviamos rápidamente un fichero de sistema a nuestra cuenta.

mail -v testing@tecnoestudios.net

Con el parametro -v, al terminar de escribir (. enter), veremos la traza del correo hasta el servidor, si es aceptado o no.

find / -name ‘filtro’ -print

Find es un buscador de ficheros muy potente y con muchos parámetros, todos los que nos podamos imaginar (tamaños, fechas, tipos de archivos, etc..)

 

Usos de more

/cadena: podemos hacer busqueda de cadena

f: adelante

b: volver arriba

v: iniciar vi en la línea que estamos

Publicado el

Comandos de MySQL por Consola

comandos-de-mysql-por-consola

Es normal que utilicemos MySQL a través de páginas PHP y para administrar la base de datos utilicemos un programa como PhpMyAdmin, pero a veces no nos queda otro remedio que acceder a la base de datos a través de la línea de comandos.

MySQL tiene un programa que se llama con el mismo nombre de la base de datos (mysql) que sirve para gestionar la base datos por línea de comandos.

Conectar con el servidor MySQL

Lo primero que tendremos que hacer es conectar con el sistema gestor de MySQL. Para ello, desde la línea de comandos invocamos a MySQL. Simplemente tenemos que escribir el comando “mysql” e indicarle unas opciones de conexión.

mysql

Con esa sentencia se conecta uno con la base de datos con los parámetros por defecto. Es decir, al servidor local, con usuario y password igual a cadenas vacías.

Lo más normal es que tengamos que indicar algún otro dato para conectar con la base de datos, como el usuario, la clave o la dirección del servidor con el que queremos conectar. La sintaxis sería la siguiente:

mysql -h nombre_servidor -u nombre_usuario -p

Si deseamos conectarnos a la base de datos en local y con nombre de usuario root tendríamos que escribir:

mysql -h localhost -u root -p

Lo primero que nos preguntará será el password para el usuario root. Una vez introducida la clave, ya estaremos dentro de la línea de comandos de MySQL. Con ello el prompt cambiará a algo como esto:

mysql>

Podríamos haber indicado la contraseña directamente en la línea de comandos para iniciar la sesión con MySQL, pero esto se desaconseja por razones de seguridad. De todos modos, la sintaxis hubiera sido:

mysql -h localhost -u root -pmi_clave

Nos fijamos que entre -h y el nombre del host hay un espacio en blanco, igual que entre -u y el nombre de usuario. Sin embargo, entre -p y la clave no debemos poner ningún espacio.

Dentro de la consola de MySQL

Una vez dentro, tendremos a nuestra disposición todas las sentencias de MySQL para el trabajo con la base de datos y el lenguaje SQL.

Lo más normal es que primero se tenga que conectar con una base de datos en concreto, de entre todas las que puede tener creadas en su servidor MySQL. Eso se hace con el comando use, seguido del nombre de la base de datos que desea conectar.

mysql> use mibasedatos;

Esto nos conectaría con la base de datos llamada “mibasedatos”.

Atención: Hay que fijarse que todas las sentencias dentro de la línea de comandos de MySQL acaban en “;”. Si no colocamos el punto y coma, lo más seguro es que no se ejecute el comando y nos vuelva a salir el prompt para que sigamos introduciendo el comando. Si lo que queríamos era ejecutar la sentencia que habíamos escrito antes, con simplemente entrar el “;” será suficiente. Es decir, no debemos escribir de nuevo la sentencia entera, sólo el “;” y volver a apretar “enter”.

Si queremos ver una lista de las bases de datos alojadas en nuestro servidor podemos escribir el comando show databases. Así:

mysql>show databases;

Con esto nos mostraría una lista de las bases de datos de nuestro servidor. Algo como esto:

mysql> show databases-> ;

 


5 rows in set (0.02 sec)

Si queremos crear una base de datos, podremos hacerlo con el comando “create database” seguido del nombre de la nueva base de datos.

mysql> create database miprueba;

Eso nos creará una base de datos que se llama “miprueba”. Como habíamos comentado, si queremos luego usar esa base de datos escribiríamos:

mysql> use miprueba;

Lógicamente, esta base de datos recién creada estará vacía, pero si estuviéramos usando una base de datos ya creada y queremos ver las tablas que tiene escribiríamos el comando “show tables”.

mysql> show tables;

Si no hay tablas, nos dirá algo como “Empty set”, pero si tenemos varias tablas dadas de alta en la base de datos que estamos usando, nos saldrá una lista de ellas:

mysql> show tables;


2 rows in set (0.00 sec)

Ahora, si deseamos obtener información sobre una tabla, para saber qué campos tiene y de qué tipo, podremos utilizar el comando describe seguido del nombre de la tabla.

 

mysql> describe administrador;

 


 4 rows in set (0.11 sec)

 

Otras Sentencias SQL:

Desde la consola de MySQL podemos indicar por línea de comandos todo tipo de sentencias en lenguaje SQL, como selecciones, inserciones, actualizaciones, creación de tablas, etc. El mecanismo es el que se puede deducir. Simplemente colocamos la sentencia a ejecutar seguida del punto y coma. Veamos una serie de sentencias seguidas y el resultado de ejecutarlas:

mysql> create table prueba (id_prueba int);
 Query OK, 0 rows affected (0.08 sec)
 
 mysql> insert into prueba (id_prueba) values (1);
 Query OK, 1 row affected (0.00 sec)
 
 mysql> insert into prueba (id_prueba) values (2);
 Query OK, 1 row affected (0.00 sec)
 
 mysql> insert into prueba (id_prueba) values (3);
 Query OK, 1 row affected (0.00 sec)
 
 mysql> select * from prueba;

 


3 rows in set (0.00 sec)

Para salir de la línea de comandos de MySQL:

Una vez hemos terminado de trabajar con MySQL, si queremos cerrar la conexión con el servidor, simplemente escribimos “quit” desde el prompt de MySQL:

mysql> quit

Para generar un archivo .sql desde una base de datos se debe ejecutar:

mysqldump -h servidor -u usuario -p base_de_datos > archivo_salida.sql

Para ejecutar un archivo .sql en una base de datos:

mysql -h servidor -u usuario -p base_de_datos < archivo_salida.sql
Publicado el

Comandos para Pruebas de Red

comandos-para-pruebas-de-red

Para poder ejecutar estos comandos debemos usar YUM para instalar netkit-ping, traceroute, dnsutils, ipchains (para el kernel 2.2), iptables (para el kernel 2.4 ) y el paquete net-tools.

Comando

Parámetros

Descripción 

ping

dominio.com

Verificar la conexión a Internet

traceroute

dominio.com

Rastrear paquetes IP

ifconfig

 

Verificar la configuración del servidor (host)

route

-n

Verificar la configuración de la ruta

dig

[@dns-server.com] host.dom [{a|mx|any}] |less

Verificar registros host.dom DNS [@ dns-server.com] para un registro [{mx|any}]

ichains

-L -n |less

Verificar filtrado de paquetes (kernel 2.2)

iptables

-L -n |less

Verificar filtrado de paquetes (kernel 2.4)

netstat

-a

Mostrar todos los puertos abiertos

netstat

-l –inet

Mostrar los puertos en escucha

netstat

-ln –tcp

Mostrar puertos tcp en escucha (numérico)

Publicado el

Tareas de Ejecución Cronometrada (cron y at)

tareas-de-ejecución-cronometrada-cron-y-at

El servicio crontab es el encargado de manejar las tareas de ejecución cronometrada (CRON). Es posible usar cron y at para planificar tareas en Linux.

Para crear o editar el archivo crontab para configurar los eventos planificados, ejecute el comando:

crontab -e

Ejemplo de un archivo crontab:

 # utilice /bin/sh para ejecutar los comandos sin importar lo que dice el /etc/passwd
 SHELL=/bin/sh
 # envíe un mensaje al "hostmaster" sin importar a quien pertenece el crontab
 MAILTO=hostmaster@1ahost.com
 # Minuto Hora Día_del_mes Mes Día_de_la_semana comando
 # Ejecutar todos los días a las 00:05
 5 0 * * * $HOME/bin/tarea.diaria >> $HOME/tmp/salida 2>&1
 # Ejecutar a las 14:15 el primer día de cada mes -- enviar salida al hostmaster
 15 14 1 * * $HOME/bin/mensual
 # Ejecutar a las 22:00 todos los días hábiles (1-5), recordar algo a Administración.
 # % para nueva línea, el último % para cc:
 0 22 * * 1-5 mail -s "Son las 10 de la noche" Admin %Admin: % %¿Ya se facturo todo? %. % %
 23 */2 1 2 * echo "Ejecutar el 1 de febrero a los 23 minutos después de 0am, 2am, 4am ..."
 5 4 * * sun echo "Ejecutar todos los domingos a las 04:05"
 # Ejecutar a las 03:40 el primer lunes de cada mes
 40 3 1-7 * * [ "$(date + %a)" == "Mon" ] && comando -args

A su vez, se puede ejecutar el comando at para planificar una tarea una sola vez:

$ echo "command -args"| at 3:40 Monday
Publicado el

Ejemplos de Comandos Combinados con Pipes

ejemplos-de-comandos-combinados-con-pipes-1

Encontrar todos los archivos en /usr excluyendo los directorios indicados (/usr/var, /usr/tmp, /usr/local):

find /usr | egrep -v "/usr/var|/usr/tmp|/usr/local"


Convertir todos los caracteres del archivo ejemplo.txt de minúsculas a mayúsculas:

cat ejemplo.txt | tr "a-z" "A-Z" > mayusculas.txt


Ver todos los procesos del Apache que están en ejecución:

ps -aux | grep -e "httpd"


Obtener los últimos cuatro accesos de la IP 192.168.2.107 al Apache:

cat /var/log/httpd/access_log-20141207 | grep -e "192.168.2.107" | tail -n4


Ver todas las conexiones tcp correspondientes a mysql:

netstat -tap | grep mysql


Ver todas las conexiones al servidor en el puerto 22 (SSH):

netstat -ln | grep 22


Numerar en forma inversa las líneas del archivo ejemplo.txt y mostrarlo en pantalla:

cat -n ejemplo.txt | sort -r


Ver las primeras 100 líneas del archivo log de los correos (maillog) con paginación:

head -100 /var/log/maillog | more


Mostrar los archivos más pesados en tamaño de bytes en el directorio de logs y controlar la vista con less:

cd /var/log
ls -lhS | less


Listar todos los archivos abiertos por los procesos, que se relacionen con el directori usr y controlar la lista con less:

lsof | grep usr | less


Obtener los 5 comandos más usados por SSH:

history | awk '{print $2}' | sort | uniq -c | sort -nr | head -5
Publicado el

Manejo de Permisos con chmod

manejo-de-permisos-con-chmod

Comando

Parámetros

Descripción

chmod

permisos archivos/directorio

Cambia los permisos de archivos/directorios

Los permisos se dividen en tres partes:

  • Permisos del propietario
  • Permisos del grupo
  • Permisos de todos

Al ejecutar el comando ls -l se mostrará algo como;

drwxrwxrwx

Donde la primera letra indica si es directorio (d) o no (-), los tres caracteres siguientes pertenecen a los permisos de propietario para lectura (r)escritura (w) y ejecución (x); las tres letras siguientes pertenecen al grupo y las tres últimas letras a los permisos de todos.

Forma de asignar los permisos por números:

lectura (4), escritura (2) y ejecución (1).

Ejemplo:

chmod 755 archivo

Asigna permisos de (7) lectura, escritura y ejecución al propietario del archivo, y de (5) lectura y ejecución al grupo y (5) de lectura y ejecución a todos.