Universidad Tecnológica de Panamá Facultad de Ingeniería de Sistemas Computacionales Departamento de Arquitectura y Redes de Computadoras Guía # 1 de Laboratorio “Monitorización de Procesos en Linux” Objetivos: Monitorear los procesos existentes en el sistema operativo Linux, y que sea capaz de observar los eventos del sistema significativo para estos objetos. Para ello se usarán los comandos de Linux: ps, top, nice, sleep, time, kill, fg, bg. Recursos: Computador con Sistema Operativo Red Hat Linux versión 9.0 Procedimiento: Parte I: Monitorización de los procesos existentes en el sistema. 1. Abrir la terminal de consola y escriba el comando ps axuf, revise lo presentado. Las opciones: a: muestra todos los procesos activos en el sistema u: muestra la identidad del usuario que creó los procesos f: muestra las relaciones padre-hijo en la jerarquía de procesos Qué hace el siguiente comando? ps –ef | more R. user@host# ps –axuf USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 3 0.0 0.0 0 0 ? SW Aug09 0:00 [migration/1] root 2 0.0 0.0 0 0 ? SW Aug09 0:00 [migration/0] root 1 0.0 0.0 1368 76 ? S Aug09 0:33 init root 4 0.0 0.0 0 0 ? SW Aug09 0:02 [keventd] root 5 0.0 0.0 0 0 ? SWN Aug09 0:02 [ksoftirqd_CPU0] root 6 0.0 0.0 0 0 ? SWN Aug09 0:03 [ksoftirqd_CPU1] root 11 0.0 0.0 0 0 ? SW Aug09 0:00 [bdflush] root 7 0.0 0.0 0 0 ? SW Aug09 4:23 [kswapd] root 8 0.0 0.0 0 0 ? SW Aug09 0:37 [kscand/DMA] root 9 0.1 0.0 0 0 ? SW Aug09 128:28 [kscand/Normal] root 10 0.0 0.0 0 0 ? SW Aug09 root 12 0.0 0.0 0 0 ? SW Aug09 0:23 [kupdated] root 13 0.0 0.0 0 0 ? SW Aug09 0:00 [mdrecoveryd] root 19 0.0 0.0 0 0 ? SW Aug09 0:00 [scsi_eh_0] root 20 0.0 0.0 0 0 ? SW Aug09 0:00 [scsi_eh_1] root 23 0.0 0.0 0 0 ? SW Aug09 1:12 [kjournald] root 80 0.0 0.0 0 0 ? SW Aug09 0:00 [khubd] root 188 0.0 0.0 0 0 ? SW Aug09 0:00 [kjournald] root 189 0.0 0.0 0 0 ? SW Aug09 1:05 [kjournald] root 190 0.0 0.0 0 0 ? SW Aug09 0:24 [kjournald] root 191 0.0 0.0 0 0 ? SW Aug09 2:49 [kjournald] root 192 0.0 0.0 0 0 ? SW Aug09 2:07 [kjournald] root 655 0.0 0.0 1444 156 ? S Aug09 2:50 syslogd -m 0 root 659 0.0 0.0 1364 0 ? SW Aug09 0:00 klogd -x 357 11803 0.0 0.0 2380 992 ? SN 17:47 0:00 \_ [imapd] 1278 11833 0.3 0.0 2384 1000 ? SN 17:49 0:00 \_ [imapd] 1267 11838 0.0 0.0 2396 1004 ? SN 17:49 0:00 \_ [imapd] root 748 0.0 0.0 1412 64 ? S Aug09 0:11 gpm -t imps2 -m /dev/mouse root 757 0.0 0.0 1416 132 ? S Aug09 0:04 crond xfs 789 0.0 0.0 4680 120 ? S Aug09 0:01 [xfs] daemon 798 0.0 0.0 1412 160 ? S Aug09 0:01 [atd] root 807 0.0 0.0 3016 336 ? S Aug09 0:06 /usr/sbin/sshd 340 11527 0.0 0.1 5712 1408 ? S 17:15 0:00 340 11528 0.0 0.1 4336 1404 pts/0 S 17:15 0:00 19:49 [kscand/HighMem] user@host# ps –ef | more UID PID PPID root 1 0 C STIME TTY 0 Aug09 ? 00:00:33 init TIME CMD root 2 0 0 Aug09 ? 00:00:00 [migration/0] root 3 0 0 Aug09 ? 00:00:00 [migration/1] root 4 1 0 Aug09 ? 00:00:02 [keventd] root 5 1 0 Aug09 ? 00:00:02 [ksoftirqd_CPU0] root 6 1 0 Aug09 ? 00:00:03 [ksoftirqd_CPU1] \_ [sshd] \_ -bash root 11 1 0 Aug09 ? 00:00:00 [bdflush] root 7 1 0 Aug09 ? 00:04:23 [kswapd] root 8 1 0 Aug09 ? 00:00:37 [kscand/DMA] root 9 1 0 Aug09 ? 02:08:28 [kscand/Normal] root 10 1 0 Aug09 ? 00:19:49 [kscand/HighMem] root 12 1 0 Aug09 ? 00:00:23 [kupdated] root 13 1 0 Aug09 ? 00:00:00 [mdrecoveryd] root 19 1 0 Aug09 ? 00:00:00 [scsi_eh_0] root 20 1 0 Aug09 ? 00:00:00 [scsi_eh_1] root 23 1 0 Aug09 ? 00:01:12 [kjournald] root 80 1 0 Aug09 ? 00:00:00 [khubd] root 188 1 0 Aug09 ? 00:00:00 [kjournald] root 189 1 0 Aug09 ? 00:01:05 [kjournald] root 190 1 0 Aug09 ? 00:00:24 [kjournald] root 191 1 0 Aug09 ? 00:02:49 [kjournald] root 192 1 0 Aug09 ? 00:02:07 [kjournald] root 655 1 0 Aug09 ? 00:02:50 syslogd -m 0 root 659 1 0 Aug09 ? 00:00:00 klogd –x root 748 1 0 Aug09 ? 00:00:11 gpm -t imps2 -m /dev/mouse root 757 1 0 Aug09 ? 00:00:04 crond xfs 789 1 0 Aug09 ? 00:00:01 [xfs] daemon 798 1 0 Aug09 ? 00:00:01 [atd] root 807 1 0 Aug09 ? 00:00:06 /usr/sbin/sshd root 812 1 0 Aug09 tty4 00:00:00 /sbin/mingetty tty4 root 813 1 0 Aug09 tty5 00:00:00 /sbin/mingetty tty5 root 814 1 0 Aug09 tty6 00:00:00 /sbin/mingetty tty6 root 815 1 0 Aug09 ? 00:00:00 [gdm-binary] root 858 815 0 Aug09 ? 00:00:00 [gdm-binary] gdm 32682 858 0 Aug12 ? 00:32:03 /usr/bin/gdmgreeter nobody 16784 1 0 Aug16 ? 00:07:50 [in.imapproxyd] --MAS-- root 1894 1 0 Sep15 ? 00:00:00 login -- root root 4103 1894 0 Sep15 tty2 00:00:00 -bash root 24488 1 0 Sep22 tty3 00:00:00 /sbin/mingetty tty3 root 456 1 0 09:26 ? 00:00:02 [sendmail] root 1884 1 0 10:08 tty1 00:00:00 /sbin/mingetty tty1 root 11525 807 0 17:15 ? 00:00:00 sshd: edgar.mendieta [priv] 340 11527 11525 0 17:15 ? 00:00:00 [sshd] 340 11528 11527 0 17:15 pts/0 00:00:00 -bash 357 11803 713 0 17:47 ? 00:00:00 [imapd] 1278 11833 713 0 17:49 ? 00:00:00 [imapd] 1165 11856 713 0 17:53 ? 00:00:00 [imapd] root 11870 456 0 17:56 ? 00:00:00 [sendmail] 340 11871 11528 0 17:56 pts/0 00:00:00 ps -ef Opciones. -e Muestra todos los procesos -f Muestra los procesos selecionados de forma completa o extensa. De tal forma que el comando ejecutado anteriormente nos presentara los procesos que se ejecutan en el sistema, a la vez que nos dará información sobre el proceso (PPID, %CPU, %MEM, etc.) 2. Nuevamente escriba el comando y redireccione a un archivo llamado pslog.txt ps –axuf > pslog.txt Estudie la jerarquía de procesos y responda lo siguiente: o ¿Qué comando utilizó? ¿Para qué se utiliza el PID? o ¿Pueden existir dos PID iguales en un instante dado? ¿Por qué? o Cuántos procesos hay en ejecución en el sistema? o Cuántos usuarios hay conectados al sistema? o Cuántos procesos son del usuario root? o Cuántos navegadores hay abiertos? o Describa una jerarquía de procesos de un usuario conectado. Qué shell está ejecutando? o Cuál es el proceso que más tiempo de CPU ha consumido? o Cuál es el proceso que más espacio de memoria ha consumido? o Qué procesos llevan más tiempo arrancados? o En qué fecha y hora arrancó el sistema? Investigue para qué le puede interesar al sistema operativo asociar un PPID con cada proceso Investigue TODOS los procesos activos en el sistema. ¿Qué comando utilizó? R. user@host# ps –axuf > pslog.txt user@host# a. El comando utilizado fue ps –axuf, la opción “-x” muestra procesos que no tienen TTY o terminal asignado. En esta comando también se ven las opciones anteriormente descritas en el punto 1, los más importante que al ver los procesos de forma extendida se puede apreciar los PID (Processes Identification); el PID es un valor numerico asignado a cada proceso por separado proceso y del nos sistema es util y es para una identificar forma del SO cada para manejar correctamente los mismos. b. Los PID’s son únicos y son valores numéricos asignados a cada unos de los procesos del SO. No pueden existir más de un proceso con el mismo PID. c. Para ver la cantidad de procesos que están en estado de ejecución formas: mediante (running) ejecutando vi o el lo podemos comando buscando con hacer ps –fr o grep “R” el de dos editando archivo pslog.txt anteriormente creado. De esta forma veremos que en nuestro sistema tenemos solo un (1) proceso en ejecución en la columna Stat. Esto variara en cada sistema. d. Si se desea ver la cantidad de usuarios conectados en el sistema se puede usar el comando who o nos basamos en el archivo pslog.txt y buscamos en la columna TTY. De esta forma se puede decir que tenemos dos usuarios conectados remotamente (pts/#) y 6 usarios en modo de consola (tty#). La columna USER del archivo pslog.txt podria confundir, pero un proceso puede ejecutarse sin necesidad que un usuario este conectado en el sistema. Ahora si nos preguntásemos cuantos usuarios son dueño(s) de procesos listados anteriormente se podría usar dicha columna y la respuesta seria 11 usuarios. e. Tenemos 40 procesos pertenecientes al usuario root. f. Este sistema no tiene navegador activo. g. La jerarquía en los procesos la vemos cuando un usuario del sistema este o no este conectado a el, levanta un proceso y este a su vez levanta procesos hijos, estos procesos hijos tendrán la utilidad de brindarle soporte Ejemplo; el remotamente serie de al usuario mediante procesos proceso padre o edgar.mendieta el con servicio los progenitor. al SSH conectarse levanto siguientes PID una 11525, 11527, 11528 y 11539. De esta forma esto apoya a lo dicho anteriormente que no pueden existir varios procesos con el mismo PID. El shell utilizado es el Bourne Again Shell (BASH), dado en con el PID 11528. h. El proceso que mas tiempo a consumido es el kscand con 128:29. Este proceso hace revisión del kernel. i. El proceso que ha consumido mas espacio en memoria es el gdm con 0.2%. Este proceso es uno de los procesos levantado por el modo grafico de Linux. j. En el Sistema caso son de este los que en estudio, tienen mas los procesos tiempo de del haberse arrancado. k. El sistema arranco el 9 de Agosto. El sistema operativo asocia los procesos hijos o descendiente con su respectivo padre o progenitor para que ambos puedan interactuar entre ellos y que la información que genere uno no interfiera con otro proceso ajeno a la relación. Los procesos en el sistema cambiaran dependiendo de la actividad en el mismo. Los procesos que se mantienen actividad en fuera el de Sistema, la normal, aunque serán este los no tenga procesos que pertenecen al Sistema Operativo; tales como procesos de monitoreo (llamados deamon) o procesos de aplicaciones o servicios que arrancan al arrancar el sistema. Toda la información acerca de los procesos se puede ver mediante el comando ps. Para mas información vaya a la pagina de ayuda del comando (#man ps). Parte II: Monitorización de los procesos que consumen más CPU en el sistema. Para ello, se utilizará el comando top. 3. Escriba el comando top. En la cabecera se muestran datos de la fecha sistema. de Qué monitorización indican estos y de datos? la Qué situación ha hecho del la computadora la mayor parte del tiempo? R. # top last pid: 27340; 80 processes: load averages: 0.08, 0.09, 0.09 10:16:14 79 sleeping, 1 on cpu CPU states: 92.8% idle, 2.8% user, 3.2% kernel, 1.2% iowait, 0.0% swap Memory: 256M real, 34M free, 184M swap in use, 508M swap free PID USERNAME LWP PRI NICE SIZE RES STATE TIME 18:55 CPU COMMAND 225 named 4 59 0 6272K 5200K sleep 27294 faraon 1 49 0 2712K 1656K cpu 0:00 0.20% top 27336 root 1 59 0 4152K 2736K sleep 0:00 0.13% sendmail 723 root 1 49 0 4:49 0.12% .netscape.bin 31M 22M sleep 0.29% named 15365 root 1 59 0 3840K 2080K sleep 0:18 0.05% sendmail 221 root 24 59 0 5536K 4144K sleep 0:42 0.05% nscd 161 root 1 59 0 2344K 1424K sleep 0:02 0.05% inetd 201 root 15 59 0 3720K 1896K sleep 1:19 0.02% syslogd 333 root 7 59 0 3720K 3264K sleep 2:21 0.01% mibiisa 303 nobody 1 59 0 7:44 0.00% httpd 17M 13M sleep 305 nobody 1 59 0 17M 13M sleep 7:15 0.00% httpd 492 nobody 1 59 0 17M 14M sleep 7:11 0.00% httpd 3778 nobody 1 59 0 17M 13M sleep 7:09 0.00% httpd 304 nobody 1 59 0 17M 13M sleep 6:40 0.00% httpd 3771 nobody 1 59 0 17M 14M sleep 6:30 0.00% httpd El comando top nos da una estadística del sistema, acerca de los procesos en el sistema, también nos dice el estado de los mismos. La salida de este comando cambia constantemente según cambien los estados de los procesos o se añada un nuevo proceso. En este sistema podemos ver que el proceso del usuario named ha estado más tiempo en memoria. 4. Programe una pequeña aplicación en C que incluya un ciclo infinito. Ejecútela y observe en la pantalla de top. Incluya el programa de prueba y describa su efecto en la memoria. R. La aplicación que ejecutaremos es un pequeño programa en C que imprime números ordenados por columnas. last pid: 29732; 79 processes: load averages: 0.29, 0.12, 0.07 19:57:04 78 sleeping, 1 on cpu CPU states: 87.5% idle, 7.6% user, 5.0% kernel, 0.0% iowait, 0.0% swap Memory: 256M real, 32M free, 181M swap in use, 508M swap free PID USERNAME LWP PRI NICE SIZE RES STATE TIME CPU COMMAND 29707 emendiet 1 54 0 6272K 2000K sleep 0:08 7.27% sshd 29730 emendiet 1 59 0 1072K 0:07 5.67% prueba 29732 emendiet 1 59 0 2712K 1664K cpu 0:00 0.21% top 723 root 1 49 0 31M 22M sleep 5:25 0.14% .netscape.bin 335 root 1 59 0 21M 14M sleep 0:40 0.03% Xsun 333 root 7 59 0 3720K 3264K sleep 2:41 0.02% mibiisa 225 named 4 59 0 6272K 5200K sleep 20:37 840K sleep 0.00% named 303 nobody 1 59 0 17M 13M sleep 8:02 0.00% httpd 305 nobody 1 59 0 17M 13M sleep 7:31 0.00% httpd 3778 nobody 1 59 0 17M 13M sleep 7:25 0.00% httpd 492 nobody 1 59 0 17M 14M sleep 7:24 0.00% httpd 304 nobody 1 59 0 17M 13M sleep 7:04 0.00% httpd 3771 nobody 1 59 0 17M 14M sleep 6:42 0.00% httpd 17853 nobody 1 59 0 17M 13M sleep 2:51 0.00% httpd 18897 nobody 1 59 0 17M 13M sleep 1:27 0.00% httpd 5. Programe una pequeña aplicación en C que incluya un ciclo que consuma mucha memoria con malloc y no la libere. Ejecútela y observe su efecto en la pantalla de top. Incluya el programa de prueba y describa su efecto en la memoria. 2 minutos de ejecución de la aplicación. last pid: 6007; 72 processes: load averages: 0.03, 0.02, 0.03 17:56:14 71 sleeping, 1 on cpu CPU states: 84.1% idle, 12.5% user, 3.4% kernel, 0.0% iowait, 0.0% swap Memory: 256M real, 74M free, 531M swap in use, 162M swap free PID USERNAME LWP PRI NICE SIZE RES STATE TIME CPU COMMAND 6007 emendiet 1 54 0 383M 1448K sleep 0:01 4.25% malloc 5878 emendiet 1 59 0 6288K 2008K sleep 0:01 2.37% sshd 5981 emendiet 1 59 0 2712K 1672K cpu 0:00 0.15% top 328 root 7 59 0 3520K 3064K sleep 0:41 0.06% mibiisa 225 named 4 59 0 6344K 5280K sleep 4:08 0.03% named 329 root 1 59 0 13M sleep 0:02 0.03% Xsun 201 root 20M 14 59 0 3608K 1784K sleep 0:16 0.01% syslogd 2310 nobody 1 59 0 17M 13M sleep 1:14 0.00% httpd 301 nobody 1 59 0 17M 13M sleep 1:03 0.00% httpd 429 nobody 1 59 0 16M 12M sleep 1:01 0.00% httpd 302 nobody 1 59 0 16M 12M sleep 0:59 0.00% httpd 299 nobody 1 59 0 17M 13M sleep 0:53 0.00% httpd 432 nobody 1 59 0 17M 13M sleep 0:49 0.00% httpd 303 nobody 1 59 0 16M 12M sleep 0:44 0.00% httpd 4629 nobody 1 59 0 17M 13M sleep 0:22 0.00% httpd Minutos después que se detuvo la aplicación. last pid: 6024; 71 processes: load averages: 0.00, 0.02, 0.03 18:00:22 70 sleeping, 1 on cpu CPU states: 99.8% idle, 0.2% user, 0.0% kernel, 0.0% iowait, 0.0% swap Memory: 256M real, 75M free, 150M swap in use, 544M swap free PID USERNAME LWP PRI NICE 6019 emendiet SIZE RES STATE TIME CPU COMMAND 1 59 0 2712K 1664K cpu 0:00 0.15% top 328 root 7 59 0 3520K 3064K sleep 0:41 0.02% mibiisa 218 root 1 59 0 2344K 1272K sleep 0:00 0.01% cron 225 named 4 59 0 6344K 5280K sleep 4:09 0.01% named 2310 nobody 1 59 0 17M 13M sleep 1:14 0.00% httpd 301 nobody 1 59 0 17M 13M sleep 1:03 0.00% httpd 429 nobody 1 59 0 16M 12M sleep 1:01 0.00% httpd 302 nobody 1 59 0 16M 12M sleep 0:59 0.00% httpd 299 nobody 1 59 0 17M 13M sleep 0:53 0.00% httpd 432 nobody 1 59 0 17M 13M sleep 0:49 0.00% httpd 303 nobody 1 59 0 16M 12M sleep 0:44 0.00% httpd 4629 nobody 1 59 0 17M 13M sleep 0:22 0.00% httpd 201 root 14 59 0 3608K 1784K sleep 0:16 0.00% syslogd 221 root 27 59 0 4736K 3624K sleep 0:09 0.00% nscd 233 root 1 59 0 3840K 1856K sleep 0:09 0.00% sendmail Como se puede observar a simple vista la aplicación hace posesión de mucho recurso de memoria. El algoritmo de malloc esta basado en adjudicar espacio a procesos en la memoria. En nuestro caso se le da el tamaño del objeto que se adjudicara. 6. Programe una pequeña aplicación en C que incluya un ciclo que pida un entero por la entrada estándar. Ejecútela y observe su efecto en la pantalla de top. Incluya el programa de prueba y describa su efecto en la memoria. last pid: 6276; 80 processes: load averages: 0.00, 0.02, 0.04 19:29:04 79 sleeping, 1 on cpu CPU states: 83.9% idle, 5.0% user, 11.2% kernel, 0.0% iowait, Memory: 256M real, 8240K free, 423M swap in use, 268M swap free 0.0% swap PID USERNAME LWP PRI NICE SIZE RES STATE TIME CPU COMMAND 6276 emendiet 1 49 0 1072K 728K sleep 0:01 3.72% programa2 6198 emendiet 1 49 0 6256K 2032K sleep 0:02 3.29% sshd 6273 emendiet 1 59 0 2712K 1672K cpu 0:00 0.55% top 4 59 0 6344K 4112K sleep 4:18 0.07% named 1 59 0 2592K 2024K sleep 0:00 0.01% bash 7 59 0 3520K 2232K sleep 0:43 0.01% mibiisa 6210 emendiet 1 59 0 6256K 1984K sleep 0:00 0.01% sshd 2310 nobody 1 59 0 54M 24M sleep 1:42 0.00% httpd 302 nobody 1 59 0 54M 14M sleep 1:36 0.00% httpd 301 nobody 1 59 0 54M 14M sleep 1:27 0.00% httpd 429 nobody 1 59 0 54M 33M sleep 1:22 0.00% httpd 299 nobody 1 59 0 54M 50M sleep 1:14 0.00% httpd 303 nobody 1 59 0 54M 13M sleep 1:09 0.00% httpd 432 nobody 1 59 0 17M 8656K sleep 0:54 0.00% httpd 4629 nobody 1 59 0 54M 0:40 0.00% httpd 225 named 6205 emendiet 328 root 47M sleep El proceso levantado por la aplicación toma recurso de la memoria. En nuestro equipo como la memoria RAM no tubo el recurso suficiente para satisfacer el proceso es llevado a la swap. Parte III: Otro mandato interesante para analizar el tiempo invertido en un comando es time time ps Qué resultado presento? Explique #time ps PID TTY TIME CMD 30132 pts/0 00:00:00 bash 30200 pts/0 00:00:00 ps real 0m0.020s user 0m0.010s sys 0m0.010s Este comando programas nos que da se mensajes están de estadísticas ejecutando. Las sobre los estadísticas consistirán en el tiempo real que toma desde la ejecución del la aplicación y su terminación. Controlando el sistema. Ejecute el comando uptime y comente su resultado. #uptime 19:27:46 up 63 days, 4:40, 2 users, load average: 0.00, 0.00, 0.00 # El comando nos da información acerca de la hora actual, cuanto tiempo lleva el sistema encendido o en ejecución, que cantidad de usuarios están logueados en el sistema y la carga promedio del mismo. Parte IV: Prioridad subordinada. Procesos background Ejecute la calculadora otras dos veces más modificando la prioridad en cada ejecución, primero disminuyéndola en 5 unidades y después en 10. Verifique los diferentes valores nice asignados, para lo cual ejecute la orden "ps -l". nice -5 cal& # nice -5 cal & [1] 1077 bash-2.05$ October 2004 S M Tu W Th 3 4 6 5 7 F S 1 2 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 ps -l F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 8 O 1014 1078 1045 0 50 20 ? 138 pts/8 0:00 ps 8 S 1014 1045 1040 0 50 20 ? 323 ? pts/8 0:00 bash 8 S 1014 1040 1038 0 40 20 ? 136 ? pts/8 0:00 sh [1]+ Done nice -5 cal # nice -5 cal & nice -10 cal& # nice -10 cal& [1] 1091 bash-2.05$ October 2004 S M Tu W Th 3 4 6 5 F S 1 2 8 9 7 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 ps -l F S UID PID PPID C PRI NI ADDR SZ 8 O 1014 1092 1045 0 8 S 1014 1045 1040 8 S 1014 1040 1038 [1]+ Done WCHAN TTY TIME CMD 50 20 ? 138 pts/8 0 50 20 ? 323 ? pts/8 0:00 bash 0 40 20 ? 136 ? pts/8 0:00 sh 0:00 ps nice -10 cal # ¿Puede un usuario perteneciente a modificar otro la usuario? prioridad ¿Por qué? de ¿En un proceso qué casos podría realizarlo? Cada vez que en Linux o Entornos Unix se genera un proceso este toma los permisos del usuario que lo genero; digamos que el usuario userA genero un proceso el usuario userB no podra tocar el proceso ya que los permisos, por defecto, son independiente para cada usuario. Para que un usuario pueda manipular procesos de otros tiene que cumplir con lo siguiente: Ser o tener poderes del administrador (root) del sistema o formar parte de un grupo de trabajo en el cual todos los integrantes tengan los mismos privilegios en el sistema. Interrumpa el proceso correspondiente a la segunda operación nice lanzado. Utilice inmediatamente después, el comando "ps" para ver el grado de éxito obtenido. diferencias encuentra al ejecutar las siguientes ¿Qué cuatro instrucciones? a) (sleep 50 ; sleep 55)& R. bash-2.05$ (sleep 50 ; sleep 55)& [1] 1338 bash-2.05$ jobs [1]+ Running ( sleep 50; sleep 55 ) & Linux hace uso de las leyes asociativas, al ver el comando anteriormente introducido lo tomara como un solo conjunto, el cual ocupara un solo proceso en background. b) sleep 60 ; sleep 65 & R. En este caso el sistema operativo verá dos procesos por separado. Uno lo ejecuta en foreground y el que lleva el símbolo “&” será enviado a background. c) sleep 70& sleep 75& R. Esta línea levantara dos trabajos con id’s diferentes. d) sleep 80&;sleep 85& R. Esta línea podría asemejarse a la opción a. Cierre la sesión de trabajo, inicie una nueva y verifique que solo tiene asociados los procesos correspondientes a su nueva sesión. Ejecute las siguientes instrucciones: $ sleep 600 & $ sleep 700 & $ ps -f > pslist1 $ kill -9 $$ Abra una nueva sesión de trabajo. ¿Qué ha sucedido con los dos procesos hijos del proceso de conexión anterior, generados con las órdenes sleep? R. Cada vez que se ejecuta un trabajo en segundo plano, utilizando un shell a manera de usario; este quedara en la interface del usuario que levanto el trabajo. Digamos que pertenecerá al shell y usuario en ese momento. Si se abre otra ventana estos trabajos no aparecerán en dicha ventana. Compruébelo de la siguiente manera: 1) Ejecute la orden "ps -f -u `logname` > pslist2" 2) Compare los archivos "pslist1" y "pslist2" y saque conclusiones. (No tarde más de 10 minutos en realizar esta prueba ya que 600/60=10) R. Al ejecutar el comando ps vemos los procesos que están ejecutándose actualmente en el sistema. Como los procesos anteriores o mejor dicho trabajos eran parte de una interfaz de usuario al cerrarse esta se termino el proceso. Ejecute la instrucción "$find / -name "fichero" 2> /dev/null &" Recuerde el número instrucción anterior. de proceso que se ha asociado a la Convierta el proceso background anterior en un proceso foreground. stop <PID> fg <PID> $find / -name "fichero" 2> /dev/null & [1] 2970 $jobs jobs [1]+ Running find / -name "fichero" 2>/dev/null & $ fg %1 find / -name "fichero" 2>/dev/null ^Z [1]+ Stopped find / -name "fichero" 2>/dev/null Stopped find / -name "fichero" 2>/dev/null $ jobs [1]+ $ stty speed 38400 baud; line = 0; erase = ^H; -brkint -imaxbel Verifique si tiene activada la suspensión de trabajos para lo cual utilice la orden "$ stty" y busque en el listado que se presenta la cadena "susp" para ver que secuencia de caracteres tiene asociada (por ejemplo puede aparecer "susp = ^Z" lo cual indica que pulsando ctrl+z se suspende la ejecución de un trabajo foreground). Si no tiene asociada una combinación de teclas asigne una, por ejemplo con la orden "$ stty susp ^Z". a) Ejecute la orden "$ sleep 400" en foreground. b) Suspenda su ejecución con la combinación de teclas en cuestión. c) Mire cuál es el número de proceso del trabajo suspendido y convierta (background). dicho proceso en un proceso subordinado bg <PID> $ sleep 400 [1]+ Stopped sleep 400 $ bg %1 [1]+ sleep 400 & $ jobs [1]+ Running sleep 400 & $ Parte V: Planificación de trabajos. Indique una instrucción para que visualice dentro de diez minutos el mensaje: "Han pasado diez minutos." {sleep 600; echo "Han pasado 10 minutos";}& R. $ (sleep 600; echo “Han pasado 10 minutos”)& [1] 15444 $ jobs [1]+ Running ( sleep 600; echo "Han pasado 10 minutos" ) & $ Planifique diciembre un a trabajo las 9 de para la que se mañana. ejecute Este el día trabajo 5 de será la ejecución de un guión que se encontrará en su directorio de conexión y cuya misión será informar de que los días 6 y 8 de diciembre son festivos. Cree el guión e instrucción para su planificación. at 0800 12,05 aviso wall "Los dias 3 y 4 de noviembre son festivos." R. $ at 0900 December 5 at> wall "Los dias 3 y 4 de noviembre son festivos." $ indique la Planifique otro trabajo que le recuerde la fecha de su cumpleaños lo cual conseguirá envíando en dicha fecha a su correo un mensaje de "felicidades". at 0000 11,07 mail f941162 < echo "Felicidades!!" R. $ at 0800 Octuber 30 at>mail emendieta < echo “Felicidades!!”. $ Visualice los trabajos planificados con la herramienta "at". at –l R. $ at -l 9 2004-12-05 09:00 a root 10 2004-10-30 08:00 a emendieta $ Esta orden tiene el mismo efecto que atq Con una única instrucción, elimine el trabajo planificado anteriormente para el día 5 de diciembre, sin efectuar una consulta previa de la referencia del trabajo en cuestión. at –r $ at –r