Comment récuperer PID d'un shell_exec ?

Fermé
Mihawka - 27 févr. 2017 à 22:26
 Utilisateur anonyme - 4 mars 2017 à 08:31
Bonjour,

Je suis propriétaire de serveur minecraft et je voudrais récupérer le pid de ce code

<?php shell_exec('java -Xms256M -Xmx10G -jar spigot.jar')?>

2 réponses

salut,

je te donne une réponse, mais je ne l'ai pas testée :

si je fait :

ps -e        
  PID TTY          TIME CMD
    1 ?        00:00:02 systemd
    2 ?        00:00:00 kthreadd
    3 ?        00:00:00 ksoftirqd/0
    5 ?        00:00:00 kworker/0:0H
    7 ?        00:00:10 rcu_sched
    8 ?        00:00:00 rcu_bh
    9 ?        00:00:00 migration/0
   10 ?        00:00:00 lru-add-drain
   11 ?        00:00:00 watchdog/0
   12 ?        00:00:00 cpuhp/0
   13 ?        00:00:00 cpuhp/1
   14 ?        00:00:00 watchdog/1
   15 ?        00:00:00 migration/1
   16 ?        00:00:00 ksoftirqd/1
   19 ?        00:00:00 cpuhp/2
   20 ?        00:00:00 watchdog/2
   21 ?        00:00:00 migration/2
   22 ?        00:00:00 ksoftirqd/2
   25 ?        00:00:00 cpuhp/3
   26 ?        00:00:00 watchdog/3
   27 ?        00:00:00 migration/3
   28 ?        00:00:00 ksoftirqd/3
   31 ?        00:00:00 kdevtmpfs
   32 ?        00:00:00 netns
   33 ?        00:00:00 khungtaskd
   34 ?        00:00:00 oom_reaper
   35 ?        00:00:00 writeback
   36 ?        00:00:00 kcompactd0
   38 ?        00:00:00 ksmd
   39 ?        00:00:00 khugepaged
   40 ?        00:00:00 crypto
   41 ?        00:00:00 kintegrityd
   42 ?        00:00:00 bioset
   43 ?        00:00:00 kblockd
   44 ?        00:00:00 devfreq_wq
   45 ?        00:00:00 watchdogd
   47 ?        00:00:00 kswapd0
   48 ?        00:00:00 vmstat
   58 ?        00:00:00 kthrotld
   60 ?        00:00:00 ipv6_addrconf



j’obtiens la liste des processus. j'ai volontairement tronqué le résultat. On peut voir par exemple que le pid 40 c'est crypto.

ps -e | tr -s " " | grep crypto | cut -d " " -f 2
40


en faisant un grep sur crypto, j'isole juste la ligne qui concerne crypto. Il faut que trouve le nom du processus, peut être 'spigot' et que tu lance cette commande en remplaçant %PROCESSUS% par le nom.


$pid = shell_exec('ps -e | tr -s " " | grep %PROCESSUS% | cut -d " " -f 2');


Enfin comme je t'ai dit. je n'ai pas testé avec shel_exec, peut être que se ne fonctionnera pas du premier coups.
3
Marche pas pour moi mais fonctionne bien seul
0
salut,

regarde la seconde réponse de ce post :

https://stackoverflow.com/questions/1470910/invoke-external-shell-script-from-php-and-get-its-process-id

et essai de faire plutôt ansi :


$command =  'java -Xms256M -Xmx10G -jar spigot.jar > /dev/null 2>&1 & echo $!';

$pid = exec($command);

var_dump($pid);

2