GNU/Linux >> Linux Esercitazione >  >> Linux

Come impostare l'ID processo in Linux per un programma specifico

In realtà, c'è un modo per farlo. Dal kernel 3.3 con CONFIG_CHECKPOINT_RESTORE impostato (che è impostato nella maggior parte delle distribuzioni), c'è /proc/sys/kernel/ns_last_pid che contiene l'ultimo pid generato dal kernel. Quindi, se vuoi impostare il PID per il programma biforcuto, devi eseguire queste azioni:

  1. Apri /proc/sys/kernel/ns_last_pid e ottieni fd
  2. floccalo con LOCK_EX
  3. scrivi PID-1
  4. forchetta

Ecco! Il bambino avrà il PID che volevi. Inoltre, non dimenticare di sbloccare (flock con LOCK_UN) e chiudere ns_last_pid.

Puoi controllare il codice C sul mio blog qui.


Come molti hanno già suggerito, non è possibile impostare direttamente un PID, ma di solito le shell hanno funzionalità per sapere qual è l'ultimo ID di processo biforcuto.

Ad esempio in bash puoi pranzare un eseguibile in background (aggiungendo & ) e trova il suo PID nella variabile $! .Esempio:

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

Su CentOS7.2 puoi semplicemente fare quanto segue:

Diciamo che vuoi eseguire il comando sleep con un PID di 1894.

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

(Tuttavia, tieni presente che se per caso un altro processo viene eseguito nel brevissimo lasso di tempo tra il comando echo e sleep potresti finire con un PID di 1895+. L'ho provato centinaia di volte e non è mai successo Se vuoi garantire il PID dovrai bloccare il file dopo averlo scritto, eseguire sleep, quindi sbloccare il file come suggerito nella risposta di Ruslan sopra.)


Linux
  1. Come uccidere un processo in esecuzione su una porta specifica in Linux?

  2. Come disabilitare un comando specifico per un utente specifico in Linux

  3. Come ottenere solo l'utente, il pid e il comando eseguito per un processo specifico? (Ubuntu 11.10)

  4. Come impostare lo swapiness per processo per Linux?

  5. Come trovare il file .pid per un determinato processo

Come eseguire un comando per un tempo specifico in Linux

Come configurare tlog su host Linux per la registrazione del terminale

Come configurare un cluster Pacemaker per Linux ad alta disponibilità

Come impostare uno sfondo diverso per ogni monitor in Linux

Come trovare il PID e il PPID di un processo in Linux

Come configurare un Killswitch Linux per VPN