Introducción

Introducción

La capacidad del usuario para adjuntar un valor de prioridad a su propio proceso al ejecutarse determina si es amable con sus compañeros de usuarios en el mismo sistema. ¿Estás siendo amable o simplemente abusas de los recursos del sistema sin razón aparente?? En este artículo aprenderá cómo administrar sus procesos en términos de cuánta potencia de procesamiento consumen y cómo cambiar un valor de prioridad de sus procesos utilizando lindo Y re bueno Comando de Linux. Comenzaremos con alguna teoría básica sobre lo que es el proceso, la programación de procesos, cómo bifurcar un nuevo proceso y luego pasamos a lindo Comandar y explicar cómo cambiar el valor de prioridad del proceso.

Que es el proceso

En palabras simples, un proceso es una convención de nombres utilizada por Linux para asumir el papel de un programa en ejecución. Un proceso es una colección de reglas por la cual cualquier programa en particular utiliza el tiempo asignado del procesador, la memoria y los recursos de E/S. Cada proceso que se ejecuta en un sistema Linux tiene su propia ID de proceso (PID) por el cual puede ser monitoreado y administrado.

Linux Kernel está diseñado para recopilar varias información sobre cada proceso. Estos incluyen, entre otros::

  • Estado del proceso (ejecutable, durmiendo, zombie o detenido)
  • Prioridad de ejecución del proceso (amabilidad)
  • Información sobre recursos usados
  • propietario del proceso
  • ¿Qué puertos y archivos de red habían abierto cada proceso en particular?
  • y más…

Ahora que tenemos alguna idea sobre cuál es el proceso, podemos seguir adelante y crear algún proceso. Para hacer esto, simplemente abra su terminal y ejecute el comando sí en segundo plano y redirige su salida a /dev /null:

$ sí> /dev /null & [1] 5997 

Después de eso, use el comando PS -L, no podemos extraer la información sobre nuestro proceso YES:

$ ps -l f s uid pid ppid c pri ni addr sz wchan tty tiempo cmd 0 s 1000 5830 3283 0 80 0 - 6412 espera pts/0 00:00:00 bash 0 R 1000 5997 5830 99 80 0 - 1757 - PTS/ 0 00:00:09 Sí 0 R 1000 5998 5830 0 80 0 - 2399 - PTS/0 00:00:00 PD 

De lo anterior podemos leer hasta la siguiente información:

  • F - FLAG: El proceso no comenzó con los privilegios de superusuario. De lo contrario, veríamos el número 4 o la suma de 1 y 4. Controlar hombre ps para más información.
  • S - Estado: el proceso se está ejecutando actualmente
  • Uid - ID de usuario del usuario que inició el proceso. UID es un alias real para EUID (ID de usuario efectiva)
  • Pid - ID de proceso de nuestro El comando es 5997
  • Ppid - ID de proceso principal. Esta es una identificación de proceso de la que se había bifurtado nuestro comando de sí. En este caso es Bash con PID 5830.
  • C - Valor entero de la utilización del procesador en % .
  • Pri - Proceso prioritario. Cuanto mayor valor mayor prioridad.
  • NI - Buen valor con rango de -20 a 19. Cuanto más alto sea, más bueno será para otros usuarios en otras palabras, mayor valor, mayor prioridad.

Programación de procesos

Esta sección se puede omitir si no tiene ganas de entrar en más detalles sobre la prioridad del proceso y la programación. Aquí intentaremos describir el proceso de Linux con un resumen rudimentario fácil de entender, ya que este tema puede abarcar varias páginas y esa sería la única introducción.

Desde nuestro punto de vista, debemos entender que Linux (versión del kernel de Linux> = 2.6) El programador es preventivo. Esta es una capacidad que permite al núcleo elegir preventivamente ejecutar tareas de mayor prioridad sobre las que tienen una prioridad más baja. Además, el kernel separa las listas de prioridades de las tareas en tiempo real y las tareas de los usuarios que se extienden de 1 a 100 y 101 - 140 respectivamente.

Además, el núcleo de Linux asigna a tareas de mayor prioridad, tiempo cuántico más largo y tareas de menor prioridad, más corto tiempo cuántico es de aproximadamente 200 ms y 10 ms, respectivamente. En otras palabras, cada tarea puede ejecutar solo si tiene una porción de tiempo restante. Por lo tanto, el porte de tiempo más corto para ejecutar el proceso de las que el proceso permanece más corto en el runquue activo y, por lo tanto, consuma menos recursos. Una vez que la porción de tiempo del proceso está vacía, el proceso se mueve a Runqueue vencido donde su prioridad se vuelve a calcular y luego se mudó nuevamente a Runqueue activo. Esta relación se ilustra en el diagrama a su derecha. Es importante mencionar que tanto donde los runqueues activos y caducados contienen listas de tareas ordenadas por su prioridad.

Ciclo de vida del proceso

El principio básico de Linux Process Management contiene dos operaciones distintas al crear un nuevo proceso. La operación es donde el proceso se copia tenedor() llamar y así crea un nuevo proceso con PID único. La operación de la bifurcación es seguida más comúnmente por exec () operación que ejecuta un nuevo programa. El primer proceso creado durante el tiempo de arranque es en eso que siempre se asigna PID 1. Todos los demás procesos se consideran procesos infantiles de proceso init. En circunstancias normales antes del proceso de los niños, permite morir, este evento debe ser reconocido por un proceso de los padres enviando valor de salida. Terminación exitosa Enviar un valor de proceso principal 0. Si, por alguna razón, el proceso infantil supera el proceso de los padres en eso Aceptará este proceso como proceso huérfano.

Usando un buen comando

