Está en la página 1de 27

Administración Local

Programación Shell

Tema Desarrollado por Ing. Andrea Muñoz

Actualmente los sistemas operativos basados un Unix, es decir la nuevas versiones de GNU/Linux, han
evolucionado durante los últimos años para convertirse en sistemas operativos que gozan de gran
popularidad, tales como Ubuntu, Linux Mint, Debian, Canaima, entre otros.

Entre las fortalezas de este tipo de sistemas, que podemos mencionar, está su gran colección de
programas o aplicaciones, los comandos que permiten controlar todo, desde la cantidad de líneas en un
archivo, el envío de correo electrónico, desplegar un calendario del mes y año que el usuario
establezca, etc. La principal fortaleza de este tipo de sistemas consiste en la facilidad con la que estos
comandos pueden ser combinados para realizar funciones mas sofisticadas.

Con el fin de proveer una interfaz consistente y fácil para que el usuario interactuara con el sistema
operativo Unix/Linux se desabolló el shell

El Interprete de comandos Shell

El shell, terminal o concha, es simplemente un programa que permite una interfaz entre el usuario y
el núcleo o kernel del sistema GNU/Linux . Este programa permite a los usuarios darle ordenes al
sistema por medio de la interpretación de comandos o instrucciones que se introducen en la línea de
comandos o en archivos de tipo shell scripts. Un shell script no es mas que un programa escrito en
lenguaje shell.

Se puede decir que el shell es la “cara visible” del sistema, de que dispone el usuario. Por ejemplo
durante el proceso de arranque del sistema, es posible visualizar este tipo de interfaz en diversos modos
dependiendo de como este configurada, es decir, se puede ver el proceso de arranque del sistema en
modo texto o en modo gráfico, ejemplos de estos dos modos, están presentes en los sistemas Debian y
Canaima.

Nos damos cuenta cuando estamos en un shell, terminal o interprete de comandos, porque
normalmente se despliega su símbolo de espera "$" o "#", que luego son ejecutados por el sistema. La
figura 1 ilustra esta situación.

1
Administración Local

Figura 1. Vista de un terminal de usuario

Los simbolos “$” o “#” representan el prompt de cara al usuario normal o usuario administrador o root
respectivamente, indicando que puede introducir una línea de comandos. Después de introducirla el
shell pone los procesos necesarios en acción para ejecutar la acción solicitada mediante una serie de
fases:
• Leer e interpretar los comandos ingresados
• Evaluar los caracteres comodín tales como: $ * ? |
• Gestionar las redirecciones de E/S, los pipes o entubamientos y procesos en segundo plano
(background)
• Manejar señales
• Preparar la ejecución de programas

En concreto la línea de comando consiste en ejecutar comandos del sistema, o shell scripts.

El Shell Script

Un shell script o mas comúnmente scipt, es un archivo o fichero de texto que contiene una serie de
instrucciones que se pueden ejecutar en la línea de comando. Dicho de otro modo el shell o interprete
de comandos lee, linea a línea las instrucciones que están contenidas en el archivo.

Para que el script pueda ser ejecutado por la línea de comandos, el archivo que lo contiene debe tener
permisos de ejecución.

Para el administrador, los shell scripts son muy importantes básicamente por dos razones:

2
Administración Local

1. La configuración del sistema y de la mayoría de los servicios proporcionados se llevan a cabo


por medio de herramientas proporcionadas en forma de shell scripts
2. La forma principal para automatizar los procesos de administración es por medio de la creación
de shell scripts por parte del administrador

Todos los programas que se invocan por medio de un shell poseen tres archivos predefinidos,
especificados por los correspondientes descriptores de archivos (file handles). Estos archivos son :

1. standard input (entrada estándar): es la que en general, se ingresa por medio del terminal o
consola; utiliza el descriptor número 0
2. standard output (salida estándar): en general, se lleva a cabo por la pantalla del terminal; utiliza
el descriptor 1.
3. standard error (salida estándar de errores): éste en general se le asigna a la pantalla del terminal;
utiliza el descriptor 2

