COMUNICACION Y SINCRONIZACION DE PROCESO
CAPITULO 4 Ing. Fausto Orozco Lara
Redirecciones Primero señalar que en cuando hablamos de la entrada estándar se hace referencia, normalmente, a lo escrito a través del teclado y como salida estándar a lo enviado a la pantalla, aunque pueden ser otros los dispositivos definidos como estándar en algún caso especial. Las redirecciones se realizan con los símbolos > y < usando su similitud
con unas flechas. Así con el símbolo > podemos redirigir la salida estándar desde un comando hacia un fichero. La redirección es muy útil cuando la salida es muy extenso y no nos cabe en pantalla,
Redirecciones Ejemplo $ echo "Hola mundo"
Hola mundo $ echo "Hola mundo" > saludo
$ cat saludo Hola mundo
Redirecciones Como vemos en este ejemplo > destruye el contenido del fichero si existe pero >> añade la información al final.
El símbolo < permite enviar el contenido de un fichero como entrada estándar. Esto es útil, por ejemplo, en programas o comandos en los que introducimos o podemos introducir los argumentos por el teclado, de tal manera que podemos sustituirlos por un fichero.
Tuberías Las tuberías es una redirección especial que nos permite enviar la salida de un comando como entrada de otro, para ellos se usa el símbolo |. Su gran utilidad es que nos permite concatenar comandos enriqueciendo mucho la programación. Ejemplos
$ seq 1 5 | head -2 1
2
Tuberías También existe la salida de error que va por otro ‘canal’ diferente. Así por ejemplo si el fichero file1 existe y el file2 no. $ ls file1 file2 ls: no se puede acceder a file2: No existe el archivo o el directorio file1 $ ls file1 file2 > salida ls: no se puede acceder a file2: No existe el archivo o el directorio $ cat salida file1
TuberĂas Como vemos, cuando hemos redirigido la salida al fichero salida, el mensaje de error que nos informa que el fichero file2 no existe sigue saliendo por pantalla. Para poder redireccionar tambiĂŠn la salida de error tenemos que usar &> que nos dice que redireccionemos ambas salidas, asĂ:
$ ls file1 file2 &> salida $ cat salida
ls: no se puede acceder a file2: No existe el archivo o el directorio file1
Tuberías De hecho la salida estándar suele ir identificada con 1 (o &1 si va después de > para diferenciarla de un fichero con nombre 1), y la salida de error con 2 (o &2) para poder hacer redirecciones individuales. Así, es equivalente a redirigir la sólo salida el siguiente comando:
$ ls file1 file2 1> salida ls: no se puede acceder a file2: No existe el archivo o el directorio
$ cat salida file1
TuberĂas Para redirigir la salida de error a un fichero $ ls file1 file2 2> salida
file1 $ cat salida
ls: no se puede acceder a file2: No existe el archivo o el directorio 2>&1 o 1>&2 sirven para redirigir la salida de error a la estĂĄndar o
viceversa para luego, por ejemplo, enviarla con una tuberĂa a otro comando. $ ls file1 file2 2>&1 salida |wc -l 2
Editor de texto VI El editor de textos VI es uno de los editores de textos mayormente implementado a lo largo de la historia de los sistemas operativos UNIX, es por ello que ha logrado establecerse como el editor de textos estándar de sistemas operativos como el mismo UNIX, Linux y BSD Así mismo existen alternativas mucho mas atractivas y estéticas a VI,
como pueden ser EMACS, gEdit y nano, sin embargo y debido a que VI a logrado permanecer por tantos años como el editor de textos predefinido de UNIX, Existe una versión mejorada de VI la cual es conocida como VIM, la diferencia radica en el uso de colores para diferenciar los diferentes tipos de sentencias implementadas en los
diferentes archivos de configuración de Linux.
Modos de Operación VI Modo comando Como su nombre lo indica permite indicar comandos que ejecuten una
acción específica, como búsquedas, copiar, pegar, eliminar líneas, mover el cursor, posicionarse en partes del archivo, etc. Varios comandos están disponibles directamente, con solo apretar una o dos
teclas, y otros están disponibles en el modo última línea que se accede a ella presionando la tecla dos puntos ':' y en seguida se indica la acción o comando a ejecutar. Para salir del modo de última línea se presiona ESC.
Ver documentación –>> Manual VI.pdf, Manual Completo VI.pdf
Cron En los SO Unix, cron es un administrador regular de procesos en segundo plano (demonio) que ejecuta procesos o guiones a intervalos regulares (por ejemplo, cada minuto, día, semana o mes). Los procesos que deben ejecutarse y la hora en la que deben hacerlo se especifican en el fichero crontab.
Cron se podría definir como el "equivalente" a Tareas Programadas de Windows. Cron es impulsado por un archivo de configuración que especifica comando shell para ejecutarse periódicamente a una hora específica. Los archivos crontab son almacenados en donde permanecen las
listas de trabajos y otras instrucciones para el demonio cron.
Cron Los usuarios habilitados para crear su fichero crontab se especifican en el fichero cron.allow. De manera análoga, los que no lo tienen permitido
figuran
en
/etc/cron.d/cron.deny,
o
/etc/cron.deny,
dependiendo de la versión de Unix. Cada línea de un archivo crontab representa un trabajo y es
compuesto por una expresión CRON, seguida por un comando shell para ejecutarse. Esto solo es permitido en el sistema crontab (/etc/crontab y /etc/cron.d/*), no en otros donde son asignados cada usuario es asignado a una configuración.
Cron Formato del fichero crontab # run-parts
01 * * * * root nice -n 19 run-parts /etc/cron.hourly 50 0 * * * root nice -n 19 run-parts /etc/cron.daily
22 4 * * 0 root nice -n 19 run-parts /etc/cron.weekly 42 4 1 * * root nice -n 19 run-parts /etc/cron.monthly
Para agregar, quitar o modificar tareas, hay que editar el crontab. Esto se hace con la orden crontab -e, que abrirรก el editor definido en la variable
de
entorno
EDITOR
y
cargarรก
correspondiente al usuario que estรก logueado.
el
fichero
crontab
Cron Sintaxis El formato de configuración de cron es muy sencillo. El símbolo «#» es
un comentario, todo lo que se encuentre después de ese carácter no será ejecutado por cron. El momento de ejecución se especifica de acuerdo con la siguiente tabla:
Cron - Para especificar todos los valores posibles de una variable se utiliza un asterisco (*). - La Ăşltima columna corresponde a la ruta absoluta del binario o script que se quiere ejecutar. Ejemplos 30 10 * * 1 /usr/bin/who >> /home/prueba.txt Ejecuta la orden who todos los lunes a las 10:30 y guarda la salida en el fichero prueba.txt
Cron - Para especificar dos o mĂĄs valores en cada variable, estas deben estar separadas por comas, siguiendo con el ejemplo anterior: 0,30 * * * 1 /usr/bin/who >> /home/prueba.txt Ejecuta la orden who todos los lunes cada media hora y guarda la salida en el fichero prueba.txt
Si queremos que se ejecute cada 15 minutos serĂa 0,15,30,45 * * * * /usr/bin/who >> /home/prueba.txt */15 * * * * /usr/bin/who >> /home/prueba.txt
o
Cron Este otro es para programar el apagado del PC. En este caso todos los sรกbados a las 21.30 30 21 * * 6 /sbin/shutdown -h now
Cron Parametros de crontab Editar crontab de un usuario en particular
crontab [ -u usuario ] fichero crontab [ -u usuario ] { -l | -r | -e }
La opciรณn -u se utiliza para indicar el crontab de usuario que queremos administrar. Sรณlo root podrรก usar la orden crontab con esta opciรณn. La opciรณn -e se utiliza para editarlo
Cron Definición de horarios predefinidos Hay varios valores predefinidos que se pueden utilizar para sustituir la
expresión CRON. Entrada
Descripción
Equivale A
@yearly
Se ejecuta una vez al año
0011*
@annually
(igual que @yearly)
0011*
@monthly
Se ejecuta una vez al mes
001**
@weekly
Se ejecuta una vez a la semana
00**0
@daily Se ejecuta una vez al día
00***
@midnight
(igual que @daily)
00***
@hourly
Se ejecuta una vez cada hora
0****
Cron También esta disponible @reboot, que permite a un trabajo ejecutarse una vez cada vez que el demonio cron se inicie, que eso típicamente coincidirá con el arranque del servidor. Puede ser útil si es necesario levantar un servidor o demonio bajo un usuario en particular o si el usuario no tiene permisos al archivo rc.d/init.d.
Cron El comando crontab nos permite añadir, eliminar o modificar los cron configurados para un usuario de una máquina Unix. El modo de uso es el siguiente: crontab -<opciones>, a continuación os muestro unos ejemplos: Editar los cron del usuario “alex”: crontab -e -u alex Listar los cron del usuario “alex”: crontab -l -u alex Eliminar los cron del usuario alex: crontab -r -u alex