|
|
El control de tareas es una utilidad incluida en la shells como bash o
tcsh que permiten el control de comandos o tareas (en ingles: jobs) al
mismo tiempo.
Cada vez que se ejecuta un programa se lanza un proceso (por lo menos) que es, simplemente, el nombre que se le da a ese programa cuando se esta ejecutando.
Para ver la lista de procesos que se están ejecutando actualmente usamos el comando ps
$ ps
PID |
TTY |
TIME |
CMD |
20169 |
pts/1 |
00:00:00 |
bash |
20170 |
pts/1 |
00:00:00 |
ps |
PID: Identificador del proceso (process identifier).
TTY: Terminal
TIME: Tiempo que ha usado (o usa) el proceso.
CMD (COMMAND): Nombre del proceso.
El comando ps sin argumentos solo muestra los procesos del usuario y sin
mucha información, para obtener mas información usaremos la opción -l.
$ ps -l
F |
S |
UID |
PID |
PPID |
C |
PRI |
NI |
ADDR |
SZ |
WCHAN |
TTY |
TIM |
CM |
0 |
S |
1004 |
20203 |
20168 |
0 |
72 |
0 |
- |
639 |
wait4 |
pts/2 |
00:00:00 |
bash |
0 |
R |
1004 |
20224 |
20203 |
0 |
76 |
0 |
- |
626 |
- |
pts/2 |
00:00:00 |
ps |
F:
S (STAT): Estado del proceso.
UID:
PID: Identificador del proceso.
PPID: Identificador del proceso padre.
C:
PRI:
NI: Prioridad con la que se ejecuta el proceso, 0 por defecto.
ADDR:
SZ:
WCHAN:
TTY: Terminal desde la que se lanzo el proceso.
TIME: Tiempo usado por el comando.
CMD (COMMAND): Nombre del comando.
Las letras que pueden estar en el estado del proceso (S o STAT) son las
siguientes:
D: proceso que no se puede interrumpir.
R: proceso que se esta ejecutando actualmente
S: proceso parado o dormido
T: proceso que ha sido detenido por el usuario o el sistema.
Z: proceso zombie. Este estado indica que el proceso ha tenido
algún fallo y no funciona correctamente.
Para mostrar todos los procesos del sistema usamos la opción -A que, combinada
con -l, nos da casi toda la información posible de todos los procesos.
$ ps -Al
| F |
S |
UID |
PID |
PPID |
C |
PRI |
NI |
ADDR |
SZ |
WCHAN |
TTY |
TIME |
CMD |
| 4 |
S |
0 |
1 |
0 |
0 |
60 |
0 |
- |
372 |
select |
? |
00:00:05 |
init |
| ............................................................................................................................................. |
| 0 |
S |
1004 |
20169 |
20168 |
0 |
60 |
0 |
- |
639 |
wait4 |
pts/2 |
00:00:00 |
bash |
| 0 |
S |
1004 |
20277 |
20169 |
0 |
60 |
0 |
- |
428 |
wait4 |
pts/1 |
00:00:00 |
man |
| 0 |
R |
1004 |
20311 |
20203 |
0 |
70 |
0 |
- |
626 |
- |
pts/2 |
00:00:00 |
ps |
Para obtener informacion sobre los consumos de memoria del sistema y de
los procesos se usa el comando top, que es especialmente util para cuando
el equipo va lento a causa de un proceso.
El proceso INIT: El proceso INIT es especial, cuando el kernel termina
de cargar todo lo necesario llama a INIT y este pasa a ser el 'proceso
0' , INIT ahora llamara al resto de procesos que pasan a ser sus hijos
en un arbol de procesos (con el comando pstree podemos verlo) encabezado
en todo momento por INIT.
INIT no solo llamara a los procesos sino que ajustara los niveles de ejecucion,
montara la unidades necesarias y chequeara el sistema si es necesario...
Despues de esto INIT espera a que sucedan 3 cosas: que uno de los procesos
hijos finalizen, un fallo en el suministro electrico o que el nivel de
ejecucion sea cambiado.
Cuando el nivel de ejecución es cambiado INIT manda la señal 'SIGTERM'
a todos los procesos para que guarden los datos y finalicen, si al cabo
de 20 segundos alguno no ha terminado es 'matado' con la señal 'SIGKILL'.
Más información sobre el arranque de un sistema con GNU/Linux.
Los términos proceso y tarea son prácticamente sinónimos, sin embargo se
suele llamar tarea a un proceso cuando es usado en conjunto con un control
de tareas que es una característica propia de la shell.
Normalmente se suele trabajar solo con un proceso a la vez (monotarea) pero la posibilidad de, junto con un control de tareas, poder usar la capacidad multitarea de Linux es sin duda una de las grandes ventajas respecto a sus competidores.
|