Lo anterior destaca el hecho de que cualquier programa ejecutado desde el shell tendrá la entrada
asociada al teclado del terminal, su salida hacia la pantalla y, en el caso de producirse errores, también
los envía a la pantalla .

Esta condición puede ser modificada puesto que el shell permite, así mismo, mecanismos que permiten
alterar las condiciones ya descritas de la siguiente manera:

1. Redirección: el shell de GNU/Linux trata los dispositivos de E/S y los archivos, como
archivos propiamente tal, esta condición implica que desde el punto de vista del usuario, se
pueden redefinir los descriptores de los archivos para que los flujos de datos de un descriptor
vayan a cualquier otro descriptor; a esto se le conoce como redirección.
2. Tuberías (pipes): las tuberías permiten que la salida estándar de un programa pueda ser
utilizada como entrada estándar para otro programa. Varios programas pueden ser conectados
entre sí mediante éstas para formar lo que se denomina un pipeline.
3. Concurrencia de programas de usuario: los usuarios pueden ejecutar varios programas al
mismo tiempo, indicando que su ejecución se va a producir en segundo plano (background), en
términos opuestos a primer plano (o foreground), donde se tiene un control exclusivo de
pantalla. Otro uso consiste en permitir trabajos largos en segundo plano, permitiendo al usuario,
interactuar con el shell con otros programas en primer plano.

Veamos algunos ejemplos:

1. Redirección

• $ ls -l > file.txt
la instrucción anterior envía la salida del comando ls -l a un archivo llamado file.txt.
◦ Pero que ocurre si el archivo file.txt existe antes de ejecutar el comando anterior? En ese

3
Administración Local

caso la instrucción borra o sobre escribe el archivo.


• Para evitar esta condición utilizamos el símbolo >> que agrega contenido al archivo al final del
mismo.
• $ ls /home >> file.txt
◦ puede visualizar el contenido de su archivo utilizando la instrucción: $ cat file.txt
• $ sort < file.txt esta instrucción redirecciona la entrada estándar, es decir lee los datos del
archivo file.txt y ordena la salida.

2. Tuberías
• $ cat file.txt | sort
◦ la instrucción anterior permite visualizar el contenido del archivo file.txt y la salida de ese
comando se convierte en la entrada del comando sort, es decir, se verá la salida ordenada.
• Observe en su terminal la salida del siguiente comando
◦ $ls -l /etc | grep ^d | sort | more

3. Concurrencia
• Para ejecutar un programa en segundo plano basta con poner el símbolo & al final del comando
◦ $ gedit &
▪ esta instrucción permite abrir el editor de textos gedit y a la vez continuar utilizando lo
mismo terminal para otras tareas.

Shells Disponibles

Es importante destacar que el shell no es mas que una interfaz que permite interactuar con el kernel del
sistema, y es además independiente del mismo, motivo por el cual, es posible disponer de varios shell
en el sistema.

Entre los shell mas comúnmente utilizados, encontramos:


• El shell Bourne (sh): Creado por S. Bourne. El prompt del sistema es $. Es el shell estándar y
el que se configura en casi todos los sistemas UNIX/Linux.
• El shell Bash (bash): Fue creado para usarlo en el proyecto GNU. BASH, por lo tanto, es un
shell o intérprete de comandos GNU que incorpora la mayoría de distribuciones de Linux. Es
compatible con el shell sh. Su prompt del sistema es nombre_usuario@nombre_equipo.
• El shell Korn (ksh): este es un superconjunto del Bourne, ya que se mantiene cierta
compatibilidad, escrito en AT&T por David Korn a mediados de los ochenta, consiste en una

4
Administración Local

mezcla de las funcionalidades del Bourne y del C, con ciertas mejoras. El prompt por defecto es
el $
• El shell C (csh): tiene unos cuantos agregados interesantes al Bourne, como un histórico de
comandos, alias, aritmética desde la línea de comandos, completa los nombres de los archivos y
control de trabajos en segundo plano. El prompt por defecto para los usuarios es ‘%’, una
ventaja de los scripts en C shell es que, como su nombre indica, su sintaxis se basa en el
lenguaje C

