Los Procesos en Linux
Comparto con todo ustedes algo sobre los procesos en linux..
Algunas cosas importantes que debemos son:
. Cuando los procesos comparten datos, el sistema hace uso de la sincronizacion.
. Un proceso es la unidad basica programada en un procesador por el sistema operativo
. Cada proceso se ejecuta independientemente de otros procesos en el sistema.
Obtener información de un proceso:
* Pues el comando ps, es el ideal para conocer el estado de un proceso ps (process status) o estado del proceso .
/home/julio$ ps
PID TTY TIME CMD
734 pts/1 00:00:12 bash
754 pts/1 00:00:01 ps
Bueno alli lo que arroja el comando ps, ahora es muy importante saber que significa PID, TTY, TIME, y CMD.
PID (Identificacion del Proceso): Cada proceso obtiene un numero de identificacion unico, que es asignado por el kernel.
TTY: No es mas que el terminal asociado con el proceso, tambien puede ser otro dispositivo de entrada.
TIME: El tiempo que el proceso ha estado en ejecución..
CMD: Es el nombre del comando que esta siendo ejecutado, bash es el proceso del shell.
Para visualizar los procesos ejecutandose en el sistemas vasta con poner ps -A. ps por si solo nos muestra los procesos del usuario actual.
/home/julio$ ps -A
PID TTY TIME CMD
26887 pts/6 00:00:00 bash
26951 pts/6 00:00:00 bashop
27104 pts/6 00:00:00 eth0
746 pts/3 00:00:00 ps
Otra opcion seria colocarle al comando ps, la opcion r, de forma que ps -r, este nos mostrara los procesos ejecutandose actualmente-
/home/julio$ ps -r
PID TTY STAT TIME COMMAND
3550 pts/1 R+ 0:00 ps -r
para ver un listado largo y detallado se utiliza el comado ps -l
/home/julio$ ps -l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
0 R 0 3509 3500 0 80 0 - 1065 - pts/1 00:00:00 bash
0 R 0 3575 3509 0 80 0 - 874 - pts/1 00:00:00 ps
Aca salen nuevos términos, el (S) es para denotar los procesos suspendidos o (R) si se esta ejecutando, el UID es el ID del usuario, PPIDE es el PID del proceso padre.
los Procesos Padre e Hijo:
Ya sabemos que cada proceso posee un PID distinto y unico, tambien es importante resaltar que el proceso shell es llamado proceso padre. Todos los comandos que corran dentro del proceso shell son hijos del proceso shell. por eso la importancia del comando ps -l, ya que nos muestra las opciones PPIDE, S,R y UID.
Como el sistemas de archivos, los procesos también están organizados en una jerarquía. A medida que se producen mas procesos, se crean mas procesos hijos. Se puede concebir una jerarquía de procesos encadenados juntos por PID y PPID. un ejemplo para ver esto mejor:
/home/julio$ bash
/home/julio$ ps -l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
0 S 1000 3591 3588 3 80 0 - 1567 - pts/0 00:00:00 bash
0 S 1000 3605 3591 8 80 0 - 1572 - pts/0 00:00:00 bash
0 R 1000 3618 3605 0 80 0 - 874 - pts/0 00:00:00 ps
El comando bash crea automáticamente un proceso shell hijo dentro del proceso shell padre, a pesar de que ambos se llaman bash, pero vemos que difieren sus PIDs. El comando ps -l ahora se ejecuta en el proceso shell hijo... que maravilla esto es linux... XD
Procesos en primer plano:
Cuando ingresamos un comando en el prompt, se crea un proceso shell, por ejemplo si ejecutamos gedit en un termina (gedit es un edito de texto), pues observaremos que el terminal queda como desabilitado, osea el prompt queda titilando. pues esto se debe a que gedit se esta ejecutando en primer plano ( foreground), y por tanto el control no se dará al shell padre hasta que la ejecución del comando gedit termine, osea hasta que cerremos el edito de texto gedit.
Ahora si queremos ejecutar gedit, pero sin perder el control del terminal, podemos abrir gedit en segundo plano:
Proceso en segundo plano: pues un proceso en segundo plano ( background) es muy util, linux permite ejecutar procesos en segundo plano de manera muy fácil basta con colocar el simbolo & a final de programa.
/home/julio$ gedit &
824
/home/julio$
Al incluir el símbolo & con gedit, inmediatamente se presenta el prompt de camanos /home/julio$ después de mostrar el PID del proceso que corre en segundo plano, si queremos terminar con este proceso basta con colocar le comando kill -9 824.
Uso de filtros y Proceso en segundo plano:
/home/julio$ cat archivo | wc &
[1] 1319
/home/julio$
El comando cat archivo | wc & crea dos procesos para cat y wc que se ejecutan en segundo plano, pero el lugar de imprimir dos PIDs, solo imprime uno. el cual corresponde al ultimo proceso osea wc, wc es un coamdo que cuenta el numero de palabras, caracteres o lineas que se encuentren en un fichero. para acabar con este proceso, basta con un kill -9 1319 y listo.....
saludos!!
Enviado por sercari el 18 Febrero, 2009 - 15:25.
Sip hay muchas formas de hacer ps para ver posesos en lo personal me acostumbre a #ps ax
-- jeje el comando wc no lo conocía, se me ocurrió que era un especie de papelera en la consola (¿la consola tiene papelera? (pensé)) por el significado de las siglas en ingles
EDITO: la verdad que mal mi primera deducción ¿como se supone que uno recuperaría algo que tiro allí? jeje 

