Você está na página 1de 4

Ingeniería de Sistemas Alumno: Andrés Alvarez

SISTEMAS OPERATIVOS II Período Lectivo: 52

CARRERA: SISTEMAS ASIGNATURA: SISTEMAS OPERATIVOS II

PRACTICA: 04 TÍTULO: TAREAS AUTOMATIZADAS

OBJETIVO:
• Crear tareas en Linux que puedan ser ejecutadas automáticamente en un
momento establecido.

EJERCICIOS PLANTEADOS

Resolver los siguientes ejercicios planteados para tareas automatizadas.

1. Crear una tarea automatizada que consulte la memoria usada y consumida cada
24 horas. Guardar este dato en un registro (log) agregando los nuevos datos a la
información existente. Si la memoria utilizada supera el 80% liberar la cache.

Pasos
a) Crear el archivo de texto donde se almacenará la memoria usada,
consumida y ver si se libera la cache en caso de que cumpla la condición
una vez que se ejecute el proceso, este archivo se llamará registro.txt. Y
se almacenará en la carpeta temporal /tmp.
b) Vamos a la carpeta /usr/bin y crear el script con el nombre ejercicio1.sh
c) Dentro del script establecer el comando que realiza lo solicitado.

Script:
echo $(free -tm | tail -1 | awk ‘{
consu=$2-$4
print “Memoria usada: ”, $3” MB”
print “Memoria consumida”, consu “MB”
limite=$2*0.8
if ($3 >= limite){
system (“sync; echo 3 > /proc/sys/vm/drop_caches”)
print “El cache fue reiniciado”
}else{
Print “La memoria usada es menor al 80%”
}
}’
) >> /tmp/registro.txt

d) Dar permisos de ejecución al script.


Chmod +x /usr/bin/ejercicio1.sh
e) Verificar que funcione el script
./ejercicio1.sh
f) Vamos a etc/crontab
Crontab:
0 0 * * * root /usr/bin/ejercicio1.sh

2. Crear un directorio que contenga cinco archivos con extensión .au y cinco
archivos con extensión.pk (esta parte se debe realizar de forma manual).
Ingeniería de Sistemas Alumno: Andrés Alvarez
SISTEMAS OPERATIVOS II Período Lectivo: 52

Realizar un script que borre todos los archivos .au del directorio especificado.
Esta acción se debe ejecutar de lunes a viernes a las 8 de la mañana.

Pasos
a) Vamos a la carpeta /usr/bin y crear el script con el nombre ejercicio2.sh
b) Dentro del script establecer el comando que realiza lo solicitado.

Script:
echo $(find /root/ej2 -name ‘*’.au -delete)

c) Dar permisos de ejecución al script.


Chmod +x /usr/bin/ejercicio2.sh
d) Verificar que funcione el script
./ejercicio2.sh
e) Vamos a etc/crontab

Crontab:
0 8 * * 1-5 root /usr/bin/ejercicio2.sh

3. Crear una tarea automatizada que permita conocer el número de archivos y el


número de directorios que existen en /etc los días 15 y 28 de cada mes a las
12pm. Esta información y la lista de archivos serán guardadas en un fichero
/tmp/reporte04.txt donde primero se imprimen los valores solicitados, a
continuación, la lista de ficheros y finalmente la lista de directorios.

Pasos
a) Crear el archivo de texto donde se almacenará el número de archivos y
directorios y listarlos una vez que se ejecute el proceso, este archivo se
llamará reporte04.txt. Y se almacenará en la carpeta temporal /tmp.
b) Vamos a la carpeta /usr/bin y crear el script con el nombre ejercicio2.sh
c) Dentro del script establecer el comando que realiza lo solicitado.

Script:
dir=$(ls -l /etc | grep ^d | wc -l)
arch=$(ls -l | grep ^- | wc -l)
echo Archivos: $arch >> /tmp/reporte04.txt
echo Directorios: >> /tmp/reporte04.txt
echo Ficheros: >> /tmp/reporte04.txt
ls -l /etc | grep ^- >> /tmp/reporte04.txt
echo Directorios: >> /tmp/reporte04.txt
ls -l /etc | grep ^d >> /tmp/reporte04.txt

d) Dar permisos de ejecución al script.