Aspectos comunes a los shell:

• Todos permiten la escritura de shell scripts que son luego interpretados al ser ejecutados.
• Los usuarios del sistema cuentan con un shell preconfigurado asociado a ellos. Esta información
se proporciona al crear las cuentas de los usuarios y la misma queda registrada en el archivo de
password /etc/passwd. En GNU/Linux el shell preconfigurado es bash.
• Se pueden escribir scripts en cualquier shell, pero se debe ajustar a la sintaxis de cada uno, que
es normalmente diferente. La sintaxis de las construcciones, así como los comandos internos, se
encuentran bien documentados en la página man de cada shell.

Ejemplo: Crear su primer scipt

• Abra un terminal y ejecute: gedit saludo.sh


• Agregue las líneas que se indican a continuación

◦ La primera línea indica al sistema, el tipo de shell a utilizar y la segunda línea imprime
por pantalla el saludo “hola mundo”

5
Administración Local

• Para asignar permisos de ejecución a su script, ejecute en el terminal la siguiente instrucción:


chmod 755 saludo.sh
• Usted puede ejecutar un script de dos maneras:
◦ Ejecución directa desde la línea de comandos: ./saludo.sh
◦ Ejecución mediante el shell llamando al shell explícitamente: bash saludo.sh
• Observe la salida del terminal

Figura 2. Salida del script saludo.sh

• Ejecute en el terminal nuevamente

• y luego el siguiente comando

6
Administración Local

• edite su archivo y observe los cambios

• ejecute nuevamente su script y observe los cambios


◦ recuerde que puede ejecutarlo de la siguiente manera: ./saludo.sh o tambien bash saludo.sh

Variables y Argumentos

En bash el uso de variables es muy sencillo, simplemente se asigna valor a una variable de la siguiente
manera VARIABLE=valor, pero para utilizar la variable se antepone el signo $ de la siguiente manera:
$VARIABLE

7
Administración Local

ejemplo de esto:

NOMBRE=”Andrea Munoz”
echo “Bienvenido $NOMBRE”
su salida sería

Bash cuenta con una serie de variables de entorno que podemos utilizar en nuestros scripts.
• $HOME : Contiene la ruta del directorio home del usuario.
• $PATH : Contiene los directorios donde se encuentran los ejecutables
• $TERM : nombre del terminal (Config Terminal)
• $BASH : Ruta del interprete bash
• $PWD : Directorio Actual

Operaciones Aritméticas

En bash hay varias maneras de realizar operaciones aritméticas, en este manual se presenta la forma
con el comando expr.
La sintaxis de este comando es la siguiente: ARG1 expresión ARG2.
Donde Operación puede ser:
+ Suma
- Resta
/ División
\* Multiplicación

8
Administración Local

Consideraciones:
• En la multiplicación se debe anteponer la barra invertida (\) al signo asterisco (*) para que bash
no realice sustitución de nombre.
• La salida del comando expr es enviado a la salida estándar (pantalla)
• Las variables en bash son todas cadenas de caracteres por lo que debemos tener cuidado de no
pasarle como argumentos a expr variables con letras cuando estamos realizando una operación
aritmética.
• Entre cada argumento y la operación debe haber un espacio, para que expr pueda distinguir los
argumentos y su operando.

Ejemplos
• $ expr 10 + 10
20

• $ x=10
$ y=2
$ expr $x / $y
5
Otra forma de evaluar las expresiones:
• $ resta=`expr $x - $y`
• $ mult=`expr $x \* $y`
• $ echo "$x menos $y vale $resta"
10 menos 2 vale 8
• $ echo "La multiplicación de $x y $y es $mult"
La multiplicación de 10 y 2 es 20

• ¿ Como hacemos para calcular por ejemplo: ( 5 + 3 ) / 2 ?


Primero calculamos la suma y luego la división.
$ suma=`expr 5 + 3`
$ expr $suma / 2
4

9
Administración Local

Estructuras de Control