Dado que el poder de procesamiento fue y aún está creciendo exponencialmente a lo largo de los años, la importancia del buen comando está disminuyendo al mismo ritmo. Por lo tanto, como resultado, es muy hoy que se verá obligado a cambiar la prioridad del proceso manualmente. Sin embargo, esta habilidad está ahí y aún puede ser útil en algunas situaciones. Por defecto, Niza establecerá un buen nivel en 10.

ps bonito sí> /dev /null & [1] 5199 $ PS -L F s uid pid ppid c pri ni addr sz wchan tty tiempo cmd 0 s 1000 3383 3380 0 80 0 - 6445 espera pts/0 00:00:00 bash 0 r 1000 5199 3383 99 90 10 - 1757 - pts/0 00:00 : 07 sí 0 R 1000 5200 3383 0 80 0 - 2399 - PTS/0 00:00:00 PD 

Para iniciar el proceso con otro valor agradable que 10 podemos usar -N Switch.

ps bonito -n 15 sí> /dev /null & O $ bonito -15 sí> /dev /null & [1] 5270 $ PS -L F s uid pid ppid c pri ni addr sz wchan tty tiempo cmd 0 s 1000 3383 3380 0 80 0 - 6447 espera pts/0 00:00:00 bash 0 r 1000 5270 3383 99 95 15 - 1757 - pts/0 00:00 : 02 Sí 0 R 1000 5271 3383 0 80 0 - 2399 - PTS/0 00:00:00 PD 

Para establecer un buen valor por debajo de 0 permisos raíz se requieren. Nice seguirá iniciando el programa, sin embargo, el buen valor se establecerá en 0. Aquí, intentamos establecer un buen valor en -1 sin permisos raíz:

ps bonito -n -1 sí> /dev /null & [1] 5285 agradable: no se puede establecer la amabilidad: permiso denegado $ PS -L F s uid pid ppid c pri ni addr sz wchan tty tiempo cmd 0 s 1000 3383 3380 0 80 0 - 6447 espera pts/0 00:00:00 bash 0 r 1000 5285 3383 95 80 0 - 1757 - PTS/0 00:00 : 07 Sí 0 R 1000 5295 3383 0 80 0 - 2399 - PTS/0 00:00:00 PD 

Por lo tanto, para establecer un buen valor en menor de 0, necesitamos ejecutar el programa anterior como root o usar sudo.

# bonito -n -1 sí> /dev /null & [1] 5537 # PS -L F s uid pid ppid c pri ni addr sz wchan tty tiempo cmd 4 s 0 5428 3383 0 80 0 - 14430 espera pts/0 00:00:00 su 0 s 0 5436 5428 1 80 0 - 7351 espera pts/0 00:00 : 00 Bash 4 R 0 5537 5436 87 79 -1 - 1757 - PTS/0 00:00:04 SÍ 4 R 0 5538 5436 0 80 0 - 2399 - PTS/0 00:00:00 PS 

Usando el comando Renice

En la sección anterior hemos aprendido a iniciar un programa con un buen valor preestablecido usando un comando agradable. Aquí, intentamos cambiar el buen valor de un programa en ejecución usando el comando Renice. Aquí, tenemos un programa de SÍ en ejecución con buen valor de 10:

ps PS -L F s uid pid ppid c pri ni addr sz wchan tty tiempo cmd 0 s 1000 3383 3380 0 80 0 - 6447 espera pts/0 00:00:00 bash 0 r 1000 5645 3383 99 90 10 - 1757 - pts/0 00:00 : 04 Sí 0 R 1000 5646 3383 0 80 0 - 2399 - PTS/0 00:00:00 PD 

Para cambiar su valor, podemos usar el comando de Renice y suministrar PID y un buen valor. Cambiemos un buen valor a 15:

ps Renice -N 15 -P 5645 5645 (ID de proceso) Antigua prioridad 10, nueva prioridad 15 $ PS -L F s uid pid ppid c pri ni addr sz wchan tty tiempo cmd 0 s 1000 3383 3380 0 80 0 - 6447 espera pts/0 00:00:00 bash 0 R 1000 5645 3383 99 95 15 - 1757 - PTS/0 00:00 : 31 sí 0 R 1000 5656 3383 0 80 0 - 2399 - PTS/0 00:00:00 PD 

La regla a seguir es que el usuario que no es super supero puede aumentar el valor agradable (dar menos prioridad) a cualquier proceso. Si ahora intentaría cambiar a buen valor de 15 de vuelta a 10, aparecería el siguiente error:

ps Renice -N 10 -P 5645 Renice: no pudo establecer prioridad para 5645 (ID de proceso): permiso denegado 

El comando de Renice también le da a un usuario raíz la capacidad de cambiar un buen valor de los procesos de cualquier usuario. Esto se hace por -u switch. El siguiente comando de Linux cambiará una prioridad de todos los procesos del usuario a -19.

# Renice -n -19 -u lubos 1000 (ID de usuario) Antigua prioridad 0, nueva prioridad -19 

Conclusión

Buen comando puede ser una herramienta útil y ciertamente es fácil de usar. Tenga en cuenta que también puede usar el comando superior para los valores de proceso de Renice.

Tutoriales de Linux relacionados:

  • Cosas para instalar en Ubuntu 20.04
  • Cosas que hacer después de instalar Ubuntu 20.04 fossa focal Linux
  • Una introducción a la automatización, herramientas y técnicas de Linux
  • Cosas que hacer después de instalar Ubuntu 22.04 Jellyfish de Jammy ..
  • Bucles anidados en guiones Bash
  • Cosas para instalar en Ubuntu 22.04
  • Instale Arch Linux en VMware Workstation
  • Ubuntu 20.04 Guía
  • Cómo arrancar dual Kali Linux y Windows 10
  • Mint 20: Mejor que Ubuntu y Microsoft Windows?