ELO-330: Programación de Sistemas
 Tarea 1: Procesos Antiguos y Usuarios Recurrentes

   La idea es que su grupo ejercite la programación shell. Trate que cada integrante de su grupo resuelva esta tarea separadamente y luego comentan sus soluciones o ideas sobre cómo abordar cada ejercicio. Este camino conduce a un mayor aprendizaje individual y mejor solución grupal.

Objetivos: aplicar programación shell.

Contexto: Hay varias tareas administrativas regulares que requieren varios comandos. Por ejemplo, identificar qué proceso de usuario lleva tiempo inusual corriendo y ocupando recursos (CPU) en una máquina. Podría tratarse de un proceso o comando ocioso. Otra situación es conocer qué usuarios trabajan a la máquina regularmente.

Ejercicio 1: Proceso más antiguo
Nombre: op: Oldest Process
Sintaxis: op  [a | p]
Descripción: op envía a pantalla el nombre de usuario real, el comando ejecutado, el tiempo que lleva corriendo.  La opción p permite listar el comando más antiguo ejecutado por un profesor (si lo hay). La opción a permite listar el comando más antiguo de un usuario alumno. Cuando la opción es omitida lista el comando más antiguo del sistema. El formato de salida es:

Nombre real del usuario: Agustin Gonzalez    # esto se lista según salida de getent passwd
Comando ejecutado: ping www.google.cl
Tiempo:  DD-hh:mm:ss     # días - horas:minutos:segundos

Nota: revise comando ps, en particular opciones para especificar el formato estándar de salida. Revise comando getent passwd. Revise comando date.

Ejercicio 2: Usuario recurrente
Nombre: ru: recurrent user
Sintaxis: ru
Descripción: ru muestra por pantalla los tres usuarios que más conexiones a aragorn han hecho (mayor número de accesos a aragorn) durante el tiempo que muestre el comando last. Como salida se muestra:

1°: <aquí va nombre real del usuario>, username: <su nombre de usuario>, número de ingresos: <número de ingresos>
2°:  idem
3°:  idem

Nota: revisar comando last, por ejemplo ver opción -w, comando sort, comando, uniq

Evaluación de la Tarea y qué entregar:
  La tarea será revisada en aragorn.elo.utfsm.cl Confirme que su solución corre bien allí.
  La evaluación de esta tarea será según:
    70% Que cada script cumpla plenamente lo pedido.
    30% Documentación. Ésta debe incluir sus scripts y un archivo readme.txt. Enviar la tarea vía correo a cuenta gmail elo330 punto utfsm (usted debe descubrir  el correo con estos datos). En archivo readme.txt incluir descripción simple de la estrategia usada para cada script, explicar cómo descomprimir su solución, cómo preparar cada script para su ejecución y cómo correrlos. Indicar además casos en que el script pudiera fallar; por ejemplo, si el nombre de usuario no existe.
  Penalización por atraso: 5 puntos por día o fracción.
OBS: En caso que la tarea no sea del todo clara (alguna especificación completa), plantee la situación al profesor. Aquí se publicarán las aclaraciones necesarias.

Ayuda:
   - Estudie los ejemplos de programación shell vistos en clases.
   - Trabaje con tiempo, será muy grato para mi atender sus consultar y ayudar en su solución de esta tarea.