1. La sentencia if-then-else-fi.

bash tiene la ventaja que nos permite saber si la ejecución de una instrucción ha sido exitosa, esta
condición se puede visualizar en la variable $?. La ejecución exitosa de un comando hace que la
variable $? tenga el valor de cero (0) y si se produce algun error, la salida de esa misma variable será de
uno (1).
Ejemplo:
• $ expr a +b
expr: argumento no entero
$ echo $?
2

La salida de la variable $? con un valor diferente de 0 indica que hay un error en la ejecución del
comando.
• $ expr 2 + 2
4
$ echo $?
0
La salida de la variable $? con un valor igual a 0 indica que el comando se ejecutó exitosamente.

Esta situación se puede aplicar a nuestro script, que también podrá devolver valores mediante el
comando exit numero, donde numero es el valor que retornara. Si la ejecución del script fue exitosa
debemos finalizarlo con exit 0 y sino con exit y un numero distinto de cero . Esta es una de las muchas
maneras de ejecutar un script.

La sintaxis de la sentencia if tiene la forma:

if comando1
then
comando2
comando3

10
Administración Local

...
...
...
else
comando4
comando5
...
...
fi

El comando1 siempre se ejecuta, y puede suceder los siguiente:


• Si comando1 finaliza exitosamente, es decir se cumple la condición, se ejecutan las
instrucciones que se encuentran entre then y else (comando2, comando3....)
• Si comando 1 no finaliza exitosamente, es decir, no se cumple la condición, se ejecutan las
instrucciones que se encuentran entre else y fi.

Ejemplo: verificar si un usuario existe en el sistema

• En su terminal como usuario escriba: gedit usuario.sh y escriba las siguientes líneas

11
Administración Local

• Agregue permiso de ejecución al archivo: chmod 755 usuario.sh


• Ejecute el script: ./usuario.sh y pruebe su script

1.1 El comando test

El comando test evalúa una expresión y retorna un valor que será cero (0) si la expresión es verdadera o
distinto de cero si la expresión es falsa.
Esta utilidad en conjunto con la sentencia if permite evaluar distintos tipos de expresiones. La sintaxis
es la siguiente: test EXPRESION
Dentro de ese contextp, EXPRESION, puede ser una evaluación de: cadenas de caracteres, números
enteros, archivos (evaluando permisos y la existencia del mismo) o bien, operadores lógicos que llevan
a realizar una combinación de condiciones.

➢ Como evaluar cadenas de caracteres

12
Administración Local

Para mas detalles es importante remitirse al manual del comando ejecutoriando man test.
-z CADENA verdadero si la longitud de la cadena es cero (nula)
-n CADENA verdadero si la longitud de la cadena es distinta de cero (no nula)

CADENA1 = CADENA2 verdadero si las cadenas son iguales


CADENA1 != CADENA2 verdadero si las cadenas son distintas

Ejemplos

• $ STR=”abcd”
$ echo $?
0
• $ test “$STR” != abcd
echo $?
0

1.2. Operadores que podemos utilizar

• Comparaciones entre números:


◦ -eq : es igual a, también puede usar =
◦ -ne =: no es igual
◦ -gt : es mayor que
◦ -ge: es mayor e igual que
◦ -lt : es menor que
◦ -le: es menor o igual que
◦ <,>,<=,>=, = : los que conocemos
• Comparación entre Cadenas:
◦ =, ==: es igual a
◦ !=: no es igual a
◦ <: menor que
◦ >: mayor que
◦ -z: la cadena esta vacía

13
Administración Local

◦ -n: la cadena no esta vacía


• Operadores Lógicos:
◦ -a: AND lógico
◦ -o: OR lógico

Actividad: escriba un script que le pregunte su nombre y su edad, además debe identificar de acuerdo a
la edad si la persona es mayor de edad o no

2. Estructuras for

El for simplemente itera en una lista. La sintaxis de esta construcción es la siguiente:

for nombre [in lista]


do
comandos que pueden utilizar $nombre
done

Ejemplo: Se quiere crear una estructura for que itere en una lista de números, veremos dos maneras
de hacerlo

