J'ai un .jar
fichier qui est connu pour des dysfonctionnements. En cas de dysfonctionnement, seul un redémarrage est utile. J'ai un moyen de détecter ces dysfonctionnements (lecture du fichier journal de ladite .jar
) Donc je veux écrire un script, qui tue le processus chaque fois que le dysfonctionnement se produit. Le problème est:
confus@confusion:~$ ps -A
...
4438 ? 00:00:00 java
4439 ? 00:00:00 java
4443 ? 00:00:00 java
...
Le nom de processus de tous les .jar
s en cours d'exécution est naturellement "java". Comment puis-je savoir lequel de ces processus "java" est celui que je veux tuer, c'est-à-dire celui en cours d'exécution foobar.jar
?
Réponses:
Vous pouvez exécuter la
lsof
commande, qui répertorie les processus qui ont des fichiers ouverts, avec votre fichier jar donné en argument. Un exemple de visualisation d'un fichier avec moins:Pour réutiliser facilement le pid dans un script, vous pouvez l'exécuter en mode laconique:
la source
L'utilisation vous
ps ax
aidera.Il affichera l'arborescence des processus dans un style BSD qui montre simplement bien plus d'informations.
Pour trouver votre processus particulier, il vous suffit de rechercher le nom JAR.
ps ax | grep JARNAME
le fera.la source
Vous pouvez le faire nativement ou si "lsof" n'est pas installé via / proc // fd Exemple:
la source
Vous pouvez utiliser
jps
avec les-l
options qui renverront le fichier .jar utilisé avec le chemin complet.la source