Différence entre ps -ef | grep java et ps -ef | grep * .java

J’essaie de trouver tous les processus Java en cours d’exécution dans une boîte Unix. Je suis confus entre

ps –ef|grep java 

et

 ps –ef|grep *.java 

Lequel est correct et quelle est la différence exacte?

PS: les deux renvoient des résultats différents

Sortie de ps –ef|grep *.java

 ps -ef | grep *.java aaassa1 7507 2304 0 11:49 pts/4 00:00:00 grep *.java 

grep ne fait que correspondre au texte, il n’a aucune idée du nom du processus, du nom du fichier, etc.

c’est-à-dire que si vous avez un script python appelé likejava.py , il sera également dans le résultat.

De retour à votre question, votre *.java n’est pas bon, car grep fonctionne avec des regex, pas des patterns globaux.

Tu pourrais essayer:

ps -ef|grep $(which java) listera les processus java, mais seulement pour votre installation Java par défaut. Si vous avez plusieurs Java installés, par exemple votre Jboss avec java7, tomcat avec java6 et eclipse avec java5, cela échouera.

Il existe un autre outil appelé pgrep . Vous pouvez essayer, par exemple

 pgrep -l java 

vous pourriez faire l’ man pgrep pour obtenir plus d’informations:

 pgrep, pkill - look up or signal processes based on name and other atsortingbutes 

EDIT append un petit ps .. | grep sortingck

juste vu votre sortie dans la question:

Vous avez grep *.java en sortie, c’est un bon exemple. grep *.java n’est pas un processus java mais un texte “java”. donc c’est là.

Vous pouvez l’éviter par ps...|grep [j]ava fonctionne pour bash.

Le premier est correct. Dans le second, votre shell développe le *.java fonction de votre répertoire de travail actuel, avec des résultats amusants.

Exactement ce que ces résultats sont … Je devine ici, mais en supposant que vous avez des fichiers foo.java et bar.java dans votre bar.java actuel, ce dernier est en train de faire:

 ps -ef | grep bar.java foo.java 

Qui, je crois , va simplement chercher bar.java dans foo.java, en ignorant les entrées de ps . Mais ne me citez pas là-dessus – le fait est que ce n’est presque sûrement pas ce que vous voulez.