Añadir permisos de ejecución al archivo: $ chmod 755 iteracion1.sh

14
Administración Local

Ejecutar el script: $./iteracion1.sh

La salida del comando es la siguiente:

Existe otra utilidad que permite generar listas.

Actividad: Escriba en un archivo el siguiente código

for i in 'seq 0 9'; do


echo $i
done
Asigne a su archivo permisos de ejecución y observe la salida.

3. Estructura while

Este comando implementa una estructura repetitiva en la cual el conjunto de comandos se ejecuta
mientras se mantenga válida una condición (while = mientras). La condición se examina al principio y
luego cada vez que se completa la secuencia de comandos. Si la condición es falsa desde la primera
vez, los comandos no se ejecutan nunca. La sintaxis

while condición
do comandos
done

Ejemplo 1: se requiere un script que sea capaz de crear archivos de 1 a 9, los liste y luego los
borre.

15
Administración Local

Al ejecutar el script la salida es la siguiente:

16
Administración Local

Ejemplo 2: Script que indica presionar una tecla para salir

Al ejecutar el script la salida queda asi

4. Estructura until

Esta instrucción implementa una estructura repetitiva en la cual el conjunto de comandos se ejecuta
hasta que se cumpla una condición. La sintaxis

until condicion; do
comandos
done

17
Administración Local

Ejemplo 2: El mismo ejemplo anterior de crear, listar y borrar archivos

Agregando permisos de ejecución y corriendo el script la salida es como


sigue:

18
Administración Local

5. Estructura case

Este tipo de estructura, permite implementar alternativas o "casos"; elige


entre múltiples secuencias de comandos, la secuencia a ejecutar. La elección
se realiza encontrando el primer patrón con el que coincida una cadena de
caracteres. Su sintaxis es

case $CADENA in
patrón1)
comandos1;;
patrón2)
comandos2;;
...
*)
comandosN;;
esac

El patrón * que se se coloca al final; compara cualquier cadena, y permite ejecutar comandosN
cuando ninguna de las opciones anteriores fue satisfecha.

Ejemplo 1
Crear un script que dada una lista de números y un patrón de comparación, presente a la salida
el valor del patrón

19
Administración Local

Ejecutando el script la salida sería la siguiente:

20
Administración Local

Automatización de Tareas en Sistemas GNU/Linux

Introducción

En la actualidad cualquier en sistema operativo, se dispone de herramientas que permiten realizar, con
cierta periodicidad, tareas (algunas de ellas internas del Sistema Operativo, otras definidas por el
administrador, e incluso algunas definidas por un usuario -con los privilegios adecuados-). La
necesidad de este tipo de herramientas, obedece a la necesidad de garantizar el adecuado
funcionamiento interno del sistema operativo, así como también el aceptable funcionamiento del
sistema.
Uno de los ejemplos mas notables de este tipo de programas,corresponde a un sistema antivirus, que
desde que es instalado permite configurar la actualización del software y la revisión del sistema
semanalmente (es decir, es una tarea programada de manera semanal).

Veamos algunos casos en los que resulta útil la automatización de una tarea:
• Es típico que, para un óptimo rendimiento, el responsable del sistema informático deba realizar
actividades de gestión periódicas, así como algunas de control del mismo (por ejemplo, revisar
diariamente el grado de ocupación de los discos, testear cada 30 minutos la ocupación del
procesador y poder generar un aviso en caso de ocupación de más de un 70% ).
• Teniendo en cuenta lo anterior al administrador del sistema, puede resultarle práctico definir
una tarea que borre de forma periódica los archivos temporales (por ejemplo, el directorio /tmp),
así como que se realicen copias de seguridad cada día de diversos directorios de datos.
• También resulta útil (y en algunos casos obligado como parte de la propia política de empresa)
realizar algún tipo de informe mensual sobre el funcionamiento del sistema (sobre todo en caso
de servidores).
• Dentro de la tareas programas en el sistema, se debe considerar el apagado del equipo de
acuerdo al horario de trabajo.
• Se puede programar cualquier tarea periódica de acuerdo a las necesidades del usuario, como la
actualización del equipo o la descarga programada de información en horarios de menor tráfico
de datos.

