Programación en Shell Profesor: Héctor Abarca A..
-
Upload
pablo-ramirez-villanueva -
Category
Documents
-
view
232 -
download
0
Transcript of Programación en Shell Profesor: Héctor Abarca A..
![Page 1: Programación en Shell Profesor: Héctor Abarca A..](https://reader035.fdocument.pub/reader035/viewer/2022062305/5665b4ca1a28abb57c93b33c/html5/thumbnails/1.jpg)
Programación en Shell
Profesor: Héctor Abarca A.
![Page 2: Programación en Shell Profesor: Héctor Abarca A..](https://reader035.fdocument.pub/reader035/viewer/2022062305/5665b4ca1a28abb57c93b33c/html5/thumbnails/2.jpg)
Programación de Sistema Operativo Héctor Abarca A.
Los comandos internos de Bash
Bash busca los comandos a ejecutar en los directorios indicados en la variable de entorno $PATH, pero además existen una serie de comandos que no corresponden a archivos del disco duro, sino que son internos a bash y siempre están cargados en su memoria.
Se puede obtener una lista completa de estos comandos con su descripción ejecutando:$ man builtin
![Page 3: Programación en Shell Profesor: Héctor Abarca A..](https://reader035.fdocument.pub/reader035/viewer/2022062305/5665b4ca1a28abb57c93b33c/html5/thumbnails/3.jpg)
Programación de Sistema Operativo Héctor Abarca A.
Analizando Shells
export TERM=vt100
alias psa=“ps –aux|more”
cat <hola.txt> chao.txt
kill -9 14532 > /dev/null 2>$1
!ps
kill %1
mkdir test{1,2,3,4}
ls –l [a-d]*
![Page 4: Programación en Shell Profesor: Héctor Abarca A..](https://reader035.fdocument.pub/reader035/viewer/2022062305/5665b4ca1a28abb57c93b33c/html5/thumbnails/4.jpg)
Programación de Sistema Operativo Héctor Abarca A.
Programación en Shell
Primera línea:#! Intérprete
Ejemplo:#!/bin/bash
echo Hola!!!
![Page 5: Programación en Shell Profesor: Héctor Abarca A..](https://reader035.fdocument.pub/reader035/viewer/2022062305/5665b4ca1a28abb57c93b33c/html5/thumbnails/5.jpg)
Programación de Sistema Operativo Héctor Abarca A.
Ejercicio uno.sh
![Page 6: Programación en Shell Profesor: Héctor Abarca A..](https://reader035.fdocument.pub/reader035/viewer/2022062305/5665b4ca1a28abb57c93b33c/html5/thumbnails/6.jpg)
Programación de Sistema Operativo Héctor Abarca A.
¿Cómo ejecutar un script?
El script debe ser interpretado:$ /bin/sh ./uno.sh ó
$ . ./uno.sh ó
$ sh –x ./uno.sh
O puede ser convertido en ejecutable$ chmod +x uno.sh
$ chmod 755 uno.sh
$ ./uno.sh
![Page 7: Programación en Shell Profesor: Héctor Abarca A..](https://reader035.fdocument.pub/reader035/viewer/2022062305/5665b4ca1a28abb57c93b33c/html5/thumbnails/7.jpg)
Programación de Sistema Operativo Héctor Abarca A.
Uso de variables. dos.sh
![Page 8: Programación en Shell Profesor: Héctor Abarca A..](https://reader035.fdocument.pub/reader035/viewer/2022062305/5665b4ca1a28abb57c93b33c/html5/thumbnails/8.jpg)
Programación de Sistema Operativo Héctor Abarca A.
Paso de argumentos. tres.sh
Ejecutar este script como:./tres a bc d
![Page 9: Programación en Shell Profesor: Héctor Abarca A..](https://reader035.fdocument.pub/reader035/viewer/2022062305/5665b4ca1a28abb57c93b33c/html5/thumbnails/9.jpg)
Programación de Sistema Operativo Héctor Abarca A.
Test o [ ]
Equivale a…
![Page 10: Programación en Shell Profesor: Héctor Abarca A..](https://reader035.fdocument.pub/reader035/viewer/2022062305/5665b4ca1a28abb57c93b33c/html5/thumbnails/10.jpg)
Programación de Sistema Operativo Héctor Abarca A.
Más test… if…
![Page 11: Programación en Shell Profesor: Héctor Abarca A..](https://reader035.fdocument.pub/reader035/viewer/2022062305/5665b4ca1a28abb57c93b33c/html5/thumbnails/11.jpg)
Programación de Sistema Operativo Héctor Abarca A.
… y más test…
![Page 12: Programación en Shell Profesor: Héctor Abarca A..](https://reader035.fdocument.pub/reader035/viewer/2022062305/5665b4ca1a28abb57c93b33c/html5/thumbnails/12.jpg)
Programación de Sistema Operativo Héctor Abarca A.
If…then. cuatro.sh
![Page 13: Programación en Shell Profesor: Héctor Abarca A..](https://reader035.fdocument.pub/reader035/viewer/2022062305/5665b4ca1a28abb57c93b33c/html5/thumbnails/13.jpg)
Programación de Sistema Operativo Héctor Abarca A.
For… cinco.sh y seis.sh
![Page 14: Programación en Shell Profesor: Héctor Abarca A..](https://reader035.fdocument.pub/reader035/viewer/2022062305/5665b4ca1a28abb57c93b33c/html5/thumbnails/14.jpg)
Programación de Sistema Operativo Héctor Abarca A.
While… siete.sh
![Page 15: Programación en Shell Profesor: Héctor Abarca A..](https://reader035.fdocument.pub/reader035/viewer/2022062305/5665b4ca1a28abb57c93b33c/html5/thumbnails/15.jpg)
Programación de Sistema Operativo Héctor Abarca A.
Until… ocho.sh
$ . ./ocho.sh usuario
![Page 16: Programación en Shell Profesor: Héctor Abarca A..](https://reader035.fdocument.pub/reader035/viewer/2022062305/5665b4ca1a28abb57c93b33c/html5/thumbnails/16.jpg)
Programación de Sistema Operativo Héctor Abarca A.
Case… nueve.sh
![Page 17: Programación en Shell Profesor: Héctor Abarca A..](https://reader035.fdocument.pub/reader035/viewer/2022062305/5665b4ca1a28abb57c93b33c/html5/thumbnails/17.jpg)
Programación de Sistema Operativo Héctor Abarca A.
Funciones… diez.sh
![Page 18: Programación en Shell Profesor: Héctor Abarca A..](https://reader035.fdocument.pub/reader035/viewer/2022062305/5665b4ca1a28abb57c93b33c/html5/thumbnails/18.jpg)
Programación de Sistema Operativo Héctor Abarca A.
Varios
x =‘expr $x + 1’
printf “%s %d\t%s” “Hola” 15 veces
set $(date)
echo El mes es $2
![Page 19: Programación en Shell Profesor: Héctor Abarca A..](https://reader035.fdocument.pub/reader035/viewer/2022062305/5665b4ca1a28abb57c93b33c/html5/thumbnails/19.jpg)
Programación de Sistema Operativo Héctor Abarca A.
Debugging (búsqueda de los “bugs”)
sh –n <script>– Revisa errores sintaxis, no ejecuta los
comandos.sh –v <script>
– Imprime a pantalla los comandos antes de ejecutarlos
sh –x– Imprime a pantalla los comandos después de
ejecutarlos.
![Page 20: Programación en Shell Profesor: Héctor Abarca A..](https://reader035.fdocument.pub/reader035/viewer/2022062305/5665b4ca1a28abb57c93b33c/html5/thumbnails/20.jpg)
Programación de Sistema Operativo Héctor Abarca A.
awk
Awk es un lenguaje de procesamiento de datos dado un patrón de búsqueda.
$ cat /etc/passwd | awk –F: ‘{printf(“El usuario %s posee el directorio %s\n”, $1, $6)}’
$ ls –l |grep drwx |awk ‘{printf(“directorio = %s \n”, $9
![Page 21: Programación en Shell Profesor: Héctor Abarca A..](https://reader035.fdocument.pub/reader035/viewer/2022062305/5665b4ca1a28abb57c93b33c/html5/thumbnails/21.jpg)
Programación de Sistema Operativo Héctor Abarca A.
Ejercicios
Escriba un script que dado el “uid” indique cuantas veces está logeado (who, grep,wc)
Escriba un script llamado “lslink” que sólo liste los archivos tipo link.
Ordene alfabéticamente el listado de usuarios de su máquina linux (sort, /etc/passwd)
![Page 22: Programación en Shell Profesor: Héctor Abarca A..](https://reader035.fdocument.pub/reader035/viewer/2022062305/5665b4ca1a28abb57c93b33c/html5/thumbnails/22.jpg)
Automatización y Programación de tareas
Profesor: Héctor Abarca A
![Page 23: Programación en Shell Profesor: Héctor Abarca A..](https://reader035.fdocument.pub/reader035/viewer/2022062305/5665b4ca1a28abb57c93b33c/html5/thumbnails/23.jpg)
Programación de Sistema Operativo Héctor Abarca A.
Automatización y Programación de Tareas Necesidad de automatizar
– Tareas Rutinarias y repetitivas• Copias de Seguridad
• Comprobación de la Seguridad
• Eliminar archivos temporales
• Comprobar cuotas
• Etc…
![Page 24: Programación en Shell Profesor: Héctor Abarca A..](https://reader035.fdocument.pub/reader035/viewer/2022062305/5665b4ca1a28abb57c93b33c/html5/thumbnails/24.jpg)
Programación de Sistema Operativo Héctor Abarca A.
Automatización y Programación de Tareas Solución:
– Programación Temporal.• Permite:
– Ejecutar Tareas periódicamente
– Programar una tarea para ejecutarse fuera del horario de trabajo.
• No es necesario tener una sesión abierta
• Es necesario que el equipo esté encendido
• En unix se utilizan los comandos:» at
» cron
![Page 25: Programación en Shell Profesor: Héctor Abarca A..](https://reader035.fdocument.pub/reader035/viewer/2022062305/5665b4ca1a28abb57c93b33c/html5/thumbnails/25.jpg)
Programación de Sistema Operativo Héctor Abarca A.
Automatización y Programación de Tareas Comando at
– Programar una tarea para un momento concreto.
– Son ejecutadas por el demonio atd
– Funciona con colas de tareas
– Puede condicionarse la ejecución a la carga del sistema
– at programar una tarea
– atq consultar tareas
– atrm borrar tareas
![Page 26: Programación en Shell Profesor: Héctor Abarca A..](https://reader035.fdocument.pub/reader035/viewer/2022062305/5665b4ca1a28abb57c93b33c/html5/thumbnails/26.jpg)
Programación de Sistema Operativo Héctor Abarca A.
Automatización y Programación de Tareas Ejecución periódica cron
– Demonio del sistema crond• Consulta las tareas a ejecutar cada minuto
– Gestión de tareas con crontab• crontab –l listar tareas
• crontab –e editar tareas
• crontab –r borrar tareas
![Page 27: Programación en Shell Profesor: Héctor Abarca A..](https://reader035.fdocument.pub/reader035/viewer/2022062305/5665b4ca1a28abb57c93b33c/html5/thumbnails/27.jpg)
Programación de Sistema Operativo Héctor Abarca A.
Automatización y Programación de Tareas Ejecución periódica cron
– Entradas de la forma
min hora día mes día _ semana tarea
– Se admiten rangos, listas y *
– Ejemplos:
0 0 * * * * todos los días a las 0:00
45 12 * * * 1-5 de lunes a viernes a las 12:45
30 5 1,15 * * * a las 5:30 los días 1 y 15 de cada mes
![Page 28: Programación en Shell Profesor: Héctor Abarca A..](https://reader035.fdocument.pub/reader035/viewer/2022062305/5665b4ca1a28abb57c93b33c/html5/thumbnails/28.jpg)
Programación de Sistema Operativo Héctor Abarca A.
Automatización y Programación de Tareas Ejecución periódica cron
– Las tareas del sistema se almacenan en directorios especiales.
• /etc/cron.hourly ejecución cada hora
• /etc/cron.daily ejecución cada día
• /etc/cron.weekly ejecución cada semana
• /etc/cron.monthly ejecución cada mes
![Page 29: Programación en Shell Profesor: Héctor Abarca A..](https://reader035.fdocument.pub/reader035/viewer/2022062305/5665b4ca1a28abb57c93b33c/html5/thumbnails/29.jpg)
Programación de Sistema Operativo Héctor Abarca A.
Ejercicios
Cree un crontab que realice una copia de seguridad todos los lunes a las 2 de la mañana.
Cree un crontab que reinicie la máquina los días lunes, miércoles y viernes de cada mes a la 21:30.