MSWord - Sistemas Operativos

Anuncio
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
Descargar