Para programar tareas en GNU/Linux existe un servicio llamado cron

Que es cron?

21
Administración Local

El nombre cron viene del griego chronos que significa “tiempo”. En el sistema operativo GNU/Unix,
cron es un administrador regular de procesos en segundo plano (demonio) que ejecuta procesos o script
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 archivo crontab
Como Funciona

De manera general se puede decir, que el demonio cron inicia de /etc/rc.d/ o /etc/init.d dependiendo de
la distribución. Cron se ejecuta en el background, revisa cada minuto la tabla de tareas crontab en
/etc/crontab o en /var/spool/cron en búsqueda de tareas que se deban cumplir. Como usuario podemos
agregar comandos o scripts con tareas a cron para automatizar algunos procesos. Esto es útil por
ejemplo para automatizar la actualización de un sistema o un buen sistema de respaldos.

Que es Crontab?

Crontab es un archivo de texto que guarda una lista de comandos a ejecutar en un tiempo especificado
por el usuario. Crontab verificará la fecha y hora en que se debe ejecutar el script o el comando, los
permisos de ejecución, esta tarea se ejecuta en segundo plano (background). Cada usuario puede tener
su propio archivo crontab, de hecho el /etc/crontab se asume que es el archivo crontab del usuario root,
cuando los usuarios normales (e incluso root) desean generar su propio archivo de crontab, disponen
del comando crontab.

Instalación de Cron en sus Sistema

Para ver si cron esta instalado ejecute como superusuario : # aptitude search cron
Para instalar cron en su sistema ejecute como superusuario: # aptitude install cron

Crontab

Para entender cómo se deben programar las tareas, para que sean ejecutadas, es necesario entender el
formato del archivo de configuración (/etc/crontab). Este archivo está estructurado por líneas, cada una
de las cuales contiene una tarea programada, según el siguiente formato:

# m h dom mon dow command (vista en Debian y Canaima)

Cada uno de estos campos tiene un rango de utilización, dependiendo de su naturaleza:

22
Administración Local

• m: minuto, puede ser definido entre [0-59],


• h: hora, puede ser definido entre [00-23],
• dom: dia del mes, entre [1-31],
• mon: mes del año, entre los valores [1-12],
• dow: día de la semana, entre [0-7], asumiendo el 0 como inicio de la semana en domingo, y el
valor 7 también como domingo (el 1 será el lunes, 2 martes...),
• command: corresponde al comando o script que se ejecutará.

Existen símbolos especiales para los cinco primeros campos, que indicarían aspectos genéricos:
* : indica cualquier valor
, : actúa como separador de una lista de valores
# : indica que lo que acompaña es un comentario (no se ejecutará)
- : sirve para indicar un rango de valores
/ : sirve para indicar un paso de valor (por ejemplo, en el campo mes si se indica */3 se está
detallando que la tarea se realizará cada tres meses).

Ejemplos de uso de crontab : (se omite el comando que se ejecutaría siguiendo las instrucciones
dadas por los campos anteriores a él ):
• 01**** Se ejecuta al minuto 1 de cada hora de todos los días
• 15 8 * * * A las 8:15 a.m. de cada día
• 15 20 * * * A las 8:15 p.m. de cada día
• 00 5 * * 0 A las 5 a.m. todos los domingos
• *5**0 Cada minuto de 5:00a.m. a 5:59a.m. todos los domingos
• 45 19 1 * * A las 7:45 p.m. del primero de cada mes
• 01 * 20 7 * Al minuto 1 de cada hora del 20 de julio
• 10 1 * 12 1 A la 1:10 a.m. todos los lunes de diciembre
• 00 12 16 * 3 A las 12h de los días 16 de cada mes y que sea Miércoles
• 30 9 20 7 4 A las 9:30 a.m. del dia 20 de julio y que sea jueves
• 30 9 20 7 * A las 9:30 a.m. del 20 de julio de cualquier día de la semana
• 20 * * * 6 Al minuto 20 de cada hora de los sábados
• 20 * * 1 6 Al minuto 20 de cada hora de los sábados de enero

