# 103.6 Modificar la prioridad de ejecución de los procesos

<table data-header-hidden data-full-width="true"><thead><tr><th width="148"></th><th></th></tr></thead><tbody><tr><td><strong>Importancia</strong></td><td>3</td></tr><tr><td><strong>Descripción</strong></td><td>El candidato debe ser capaz de gestionar las prioridades de ejecución de los procesos.</td></tr></tbody></table>

#### *Áreas de conocimiento clave:*

* Conocer la prioridad predeterminada con la que se crea un proceso.
* Ejecutar un programa con una prioridad mayor o menor de la que tiene de forma predeterminada.
* Cambiar la prioridad de un proceso en ejecución.

### *Contenidos*

Lanzar un proceso con cierta prioridad o relanzarlo con prioridad.

Para ver el listado de procesos recuerda que podemos usar [ps](https://www.tecmint.com/ps-command-examples-for-linux-process-monitoring/), [top](https://www.tecmint.com/12-top-command-examples-in-linux/) or [htop](https://www.tecmint.com/htop-linux-process-monitoring/). En este caso usaremos:

```bash
#Primero crearemos un alias para visualizar los procesos y su prioridad
alias prioridad=ps -ef -o pid,pri,ni,comm
```

Aquí, el NI indica el "niceness" del proceso. En las salidas **top** y **htop** , notará que hay una columna `PR` y `PRI` que muestra la prioridad de un proceso.

Esto, por lo tanto, significa que:

* `NI` – es el valor de "niceness", que es un concepto de espacio de usuario, mientras que
* `PR` o `PRI` es la prioridad real del proceso, como se ve en el kernel de Linux.

<figure><img src="https://www.tecmint.com/wp-content/uploads/2017/09/View-Processes-Nice-Values.png" alt="View Linux Processes Nice Values" height="344" width="542"><figcaption><p>View Linux Processes Nice Values</p></figcaption></figure>

Alternativamente, puede usar las utilidades **`top`** o **`htop`** para ver los valores de nice de los procesos de Linux como se muestra.

<figure><img src="https://www.tecmint.com/wp-content/uploads/2017/09/View-Process-Nice-Values-using-top.png" alt="Check Linux Process Nice Values using Top Command" height="344" width="752"><figcaption><p>using Top Command</p></figcaption></figure>

<figure><img src="https://www.tecmint.com/wp-content/uploads/2017/09/View-Process-Nice-Values-using-htop.png" alt="Check Linux Process Nice Values using Htop Command" height="382" width="802"><figcaption><p>Using Htop Command</p></figcaption></figure>

El rango de nice (NI) es de -20 a 19 Para calcular la prioridad sigue lo siguiente:

```bash
PR = 20 + NI
PR = 20 + (-20 to + 19)
PR = 20 + -20  to 20 + 19
```

Pero si ve un `rt` en lugar de un número como se muestra en la captura de pantalla a continuación, básicamente significa que el proceso se está ejecutando bajo prioridad de programación en tiempo real.

<figure><img src="https://www.tecmint.com/wp-content/uploads/2017/09/Linux-rt-example.png" alt="Linux rt Process" height="420" width="842"><figcaption><p>Linux rt Process</p></figcaption></figure>

![](https://didweb.gitbooks.io/comandos-linux/content/assets/graficos_linux.png)

### nice <a href="#nice" id="nice"></a>

Ejecuta un comando con una prioridad distintas a la de por defecto.

Solo los usuarios root pueden establecer prioridades urgentes (negativos).

```bash
nice -n NUMERO_PRIORIDAD COMANDO
```

### renice <a href="#renice" id="renice"></a>

Cambia la prioridad de un proceso ejecutándose. Por defecto, no se puede aumentar la urgencia.

```bash
renice -n NUMERO_PRIORIDAD COMANDO
```

Por ejemplo, al ejecutar yo el siguiente comando:

```bash
nice -n +12 sleep 1000 &
```

Al lanzar el comando y revisar la prioridad, veré que ahora será de 7, por lo tanto mayor prioridad que el resto.

{% hint style="warning" %}
**RECUERDA:**&#x20;

entre 0 y 19 puede usarlos el usuario

entre -21 y +19 puede usarlos solo `root`
{% endhint %}

Puedo ejecutar varias veces el mismo comando con distintas prioridades:

```bash
nice -n +8 sleep 1000 &
nice -n +18 sleep 1000 &
```

Si ahora quiero que uno de los procesos mediante su PID cambie de prioridad, usaré el comando `renice`:

```bash
renice -n 4 4589 #la prioridad pasa a 15
```

Pero si ahora vuelvo a intentarlo:

```bash
renice -n 11 4586 #aquí fallará y no me dará acceso
```

Siempre podrás bajarle la prioridad pero no aumentarla si no es con autoridad y permisos.