Chmod +x /usr/bin/ejercicio3.sh
e) Verificar que funcione el script
./ejercicio3.sh
f) Vamos a etc/crontab

Crontab:
0 12 15,28 * * root /usr/bin/ejercicio3.sh
Ingeniería de Sistemas Alumno: Andrés Alvarez
SISTEMAS OPERATIVOS II Período Lectivo: 52

4. Realiza una tarea programada que compruebe que los ficheros de un directorio
concreto no cambian de tamaño ni se añaden o eliminan. La tarea notificará de
los posibles cambios en un fichero de log. La tarea se debe ejecutar cada 5
minutos.

Pasos
a) Crear el archivo de texto donde se guardará los cambios que se
produzcan en algún archivo una vez que se ejecute el proceso, este
archivo se llamará informacion.txt. Y se almacenará en la carpeta
temporal /tmp.
b) Vamos a la carpeta /usr/bin y crear el script con el nombre ejercicio4.sh
c) Dentro del script establecer el comando que realiza lo solicitado.

Script:
if [ $(find /root/ej2 -mmin -5) > 0 ]
then
for val in find /root/ej2/ -type d -mmin -5 -printf '%f\n'
do
echo Se ha modificado el directorio $val >> /tmp/información.txt
done
for arch in find /root/ej2/ -type f -mmin -5 -printf '%f\n'
do
echo Se ha modificado el archivo $arch >> /tmp/información.txt
done
else
echo No se han realizado cambios >> /tmp/información.txt

d) Dar permisos de ejecución al script.


Chmod +x /usr/bin/ejercicio4.sh
e) Verificar que funcione el script
./ejercicio4.sh
f) Vamos a etc/crontab

Crontab:
5 * * * * root /usr/bin/ejercicio4.sh

5. Crear una tarea automatizada que obtenga una copia de seguridad de una carpeta
con todos los archivos que posee, el primero de cada mes a las seis de la tarde.
Todas las copias se van a almacenar en un solo directorio ya establecido en
/tmp/respaldos, las copias tendrán como nombre la fecha y la hora de creación
de cada una.

Pasos
a) Crear la carpeta donde se guardará la copia de seguridad que se realiceu
na vez que se ejecute el proceso, esta carpeta se llamará respaldos. Y se
almacenará en la carpeta temporal /tmp.
b) Vamos a la carpeta /usr/bin y crear el script con el nombre ejercicio5.sh
c) Dentro del script establecer el comando que realiza lo solicitado.
Ingeniería de Sistemas Alumno: Andrés Alvarez
SISTEMAS OPERATIVOS II Período Lectivo: 52

Script:

#!/bin/bash
fecha=`date +%d-%m-%y-%H:%M`
echo $(mkdir /tmp/respaldos/$fecha)
echo $(rsync /root/ej2 /tmp/respaldos/$fecha -ahv)

d) Dar permisos de ejecución al script.


chmod +x /usr/bin/ejercicio5.sh
e) Verificar que funcione el script
./ejercicio5.sh
f) Vamos a etc/crontab

Crontab:
0 18 1 * * root /usr/bin/ejercicio5.sh

CONCLUSIONES:

1. El automatizar una tarea es muy útil, y para poder realizar todos los procesos se
tiene que estar como root (super usuario) y así evitar cualquier conflicto.
Después de crear un script con su respectiva tarea tenemos que darle permisos
de ejecución y a su vez probar que no tenga errores antes de ingresarlo al
crontab.
2. Pudimos observar que en el archivo crontab se puede agregar varios scripts para
ejecutar alguna tarea, gracias a este archivo podemos automatizar todas las
tareas que se quieran realizar. Crontab ejecutara todas las tareas que se
establezcan, siempre respetando la fecha y hora que se haya fijado a cada script.

REFERENCIAS:

• Eneko Amieva. Crontab y cómo automatizar tareas en Linux:


https://enekoamieva.com/crontab-y-como-automatizar-tareas-en-linux/
• Luis Armando Medina. Comandos Linux rsync:
https://www.comoinstalarlinux.com/comandos-linux-rsync/
• . Working with Arrays in Linux Shell Scripting – Part 8 Copias de seguridad
(backup) en Linux:
http://www.estrellateyarde.org/seguridad/copias-de-seguridad-backup-en-
linux