23
Administración Local

• 59 11 * 1-3 1,2,3,4,5 A las 11:59 de lunes a viernes, de enero a marzo


• 10,30,50 * * * 1,3,5 En el minuto 10, 30 y 50 de todas las horas de los días lunes, miércoles y
viernes
• */15 10-14 * * * Cada quince minutos de las 10:00a.m. a las 2:00p.m.
• * 12 1-10/2 2,8 * Todos los minutos de las 12h, en los días 1,3,5,7 y 9 de febrero y agosto.
(El incremento en el tercer campo es de 2 y comienza a partir del 1)
• 0 */5 1-10,15,20-23 * 3 Cada 5 horas de los días 1 al 10, el día 15 y del día 20 al 23 de
cada mes y que el día sea miércoles
• 3/3 2/4 2 2 2 Cada 3 minutos empezando por el minuto 3 (3,6,9, etc.) de las horas 2,6,10, etc
(cada 4 horas empezando en la hora 2) del día 2 de febrero y que sea martes.

Sintaxis de crontab:

crontab [-l e r u] archivo

Significado de cada parámetro:


-l : muestra el fichero de configuración del usuario
-e: edita el fichero de configuración del usuario
-r: borra el fichero de configuración del usuario
-u usuario: especifica el usuario propietario de la tarea (normalmente, esta opción la usa el
usuario root para cambiar propietarios de tareas).

Hay varias maneras de utilizar un archivo con cron, a continuación se muestran algunas:

1) Ejemplo de como cargar tareas en crontab

1.- Generar un archivo de nombre: ejemplo.cron de una línea (recordar que se ejecutan las tareas por
líneas mediante un shell) con el contenido:
0 9 4 07 * echo "Vacaciones!!!!!! :-D"
2.- Ejecutar la carga del fichero de planificación:
$ crontab ejemplo.cron
3.- Para estar seguro que se ha añadido a la lista de tareas, mirar la lista de las mismas:

24
Administración Local

$ crontab -l

Donde debería devolver el contenido del archivo. En el ejemplo, se mostraría el mensaje (echo) todos
los 4 de Julio, a las 7 de la mañana.

Otra manera de programar la misma tarea, consiste en ejecutar crontab -e y poner las instrucciones
directamente en el archivo crontab.

2) Ejemplo: Un administrador de red puede programar su sistema para realizar un respaldo de


todas las cuentas de usuario a las 5:00 am todos los lunes de cada mes. Para ello ejecute como
superusuario crontab -e :

0 5 * * 1 tar -zcf /var/backups/home.tgz /home/

3) Ejemplo: Vamos a automatizar el proceso de actualización del sistema, para lo cual crearemos el
siguiente script :

• Agregue permiso de ejecución a su script: chmod 755 actualiza.sh


• Agregar la tarea a crontab, como superusuario ejecute crontab -e

25
Administración Local

10 15 * * * /home/usuario/actualiza.sh

Con esta instrucción su sistema se actualizará todos los días a las 10:15 (la ejecución se realiza
en segundo plano)

4) Ejemplo: Programar una tarea que apague su computadora cada noche a las 10:30 pm

Como superusuario ejecute crontab -e


30 22 * * * /sbin/shutdown -h now

26
Administración Local

Páginas web de referencia

http://sololinex.wordpress.com/2009/03/11/ejecutar-un-comando-en-segundo-plano/

http://www.jdbaldoma.net/2012/05/3-formas-de-ejecutar-comandos-en.html

http://lesthack.com.mx/2009/05/31/programacion-en-bash-linux-iv-estructuras-for-while-until/

http://usemoslinux.blogspot.com/2010/11/cron-crontab-explicados.html

http://linux.ciberaula.com/articulo/linux_cron/

http://hatteras.wordpress.com/2010/12/02/crontab-programarautomatizar-tareas/

27

También podría gustarte