En un sistema operativo como Linux, un proceso es un programa en ejecución con recursos asignados en tiempo real. Por eso, cada vez que se abre una aplicación o se ejecuta un comando, se crea un nuevo proceso. Los procesos utilizan recursos del sistema, como la CPU, la memoria RAM y el disco duro, para llevar a cabo sus tareas.
GNU/Linux es un sistema operativo que ofrece una gran flexibilidad en la gestión de procesos. Si un proceso como hemos dicho es un program en ejecucón, por eso, GNU/Linux nos permite tener múltiples procesos corriendo de forma simultánea, lo que se conoce como multitarea. Para gestionar estos procesos, GNU/Linux pone a nuestra disposición diversas herramientas que nos permiten:
Listar procesos:
Para ver los procesos que se están ejecutando en el sistema, podemos utilizar el comando ps. Este comando nos muestra una lista de los procesos, junto con información relevante sobre cada uno de ellos, como su identificador (PID), el usuario que lo ejecuta, el estado en el que se encuentra (en ejecución, dormido, detenido, etc.), el porcentaje de CPU que está utilizando, la memoria que está consumiendo, etc.
Existen diferentes opciones para el comando ps que nos permiten personalizar la información que se muestra y la forma en que se presenta. Ejemplo, podemos utilizar ps aux para obtener una lista detallada de todos los procesos en ejecución, o ps -u nombre_de_usuario para ver solo los procesos de un usuario específico.
Iniciar un nuevo proceso es una tarea fundamental que se puede realizar de diversas maneras, adaptándose a las preferencias del usuario y al contexto en el que se encuentre. A continuación, exploraremos las dos principales formas de iniciar procesos en GNU/Linux.
La terminal es una herramienta poderosa que permite interactuar con el sistema operativo a través de comandos de texto. Para iniciar un proceso desde la terminal, simplemente se debe escribir el nombre del programa que se desea ejecutar y presionar Enter. Por ejemplo, si se desea iniciar el navegador web Firefox, se escribiría "firefox" en la terminal y se presionaría Enter.
Ejecución por terminal
Este método es especialmente útil para usuarios familiarizados con la terminal y para tareas que requieren precisión y control. Además, la terminal permite añadir opciones y argumentos a los comandos, lo que brinda una mayor flexibilidad y personalización al iniciar procesos.
Ejecución por modo gráfico
El entorno gráfico de Linux ofrece una interfaz visual intuitiva que facilita la interacción con el sistema operativo. Para iniciar un proceso desde el entorno gráfico, se puede hacer clic en el icono del programa deseado o abrir un archivo asociado a dicho programa. Ejemplo, para iniciar un editor de texto, se podría hacer clic en su icono en el menú de aplicaciones o abrir un archivo de texto.
Este método es ideal para usuarios que prefieren una interfaz visual y para tareas sencillas que no requieren el uso de la terminal. Además, el entorno gráfico ofrece herramientas como menús y paneles que facilitan la búsqueda y el acceso a los programas.
Es importante tener en cuenta que ambos métodos, tanto la ejecución desde la terminal como el inicio desde el entorno gráfico, son igualmente válidos y efectivos para iniciar procesos en GNU/Linux. La elección del método dependerá del usuario, de la tarea que se desea realizar y de las preferencias personales.
En el mundo de Linux, la gestión de procesos es una tarea esencial para mantener el sistema funcionando de manera eficiente y sin problemas. Para ello, existen una serie de comandos que nos permiten controlar y administrar los procesos que se están ejecutando en el sistema. A continuación, exploraremos algunos de los comandos más útiles para la gestión de procesos en Linux:
1. ps
El comando ps es una herramienta fundamental para listar los procesos que se están ejecutando en el sistema. Este comando ofrece una gran cantidad de opciones que permiten personalizar la información que se muestra y la forma en que se presenta. Algunas de las opciones más útiles son:
ps aux: Muestra una lista detallada de todos los procesos en ejecución, incluyendo información sobre el usuario que los ejecuta, el porcentaje de CPU y memoria que están utilizando, el estado en el que se encuentran.
ps -u nombre_de_usuario: Muestra solo los procesos del usuario especificado.
ps -p PID: Muestra información detallada sobre el proceso con el identificador (PID) especificado.
2. top
El comando top es una herramienta interactiva que muestra una lista dinámica de los procesos en ejecución y el uso de recursos del sistema en tiempo real. Esta herramienta es muy útil para identificar procesos que están consumiendo muchos recursos o que están causando problemas de rendimiento. Algunas de las teclas más útiles dentro de top son:
q: Salir de top.
h: Mostrar la ayuda.
k: Matar un proceso.
r: Cambiar la prioridad de un proceso.
3. kill
El comando kill se utiliza para detener un proceso. Para utilizar este comando, es necesario conocer el PID del proceso que se desea detener. El PID se puede obtener utilizando el comando ps o top. Una vez que se conoce el PID, se puede ejecutar el comando kill PID para detener el proceso.
Existen diferentes señales que se pueden enviar a un proceso utilizando el comando kill. La señal más común es SIGTERM, que solicita al proceso que se cierre de forma ordenada. Si el proceso no responde a esta señal, se puede utilizar la señal SIGKILL, que fuerza al proceso a detenerse de inmediato.SIGKILL es una herramienta poderosa pero drástica en la gestión de procesos en Linux. Debe usarse con precaución, ya que no permite al proceso realizar acciones de limpieza antes de terminar. Ejemplo de SIGKILL: kill -9 1234
4. nice
El comando nice se utiliza para cambiar la prioridad de un proceso. La prioridad de un proceso determina qué procesos tendrán preferencia a la hora de utilizar los recursos del sistema. Los procesos con mayor prioridad tendrán más oportunidades de ejecutarse que los procesos con menor prioridad.
Para utilizar nice, se puede especificar un valor de prioridad entre -20 y 19. Los valores más bajos indican una mayor prioridad. Por ejemplo, para ejecutar un programa con una prioridad alta, se puede utilizar el comando nice -10 programa.
Ejercicios
ejercicio 1
Descripción:
Listar todos los procesos en ejecución en el sistema utilizando el comando ps con la opción aux. Identificar el proceso de tu terminal (bash) y anota su PID.
ejercicio 2
Descripción:
Usar el comando top para monitorear los procesos en tiempo real. Identifica el proceso que consume más CPU y anota su PID.
ejercicio 3
Descripción:
Detener un proceso utilizando el comando kill. Para ello, primero inicia un proceso en segundo plano (por ejemplo, sleep 300 &) y luego detenlo usando su PID.
ejercicio 4
Descripción:
Cambia la prioridad de un proceso utilizando el comando nice. Inicia un proceso (por ejemplo, sleep 300 &) con una prioridad de 10 y verifica su prioridad con el comando ps.
ejercicio 5
Descripción:
Mata un proceso que no responde utilizando la señal SIGKILL. Para ello, inicia un proceso en segundo plano (por ejemplo, sleep 300 &) y luego mátalo usando su PID.
Algo más para profundizar:
1 Una vez qué hacemos: firefox& ¿Qué sucede exactamente?
2 Describe qué sucede aquí: ps auxww| grep "firefox"
3 Describe qué entiendes por comando "colgado" según el video.
4 Existe alguna otra forma a la propuesta para terminar con ese proceso 'cat'.
Gestión de recursos
Además de la gestión de procesos, Linux también ofrece herramientas para gestionar otros recursos del sistema, como la memoria RAM, el espacio en disco y la red. Esto permite optimizar el rendimiento del sistema y evitar problemas de escasez de recursos.
Administración de usuarios y grupos
En GNU/Linux, cada usuario tiene una cuenta que le permite acceder al sistema y realizar diversas tareas. Los usuarios se pueden agrupar en grupos para facilitar la gestión de permisos y recursos.
Usuarios
Cada usuario tiene un nombre de usuario único y una contraseña que le permiten identificarse en el sistema. Además, cada usuario tiene un directorio personal donde se almacenan sus archivos y configuraciones.
Grupos
Los grupos son conjuntos de usuarios que comparten ciertos permisos y recursos. Esto facilita la administración de permisos, ya que en lugar de asignar permisos a cada usuario individualmente, se pueden asignar permisos a un grupo y todos los usuarios de ese grupo heredarán esos permisos.
Comandos útiles
Algunos comandos útiles para la administración de usuarios y grupos son:
useradd: Crea un nuevo usuario.
userdel: Elimina un usuario.
usermod: Modifica la información de un usuario.
passwd: Cambia la contraseña de un usuario.
groupadd: Crea un nuevo grupo.
groupdel: Elimina un grupo.
groupmod: Modifica la información de un grupo.
Importancia de la administración de usuarios y grupos
La administración de usuarios y grupos es fundamental para la seguridad y el correcto funcionamiento de un sistema GNU/Linux. Permite controlar quién tiene acceso al sistema y qué pueden hacer los usuarios, así como organizar a los usuarios en grupos para facilitar la gestión de permisos y recursos.
Para crear un usuario en Linux, se utiliza el comando useradd.
ejemplo:
sudo useradd nuevo_usuario
Esto crea un nuevo usuario, pero sin contraseña. Para asignarle una contraseña, se usa:
ejemplo:
sudo passwd usuario
También puedes crear un usuario con un directorio personal y un grupo específico:
ejemplo:
sudo useradd -m -s /bin/bash -g grupo usuario
Para eliminar un usuario, se usa el comando userdel.
ejemplo:
sudo userdel usuario
Elimina el directorio personal y los archivos del usuario.
ejemplo:
sudo userdel -r nombre_usuario
Algunas consideraciones:
En Debian y todas sus derivadas podemos usar useradd o también adduser. El uso del último comando es igual al estudiado antes.
ejemplo:
sudo adduser nuevo_usuario
Para otras distribuciones solo disponemos de useradd no existiendo el comando adduser. Esas distribuciones son: Fedora, OpenSuse, CentOS, Slackware entre otras.
Ejercicios
ejercicio 1
Descripción:
Crear un nuevo usuario llamado "programador" y asigna este usuario al grupo "desarrollo".
ejercicio 2
Descripción:
El usuario "programador" necesita que su directorio personal sea cambiado a "/var/www/html/programador". Realiza los cambios necesarios.
ejercicio 3
Descripción:
Elimina el usuario "programador" y su directorio personal.
ejercicio 4
Descripción:
Muestra la información del usuario "programador", incluyendo su UID, GID y grupos a los que pertenece.
ejercicio 5
Descripción:
El grupo "desarrollo" necesita tener permisos de lectura y escritura en el directorio "/var/www/html/proyectos". Realiza los cambios necesarios.
¿Qué son los permisos en GNU/Linux?
Los permisos en GNU/Linux no son otra cosa que aquellos que tiene un usuario sobre directorios o archivos.
Listar permisos en un directorio:
ls -ld directorio
Cambiar los permisos del directorio:
Los permisos en GNU/Linux se pueden adjudicar de forma simbólica: usando letras como rwx (lectura, escritura, ejecución).
Otra forma es numérica: usando números del 0 al 7, donde cada dígito representa los permisos para el propietario, grupo y otros.
Dar permisos de lectura (r), escritura (w) y ejecución (x) al propietario, y solo lectura y ejecución al grupo y otros:
chmod 755 directorio
Aquí, 755 significa:
7 (propietario): lectura (4) + escritura (2) + ejecución (1).
5 (grupo y otros): lectura (4) + ejecución (1).
Dar permisos completos:
chmod 777 directorio
El comando 'chown' permite cambiar el propietario a un directorio o archivo.
chown usuario archivo.txt -----> cambiar el propietario de un archivo.
chown usuario:grupo archivo.txt -----> cambiar propietario y grupo del archivo.
chown -R usuario:grupo directorio/ -----> cambiar propietario y su contenido recursivamente.
Algo más para profundizar:
1 Según el video ¿Quién es el dueño del archivo?
2 ¿Qué sucede cuando se crea un nuevo usuario en el sistema?
3 ¿QUé significa x r w en el sistema de permisos de Linux?
4 ¿Con los permisos 664 qué tipo de permisos obtienen?