À l'aide de ps -ef | grep Tomcat
, j'ai trouvé un serveur Tomcat en cours d'exécution. J'ai essayé kill -9 {id}
mais il retourne "Aucun processus de ce type". Qu'est-ce que je fais mal?
Voici un exemple:
Admins-MacBook-Pro:test-parent tom.maxwell$ ps -ef | grep Tomcat
2043706342 39707 39695 0 3:40PM ttys000 0:00.00 grep Tomcat
Admins-MacBook-Pro:test-parent tom.maxwell$ kill -9 39707
-bash: kill: (39707) - No such process
Il n'est pas nécessaire de connaître le pid (ID de processus) de Tomcat pour le tuer. Vous pouvez utiliser la commande suivante pour tuer Tomcat:
pkill -9 -f Tomcat
ps -ef | grep Tomcat | awk '{print $ 2}' | xargs kill -9
https://Gist.github.com/nrshrivatsan/1d2ea4fcdcb9d1857076
Partie 1
ps -ef | grep Tomcat => Obtenir tous les processus avec Tomcat grep
Partie 2
Une fois que nous avons les détails du processus, nous transmettons cela dans la partie 2 du script.
awk '{print $ 2}' | xargs kill -9 => Récupère la deuxième colonne [ID du processus] et les tue avec l'option -9
J'espère que cela t'aides.
Tomcat n'est pas en cours d'exécution. Votre recherche vous montre le processus grep, qui recherche Tomcat. Bien sûr, au moment où vous voyez cette sortie, grep n'est plus en cours d'exécution, donc le pid n'est plus valide.
Comme d'autres l'ont déjà noté, vous avez vu le processus grep. Si vous souhaitez limiter la sortie à Tomcat lui-même, vous avez deux possibilités
envelopper le premier caractère recherché dans une classe de caractères
ps -ef | grep '[t]omcat'
Ceci recherche aussi Tomcat, mais manque l’entrée grep [t]omcat
, car elle ne correspond pas à [t]omcat
.
utiliser un format de sortie personnalisé avec ps
ps -e -o pid,comm | grep Tomcat
Cela montre seulement le pid et le nom du processus sans les arguments du processus. Ainsi, grep est répertorié en tant que grep
et non en tant que grep Tomcat
.
il suffit de taper la commande ci-dessous dans le terminal
ps -ef |grep 'catalina'
copier la valeur de l'identifiant du processus, puis taper la commande suivante et coller l'identifiant du processus
kill -9 processid
ps -ef
listera tous vos processus en cours
| grep Tomcat
passera la sortie à grep
et recherchera des instances de Tomcat. Puisque grep
est un processus en soi, il est renvoyé de votre commande. Cependant, votre sortie ne montre aucun processus d'exécution de Tomcat.
ps -Af | grep "Tomcat" | grep -v grep | awk '{print$2}' | xargs kill -9
Cela a fonctionné pour moi:
Étape 1: echo ps aux | grep org.Apache.catalina.startup.Bootstrap | grep -v grep | awk '{ print $2 }'
Cette commande ci-dessus renvoie "id_processus"
Étape 2: kill -9 process_id
// Ce process_id identique à l'étape 1: sortie
Pour tuer un processus par son nom, j'utilise ce qui suit
ps aux | grep "search-term" | grep -v grep | tr -s " " | cut -d " " -f 2 | xargs kill -9
Le tr -s " " | cut -d " " -f 2
est identique à awk '{print $2}'
. tr
supprime les espaces de tabulation en espace simple et cut
reçoit <SPACE>
comme délimiteur et la deuxième colonne est demandée. La deuxième colonne de la sortie ps aux
est l'identifiant du processus.
J'ai dû mettre fin au processus Java actifMQ parmi de nombreux processus Java sur le serveur. Celui-ci est lancé par l'utilisateur spécifique (nom d'utilisateur est activemq) . Un bon moyen de séparer peut donc être de démarrer un processus par un utilisateur spécifique:
ps -ef | grep "activemq" | awk '{print $2}' | xargs kill -9
comme @Aurand l'a dit, Tomcat n'est pas en cours d'exécution. vous pouvez utiliser le
ps -ef |grep Java | grep Tomcat
commande pour ignorer les programmes ps
.
travaillé pour moi dans les fichiers scripte de Shell.
kill -9 $(ps -ef | grep 8084 | awk 'NR==2{print $2}')
NR est pour le nombre d'enregistrements dans le fichier d'entrée .awk
peut trouver ou remplacer du texte