Je lance un programme d'installation à partir de Java pour installer un logiciel sur Linux, je veux connaître son "identifiant de processus et son nom".
Dans Windows, j'ai pu l'obtenir en utilisant la tasklist
commande, mais sous Linux, je n'ai pas été capable de faire la même chose. J'ai essayé avec ps -ef
et les ps -A
commandes, mais cela ne montre pas le nom de l'image ou le PID du processus.
Y at-il une commande pour obtenir ces valeurs?
ps ax
. De plus, le démarragetop
ouatop
dans une autre console peut nous éclairer sur le nom de processus réel du programme d'installation. Il est fort probable qu'il s'agisse du processus en haut une fois que l'installation a commencé.top
sur une autre console, puis démarrez votre programme d’installation, revenez rapidementtop
et observez le processus qui utilise le plus le processeur.Essayez
ps -aef | grep your_process_name
, remplacezyour_process_name
par votre nom d'installation.J'espère que cela t'aides !!
la source
*.run
est unsh
script énorme , doncps auxw
vous voyez lesh
processus;top
va également vous montrer tous les processus les plus actifs ...pa -aef | grep -i xxx
Il est généralement préférable de capturer l'ID de processus au moment de le lancer plutôt que d'essayer de le trouver plus tard.
Si vous utilisez l'API C, vous obtenez le PID du processus généré en tant que valeur de retour depuis
fork
ouvfork
dans le processus mère.Dans un shell
$!
dérivé de Bourne , vous utilisez immédiatement après le démarrage.la source
Il semble que vous recherchiez une solution centrée sur Linux plutôt que sur une solution portable. Sous Linux, le moyen facile, efficace et fiable d'obtenir les informations dont vous avez besoin de Java consiste à utiliser le
proc
système de fichiers, et en particulier le/proc/self
répertoire. Laman 5 proc
page de manuel décrit chaque fichier.Le
pid
premier champ de/proc/self/stat
. Le nom de l'image est le deuxième.Il est très facile d'écrire une classe pour envelopper ces appels. Ce ne seront que quelques lignes de code faisant des E / S de base: rapides et robustes. L'utilisation de programmes tiers est plus difficile à obtenir et moins efficace.
Cette solution n'est pas portable car la plupart des systèmes Unix ne possèdent pas de
proc
système de fichiers. Vous avez quatre options du meilleur au pire, à mon humble avis:proc
système de fichiers pour LinuxRuntimeMXBean.getName()
renvoie généralement lepid
, vous pouvez également utiliser la réflexion pour y accéderjava.lang.UnixProcess.pid
. L'implémentation peut différer selon les machines virtuelles et peut changer à tout moment. Des solutions acceptables si vous contrôlez l'environnement.ps
Si vous décidez de vous fier à des outils externes, vous devez faire très attention à la portabilité (les options et la sortie peuvent varier considérablement entre deux systèmes d'exploitation) et aux paramètres régionaux.
la source
s'il s'agit d'un installateur graphique, vous pouvez exécuter ce one-liner dans un terminal:
le curseur de votre souris se transformera en réticule. Maintenant, cliquez sur la fenêtre en question. vous devriez maintenant voir les informations de processus imprimées dans le terminal.
la source