Je recherche une seule ligne qui renvoie le pid d'un processus en cours.
Actuellement, j'ai:
ps -A -o pid,cmd|grep xxx|head -n 1
Et cela renvoie le poing pid, command
. Je n'ai besoin que du premier numéro de la sortie et j'ignore le reste. Je suppose sed
ou awk
aiderais ici mais mon expérience avec eux est limitée.
En outre, cela a un autre problème, il renverra le pid de grep si le xxx n'est pas en cours d'exécution.
Il est vraiment important d'avoir une seule ligne, car je veux réutiliser la sortie pour faire autre chose, comme tuer ce processus.
Réponses:
Si vous voulez juste le pid du processus, vous pouvez l'utiliser
pgrep
si disponible.pgrep <command>
renverra le pid de la commande (ou la liste des pids dans le cas où plusieurs instances de la commande sont en cours d'exécution, auquel cas vous pouvez utiliserhead
ou d'autres commandes appropriées)J'espère que cela vous aidera!
la source
kill `pgrep xxx`
pkill
.Juste une commande de plus nécessaire; vous ne voulez que le premier champ d'une ligne de valeurs séparées par des espaces:
Eh bien, deux. J'ai ajouté un autre grep pour supprimer grep lui-même de la sortie.
la source
Utilisez simplement pgrep, c'est beaucoup plus simple
Ce qui précède sélectionne le processus le plus ancien avec le nom exact
la source
pkill
(avec les mêmes arguments) serait le choix le plus direct.pidof xxx
suffira sur linuxla source
Fonctionnant sur Cygwin donc je ne peux pas utiliser -A et -o, mais quelque chose comme ça:
la source
vous pouvez faire quelque chose comme
alors xxx doit être le nom du processus et il ne récupérera pas grep à cause de l'ancre ^
la source