Ej. 1.

Anuncio
Parrilla de corrección para la práctica del SMALLSH
Grupo:
Nota:
Ej. 1.- Señales:
Ni el proceso smallsh, ni los procesos en 2º plano deben terminar si se les envía
SIGINT (Ctrl-C) o SIGQUIT (Ctrl-\).
$ grep hola con Ctrl-C o Ctrl-Alt-\ debería regresar a smallsh
$ ls -lR con Ctrl-C o Ctrl-Alt-\ debería regresar a smallsh
$ ls -lR & Ni Ctrl-C ni Ctrl-Alt-\ debería afectar a smallsh.
Hay que esperar a que terminen las ordenes
Ej. 2.- Comando cd:
Deben funcionar correctamente órdenes de los siguientes tipos, informando de posibles
errores en su caso (directorios no existentes, o sin permisos, p.e.):
cd
cd erróneo
cd directorio
cd dir*
cd ../../../
...
Ej. 3.- Prompt:
Debe imprimirse correctamente, sin perder ningún carácter, y con el número de procesos
lanzados en segundo plano desde el smallsh, el tiempo que lleva activo el smallsh
desde que se inició, el nombre del host y el directorio actual correctos. Un ejemplo de
formato correcto sería:
$ 3 01:42 host21:alumno $
Ej. 4.- Tuberías:
Deben funcionar correctamente órdenes como las siguientes:
ls -l | sort
ls -R /usr/bin |
cat procline.c |
ls -l | head -10
cat procline.c |
...
sort
grep narg | cut -c1-4
| tail -5 | cut -c5-10
sort | uniq | tee fichero | less
Ej. 5.- Comodines:
Deben funcionar correctamente órdenes como las siguientes:
ls *.c
ls *.{c,h}
echo *
ls a*b*c
ls ../a*
ls ../../b*.c
ls *.?
...
Ej. 6.- Separadores de comandos && y ||:
Deben funcionar correctamente órdenes como las siguientes:
false || echo hola
false && echo hola
ls existe.c || echo hola
echo $?
true || echo hola
true && echo hola
ls noexiste.c || echo hola
...
(Ésta última orden debe funcionar exactamente igual que en el bash, mostrando el
valor devuelto por la última orden ejecutada en primer plano).
Ej. 7.- Ejecución de guiones shell:
Un fichero denominado guion cuyo contenido es el siguiente:
$ 3 01:42 host21:alumno $ cat guion
ls -l | sort
ls *.{c,h}
false && echo hola
bgproc
$ 3 01:42 host21:alumno $ guion
Se deben ejecutar los cuatro comandos anteriores con el mismo resultado que se
produce si se ejecutan sin formar parte del archivo los comandos correspondientes. Si el
fichero guion no existe debe aparecer el mensaje “Comando no encontrado”.
Ej. 8.- Completar órdenes mediante el uso del tabulador:
Si introducimos ps y pulsamos dos veces el tabulador, debe producirse un pitido
y mostrar en pantalla los posibles comandos:
$ 3 01:42 host21:alumno $ ps TAB TAB
ps
ps2ascii
ps2epsi
ps2frag
ps2pdf
ps2pdf12
ps2pdf13
ps2pdf14
ps2pdfwr
ps2pk
ps2ps
psed
psfaddtable
psfgettable
psfstriptable
psfxtable
psidtopgm
pslatex
psmandup
psset
pstatus
pstopnm
pstree
pstree.x11
pstruct
pswrap
Si introducimos una ruta absoluta o relativa se deben completar los nombres de
los directorios que el usuario introduce. Por ejemplo:
$ 3 01:42 host21:alumno $ /hom TAB (Se sustituye por:)
$ 3 01:42 host21:alumno $ /home/
$ 3 01:42 host21:alumno $ /home/alum TAB (Se sustituye por:)
$ 3 01:42 host21:alumno $ /home/alumno/
Por ejemplo, si tenemos dos directorios como:
/home/alumno1/
/home/alumno2/
Si introducimos:
$ 3 01:42 host21:alumno $ /home/alum TAB (Se sustituye por:)
$ 3 01:42 host21:alumno $ /home/alumno
Si volvemos a pulsar el tabulador en ese momento:
$ 3 01:42 host21:alumno $ /home/alumno TAB (Se sustituye por:)
/home/alumno1/
/home/alumno2/
Ej. 9.- Orden bgproc:
Una vez lanzados una serie de procesos en segundo plano, la ejecución de este comando
debería mostrar una información análoga a la siguiente, por ejemplo (suponiendo que la
hora actual sean las 18:40:11, y que al comando nedit se le puso en un momento dado
una alarma a la que quedan aún 18 segundos para expirar):
COMANDO
nedit
kwrite
...
konqueror
PID
1090
1098
...
1104
LANZAMIENTO
06/03/06 18:37:54
06/03/06 18:38:25
...
06/03/06 18:40:01
ACTIVO
137 segs.
106 segs.
...
10 segs.
RESTANTE
18 segs.
...
-
Cuando un proceso en segundo plano termine (de forma normal o por alarma), debe
mostrar un mensaje similar al siguiente:
El proceso PID=1104 ha finalizado normalmente, código retorno=0.
o bien
El proceso con PID=1090 ha finalizado al expirar su alarma.
Ej. 10.- Orden alarma:
Al menos, debe funcionar para como mínimo un proceso en segundo plano. Debe
afectar a la información que aparece al ejecutar un bgproc (ver punto anterior), y debe
tener el efecto de terminar el proceso indicado por su PID en caso de que expire su
temporizador.
Ej. 11.- Orden smshkill:
Deben funcionar, como mínimo, órdenes como las siguientes:
smshkill -14 1090 (Envía una señal de alarma al proceso en 2º
plano con pid=1090)
smshkill -9 1098 (Envía una señal de terminación al proceso en
2º plano con pid=1098)
smshkill -3 1104 (El proceso no debe terminar porque debe
ignorar la señal SIGQUIT)
Ej. 12.- Exit:
Debe acabar el smallsh, pero previamente todos los procesos pendientes (en segundo
plano) deben también terminar, mostrando un mensaje similar al del ejercicio 9:
El proceso con PID=1098 ha finalizado al terminar el shell.
Aportaciones voluntarias
Comentarios
Descargar