2. Descripción del proyecto.
ProcessX (Control de procesos):
https://github.com/DevelopMoy/ProcessX
Script de consola diseñado para gestionar los procesos de una
manera sencilla, el script tiene un menú para ser controlado de una
manera mas intuitiva y amigable para el usuario.
El script tiene las siguientes funciones:
Crear Proceso: Crea un proceso con el nombre indicado.
Matar Proceso: Te permite matar el proceso por nombre, uso de
RAM o uso de CPU.
Mostrar Procesos: Proporciona una lista de todos los procesos
actuales ordenados por PID.
Buscar Proceso: Te permite ingresar un nombre para ubicar el
PID de el proceso.
AutoKill: Utilidad para escanear procesos en tiempo real, dado
un margen de carga para el CPU, parara todos los procesos que
incumplan dicho limite.
Configuración: Es necesario iniciar el script como super-usuario debido
a los permisos que requiere la gestion de procesos.
Manual del script:
-Seleccione el número de opción para abrir las opciones internas.
3. -Podemos crear procesos desde el script sin necesidad de salir a
consola.
-Así mismo contamos con una opción para mostrar los procesos actuales
en modo listado.
-Así mismo podemos buscar un proceso por nombre con la opción
LookForAProcess.
4. -Podemos elegir entre diferentes opciones para eliminar un proceso, asi
mismo, tenemos la opción de auto-escanear para evitar que el sistema
ocupe mucha carga del procesador.
-Aqui ingresamos el limite de carga para el procesador, es decir, a partir
de este valor se matara cualquier proceso que sobrepase dicho limite.
5. - Al darle enter, estará corriendo el script, para finalizar presionamos ctrl+c.
CRON (respaldo): Esta parte del proyecto inicia respaldando una
carpeta, desde un script bash, para posteriormente agregar este script
a la tabla cron para que se ejecute cada cierto tiempo, en este caso
cada 10 minutos.
Después de hacer el respaldo, otro script se encargará de empaquetar
la carpeta, mediante .tar.gz, y ese mismo script se encargará de
mandar a una Unidad Externa, este script se ejecutará cada 5 min, al
igual que el anterior se agrega a la tabla cron para que esté
programada la tarea, por ultimo en este script también sé dividirá el
archivo en 3 y nombrando con el formato
proyectoUNIX_UNO_FECHA.tar.gz,proyectoUNIX_DOS_FECHA.tar.g
z, proyectoUNIX_TRES_FECHA.tar.gz.
Pasos de configuración:
Para los scripts se usó vi y para agregar los scripts al cron tab, se
utilizó el comando crontab -e, agregando la linea segun los minutos
programados y la dirección del script.
Explicación de Scripts y Proceso:
Primer Script: Respaldo
Se crea la carpeta donde quedarán los respaldos:
6. Los Scripts están alojados en la siguiente dirección:
El primero “respaldo.sh” :
Usa el comando “cp” para copiar el contenido del directorio /var/www/, asi como
el comando date para darle formato al nombre del archivo se se creará.
El segundo Script “divide.sh” se encarga de empaquetar la carpeta de
respaldoTOTAL, de dividirlo en en 3 y mandarlos a la unidad externa.
Se declara una variable para guardar el formato de fecha
Se empaqueta con el comando tar y el empaquetado tiene un nombre provisional
“re.tar.gz”
Se procede a dividirlo en 3 partes, las cuales tendrán el prefijo “x” en la misma
carpeta.
7. Se elimina el archivo provisional.
Se declará una variable con el nombre de la unidad externa.
Se va a mover la primera parte del archivo dividido a la carpeta actual ya con el
nombre formateado como se pidió para posteriormente mandarla a la unidad
externa.
Se repite el proceso para las otras 2 partes.
Se eliminan los archivos provicionales creados para evitar sobre carga.
Para concluir esta parte del proyecto se incluyen ambos scripts a la crontab,
abriendola con el comando crontab y el argumento “-e”.
8. Pagina web con formulario: Esta parte del proyecto incluye una pagina
que esta alojada en un servidor virtual de Apache, utiliza las
tecnologías PHP, python, HTML5 y CSS3 para lo visual.
La pagina tiene varios apartados que fueron personalizados para una
interacción amigable e intuitiva con el usuario. Su función principal es
la de enviar un formulario el cual sera procesado gracias a la
interacción PHP-Python y creara varios directorios dentro del servidor
local para después ser consultados.
Manual Codigo Pagina Web:
-El script acces.py contiene el codigo necesario para recibir los datos
enviados por el formulario, así mismo, crea sus respectivos directorios
y el archivo de texto para la manipulación de datos.
-A continuación se muestra el script consulta2.py, el cual recopila la
información de los archivos creados previamente y los muestra en
pantalla
10. Temas investigados para el proyecto:
-Comando Awk usos comunes y sintaxis.
-Configuración de un servidor apache.
-Instalación de módulos Apache.
-Utilización de comandos para monitorización de procesos.
-Compresión y empaquetado de archivos con tar y tar.gz.
-Manejo de archivos con Python.
-Nuevas etiquetas de HTML5.
-Concatenación de la salida del comando en codigo bash.
-Estilos utilizando css3.
-Comando split para dividir archivo.
-Varios comandos de bash para controlar el flujo de datos en la consola.
11. Bitacora y trabajo:
ProcessX (Moises Alvarez):
Realización de boceto sin interfaz de consola, el cual podia
iniciar un proceso dado por un argumeto del script.
Creación de menú el cual contiene varias funciones que
posteriormente serán programadas para darle la funcionalidad
completa.
Opción para iniciar algún proceso programada, así mismo se
valido en la opción para matar procesos que se ingresaran
valores correctos, todo esto pasando una serie de filtros con
ayuda de condicionales y el comando grep y awk.
Completadas las opciones de iniciar y matar proceso, aun faltan
algunas validaciones para que no colapse el script.
Reparación de bugs y errores minimos.
Opciones para visualizar todos los procesos, esto sirve de guia
para las anteriores opciones ya programadas.
Despues de mostrarle al profesor el avance me sugirio incorporar
una nueva función que escanea el sistema en busca de
procesos pesados y los elimina.
Se incorpora dicha función ingresando un limite a partir del cual
comenzará a detener los procesos no deseados, así mismo se
puede modificar la frecuencia de busqueda en el codigo.
Así mismo, incluyo link del repositorio del proyecto, el cual contiene los
commits hechos a lo largo de la creación del script:
https://github.com/DevelopMoy/ProcessX/commits/master
-CRON (Jorge Avila):
12. Para la realización del proyecto empecé investigando acerca del
CRON, y CRON TAB, para saber como programar las tareas, después
empece realizando las carpetas para realizar correcto lo que se pide,
tales como la carpeta respaldoTOTAL, cuando ya las tenía ya podía
hacer mis scripts, empecé con el script que realiza el respaldo, el cual
solo es copiar el contenido de una carpeta a otra, esto solo se me
complico en el formato del nombre del archivo.
Ya teniendo el script lo agregué al cron tab para que se realizara cada
10 min, hice pruebas poniendo que se hiciera cada minuto y al ver
buenos resultados, lo regresé a 10 min.
El segundo script dependía de los archivos que generaba el respaldo,
entonces lo primero fue investigar como se empaquetaba un archivo,
ya teniendo el archivo empaquetado solo quedaba dividirlo, para ello
encontré el comando split que me funcionaba perfectamente, entonces
con ayuda de este, el script ya dividía el archivo ( ya empaquetado) y
al momento de que el script manda los archivos a la USB, se
cambiaba el nombre de los tres archivos para que tuvieran el formato
que se pide.
-Pagina Web (Jorge Avila, Moises Alvarez):
Comenzamos instalando el servidor Apache con los comandos
correspondientes, apoyándonos en la clase del profesor,
posteriormente creamos el esqueleto principal unicamente con php y
html. Despues de ya tener el formulario creado tuvimos que encontrar
el mejor modulo o framework de python que se adecuara para
nuestras necesidades, despues de investigar, encontramos un modulo
llamado python_mod el cual requería unas configuraciones especiales
dentro de la carpeta /etc/apache2. Después creamos toda la maqueta
de la web con HTML y creamos la lógica principal de los 2 scripts de
python, los cuales incluyen los scripts que manipularan todos los
archivos y directorios necesarios.
Al final creamos con ayuda de estilos en CSS3 una interfaz amigable
para el usuario, creando 4 pestañas diferentes en las cuales el usuario
puede interactuar de la siguiente forma: ver una portada la cual le da la
bienvenida al usuario, ir directo al formulario debidamente validado
para evitar errores humanos, consultar la información ingresada y
guardada
13. en el server local, ver la documentación la cual esta incrustada en un
visor de pdf a través de una etiqueta de HTML5 y por ultimo los
creditos del proyecto.
-Conclusiones:
Con la realización de este proyecto, podemos concluir que el sistema
operativo basado en LINUX/UNIX, nos da herramientas que nos
ayudan a asegurar nuestros archivos, tanto como el respaldo como la
programación de tareas, ya que en un ambiente real de servidores,
sera indispensable tener a salvo los archivos y tener tareas que
ayudan igualmente a la seguridad del servidor.
En la programación de la página concluimos que apache nos da un sin
fin de posibilidades las cuales podemos aprovechar para hacer
proyectos muy buenos, también con la utilización de HTML pudimos
darnos una idea de lo que veremos en próximos semestres, ya que es
una base muy importante.
Así mismo el trabajo en equipo fue una base sumamente importante
en la construcción del proyecto, decidimos realizar de manera
independiente los dos primeros incisos, los cuales representaban una
dificultad menor en comparación al tercero, el cual hicimos en conjunto
haciendo uso de herramientas que serán de mucha utilidad en la
industria, tales como repositorios de git y plataformas online como
github.
14. Referencias.
[Solucionado] Cómo determinar si un bash variable
está vacía? | bash
Operaciones Aritméticas y la Lógica en Bash - PC Resumen
30 ejemplos para el comando Awk en el procesamiento de
texto - Like Geeks
https://www.mclibre.org/consultar/htmlcss/css/css-fuentes
- web.html
https://www.lawebdelprogramador.com/foros/HTML/1208789
- mostrar-un-archivo-gif.html
https://crontab.guru/every-10-minutes
https://docs.oracle.com/cd/E24842_01/html/E23086/sysrescr
o n-12.html
https://www.redeszone.net/2017/01/09/utilizar-cron-crontab-
linux-programar-tareas/
https://manualesjoomla.es/blog/86-tareas-programadas-cron-
en-tu-servidor
Curso: servidor web Apache 2.4 - PLEDIN 3.0
PHP: $_GET – Manual
Virtual Host crear paginas
https://unix.stackexchange.com/questions/32626/split-a-file-
by-line-and-have-control-over-resulting-files-extension
https://lists.gnu.org/archive/cgi-
bin/namazu.cgi?query=split&max=20&result=normal&sort=da
tehttp://www2.iib.uam.es/bioinfo/curso/perl/so/archivando.ht
m
%3Alate&idxname=coreutils&idxname=bug-
coreutils&submit=Search+Mailing+Lists
https://baulderasec.wordpress.com/apuntes/linux/explorar-
herramientas-linea-de-comandos/1-6-procesar-texto-
empleando-filtros/1-6-4-comandos-de-transformacion-de-
ficheros/comando-split/
15. https://travesuras.wordpress.com/2010/10/05/20101005-1/
http://www2.iib.uam.es/bioinfo/curso/perl/so/archivando.htm
Listas en HTML: listas de definición
https://www.dbigcloud.com/sistemas-operativos/112-como
- empaquetar-desempaquetar-y-comprimir-en-linux.html
python con apache2 WEBSERVER – YouTube
Tutorial — Mod_python v3.5.0-3.5.0 documentation
cómo ejecutar un archivo .sh desde php?
https://baulderasec.wordpress.com/2017/06/06/no-puedo-
copiar-carpetas-ni-archivos-en-mi-usb/
https://geekland.eu/montar-la-memoria-usb-en-la-terminal/
https://websetnet.net/es/how-to-list-usb-devices-on-ubuntu
- find-usb-device-name-on-linux-ubuntu/
https://www.tecmint.com/auto-backup-files-to-usb-media-in-
linux/