Universidad Nacional de Ingeniería Facultad de Ingeniería Industrial y de Sistemas v2.0 Sistemas Operativos MA781U LABORATORIO 9 Preparado por: Angel Chata Tintaya (angelchata@hotmail.com) Resumen Revisaremos los procesos y principales script shells del sistema operativo Linux. I. MONITOREANDO LOS PROCESOS LINUX Usaremos el comando ps para monitorear los procesos del sistema; además cambiaremos el Id del usuario. 1. Use el comando ps para obtener una lista de los procesos que pertenecen al usuario que invoco ps. $ ps $ ps a PID TTY STAT TIME COMMAND Aquí PID es el identificador del proceso, TTY es la consola donde se ejecuta el proceso, STAT es el estado del proceso, TIME es el tiempo acumulado usado en CPU, COMMAND es como se inició el proceso. 2. Para obtener información de todos los procesos use ps aux $ ps aux $ ps aux | head USER PID TTY STAT TIME COMMAND Aqui se muestra USER que es el propietario del proceso, los demonios o procesos automáticos no tienen consola definida (TTY = ?), los procesos login inician con el carácter - (cómo -bash), los propietarios de los procesos se muestran en la primera columna, los procesos que están en swap en disco se muestran entre paréntesis (bash). 3. Para obtener la relación padre-hijo use el comando ps aj; los IDs de los procesos padres están en la columna PPID, los usuarios se muestran con su id de usuario en la columna UID. Para obtener el nombre se coloca id $ ps aj $ id Use estos comandos para ubicar su proceso login bash y rastréelo hasta llegar al proceso init $ ps aj $ ps aj PPID (donde PPID es el id del proceso padre de bash) $ ps aj 1 4. El comando whoami le indica con que usuario se ha conectado. Revise tambien que usuario se mantiene con un subshell root (su). $ whoami $ su # whoami # exit 5. Cuantos demonios están corriendo en el sistema? Un demonio es un proceso automatico. $ ps aux | grep ? | wc -l 10. Cuantos procesos tienen como propietario a root? $ ps aux | grep root | wc -l II. CREANDO UN SHELL SCRIPT SIMPLE El shell es la consola donde ingresa los comandos. Un shell script es un programa ejecutable compuesto por comandos Linux. Se creara un shell script simple y como son sus procesos. 1. Usando vi como editor, cree un archivo llamado trial.sh que contiene una secuencia de comandos. $ cd $ vi script.sh <i> echo "La fecha y hora actual es : " date sleep 600 <esc>:wq! $ cat script.sh ma781.tripod.com 1 de 3 Universidad Nacional de Ingeniería Facultad de Ingeniería Industrial y de Sistemas v2.0 Sistemas Operativos MA781U 2. Indique al shell que ejecute el comando script.sh. $ source script.sh La fecha y hora actual es : 12 Junio 2003 04:17:03 (pausa... use ctrl+c para salir) 3. SI queremos que este archivo sea tratado como ejecutable entonces tenemos que modificarlo, agregando al inicio del archivo script.sh lo siguiente $ vi script.sh <i> #!/bin/sh echo "La fecha y hora actual es : " date sleep 600 <esc>:wq! $ cat script.sh 4. Usamos chmod para convertirlo en ejecutable por el usuario $ ls -l script.sh $ chmod u+x script.sh $ ls -l script.sh 5. Verifique que puede ejecutar script.sh; se debe indicar toda la ruta del archivo en caso que el directorio actual no se encuentre en el PATH por defecto. $ ./script.sh 12 Junio 2003 04:27:03 (pausa... use ctrl+c para salir) 6. Ahora ejecute script.sh en background y mientras esta en "sleep 600" use ps para saber que procesos están ejecutando. $ ./shell.sh & (el & indica que el proceso correrá en background) $ ps aj Puede ver que ejecutando script.sh, antes se ha iniciado /bin/sh? III. EXPLORANDO EL ARCHIVO KERNEL En Linux, el ejecutable kernel (o núcleo del sistema operativo) se encuentra en el subdirectorio /boot 1. Liste el contenido de /boot. El ejecutable kernel se llama vmlinuz seguido de unas serie de números que dependerá de la versión de kernel que este usando. Cuan grande es el kernel? $ ls -l /boot 2. El comando uname nos muestra que versión de kernel se tiene en la PC. $ uname -r IV. DISPOSITIVOS Y EL KERNEL BOOT LOG En este ejercicio leeremos el log del arranque del núcleo y determinaremos como el sistema se ha configurado para habilitar dispositivos. 1. Lea el log del arranque del kernel. $ dmesg $ dmesg | grep hda id0 at ... hda hda ... ATA DISK drive Típicamente, se muestra un dispositivo (como hda) y el driver del dispositivo. 2. Ejecutando dmesg, puede indicarnos cuanta memoria esta disponible en su PC? Que información se refiere al disco duro? Que puede conocer del puerto serial? $ dmesg | grep MEM $ dmesg | grep hd $ dmesg | grep SERIAL ma781.tripod.com 2 de 3 Universidad Nacional de Ingeniería Facultad de Ingeniería Industrial y de Sistemas v2.0 Sistemas Operativos MA781U V. OBSERVANDO LOS PARÁMETROS DEL KERNEL 1. Liste el contenido del directorio /proc/sys/kernel. Cada archivo contiene información del sistema. $ ls /proc/sys/kernel $ ls /proc/sys/fs $ ls /proc/sys/vm 2. Un parámetro que observaremos es file-max, el máximo numero de archivos abiertos en el sistema. Puede observar otros parámetros del sistema operativo con cat $ cat /proc/sys/fs/file-max VI. EXPLORANDO LOS MODULOS DEL KERNEL DEL LINUX 1. Verifique que kerneld esta ejecutándose en su sistema $ ps aux | grep kerneld 2. Ejecute el comando lsmod $ /sbin/lsmod Que módulos están instalados? VII. LOGON SCREEN Modificaremos algunos parámetros de inicio del Linux 1. Realice una copia del archivo /etc/inittab $ su # cp /etc/inittab /etc/inittab.orig 2. Usando el editor de textos, modifique el archivo /etc/inittab # vi /etc/inittab id:5:initdefault (coloque 5 para que inicie en modo grafico) id:3:initdefault (coloque 3 para que inicie en modo texto) CUIDADO CON MODIFICAR ESTE ARCHIVO INADECUADAMENTE 3. Reinicie la PC y observara que ha cambiado el modo de inicio por defecto del Linux. Si ha iniciado en modo texto, puede cargar en la consola 7 el X-Windows # startx 4. SI ha instalado tanto el entorno GNOME como el KDE, puede cambiar el entorno por defecto; edite el archivo /etc/X11/prefdm. # vi /etc/X11/predfm preferred=kdm 5. Reinicie la PC en modo grafico y observe que el entorno KDE se carga por defecto. VIII. REBOOTEANDO EL SISTEMA Algunos sistemas requieren usar el usuario root para bajar el sistema 1. Baje el sistema operativo $ /sbin/shutdown -r now "Es una diversion" 2. Observe los mensajes que se muestran con el proceso init. Note la serie de eventos: procesos terminados, dispositivos desmontados, sistema detenido. 3. También puede reiniciar el sistema con lo siguiente $ init 0 ma781.tripod.com 3 de 3