GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo configurar la ID del proceso en Linux para un programa específico

En realidad, hay una manera de hacer esto. Desde el kernel 3.3 con el conjunto CONFIG_CHECKPOINT_RESTORE (que está configurado en la mayoría de las distribuciones), hay /proc/sys/kernel/ns_last_pid que contiene el último pid generado por el kernel. Por lo tanto, si desea configurar el PID para un programa bifurcado, debe realizar estas acciones:

  1. Abra /proc/sys/kernel/ns_last_pid y obtenga fd
  2. empújelo con LOCK_EX
  3. escribir PID-1
  4. tenedor

¡Voila! El niño tendrá el PID que desea. Además, no olvide desbloquear (rebaño con LOCK_UN) y cerrar ns_last_pid.

Puede consultar el código C en mi blog aquí.


Como muchos ya sugirieron, no puede establecer directamente un PID, pero generalmente los shells tienen facilidades para saber cuál es el último ID de proceso bifurcado.

Por ejemplo, en bash puede iniciar un ejecutable en segundo plano (añadiendo & ) y encuentra su PID en la variable $! .Ejemplo:

$ lsof >/dev/null &
[1] 15458
$ echo $!
15458

En CentOS7.2, simplemente puede hacer lo siguiente:

Digamos que desea ejecutar el comando de suspensión con un PID de 1894.

sudo echo 1893 > /proc/sys/kernel/ns_last_pid; sleep 1000

(Sin embargo, tenga en cuenta que si por casualidad se ejecuta otro proceso en el tiempo extremadamente breve entre el comando echo y sleep, podría terminar con un PID de 1895+. Lo he probado cientos de veces y nunca ha sucedido. para mí Si desea garantizar el PID, deberá bloquear el archivo después de escribirlo, ejecutar la suspensión y luego desbloquear el archivo como se sugiere en la respuesta de Ruslan anterior).


Linux
  1. Linux:¿cómo configurar la afinidad del procesador de un proceso en Linux?

  2. Linux:¿cómo dejar de compartir la red para el proceso actual?

  3. ¿Cómo reiniciar (o restablecer) un proceso en ejecución en Linux?

  4. ¿Cómo eliminar un proceso que se ejecuta en un puerto específico en Linux?

  5. Cómo deshabilitar un comando específico para un usuario específico en Linux

Cómo ejecutar un comando durante un tiempo específico en Linux

Cómo configurar tlog en hosts Linux para el registro de terminales

Cómo configurar un clúster de Pacemaker para Linux de alta disponibilidad

Cómo establecer un fondo de pantalla diferente para cada monitor en Linux

Cómo encontrar el PID y PPID de un proceso en Linux

Cómo configurar un Killswitch de Linux para VPN