Existe-t-il un moyen de me pgrep
donner toutes les informations sur chaque processus qui le ps
fait? Je sais que je peux ps
passer à travers, grep
mais c'est beaucoup de saisie et cela me donne également le grep
processus lui-même que je ne veux pas.
27
function ppgrep() { pgrep "$@" | xargs ps fp 2> /dev/null; }
Sinon, si aucun processus ne correspond à votre recherche, ilps
vide toute une mégilla d'utilisation.ps
faut un trait d'union pour les drapeaux:function ppgrep() { pgrep "$@" | xargs ps -fp 2> /dev/null; }
-r
qui n'exécutera la commande que si elle a reçu une liste.ps fp $(pgrep -d, "$@")
Combinez
pgrep
avec l'ps
utilisationxargs
!Par exemple, essayez
pour obtenir une liste complète des processus
user
.C'est bien que vous gardiez la première ligne avec les noms des colonnes.
grep
supprime toujours les noms de colonne.la source
-u
= correspond uniquement aux processus dont l'ID utilisateur effectif est répertorié (voirpgrep
référence linux.die.net/man/1/pgrep )-f
= liste complète,-p
= sélectionner par PID (voirps
référence - man7.org/linux/man -pages / man1 / ps.1.html )Ce qui suit ne vous donne que PID + ligne de commande complète. Pour "toutes les infos
ps
", voir les autres réponses ...La plupart des linux utilisent procps-ng . Depuis 3.3.4 (publié en 2012),
pgrep -a
(--list-full
) affiche la ligne de commande complète.Remarque: Par défaut, pgrep ne fait correspondre que le modèle que vous donnez avec le nom de l'exécutable. Si vous souhaitez faire correspondre la ligne de commande complète (comme le fait le ps de grepping), ajoutez l' option
-f
(--full
).Dans les anciennes versions (y compris le projet procps d' origine ), l'
-l
option montrait des informations mais son comportement variait:pgrep -fl
fait correspondre le modèle avec la ligne de commande complète et a montré la ligne de commande complète.pgrep -l
seul ne correspondait qu'au nom de l'exécutable et ne montrait que le nom de l'exécutable.Si vous ne voulez pas de correspondance complète, vous ne pouvez pas voir la ligne de commande complète :-( [ https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=526355#15 ]
Vous ne savez pas quel code * BSD utilise, mais leur page de manuel documente l'ancien
-fl
comportement.Malheureusement, vous ne pouvez même pas l'utiliser de manière
-fl
portable - dans le récent procps-ng,-f
(--list-name
) affiche toujours uniquement le nom de l'exécutable.la source
Linux
Pour la version GNU de
pgrep
la-i
(insensibilité à la casse) n'est pas prise en charge, et une sortie longue + floue est obtenue avec-af
.Page de manuel :
MacOS
Sur OSX (et par déduction, sur BSD)
-l
( sortie longue ) en combinaison avec-f
( correspondance avec les listes d'arguments complètes ) affichera la commande complète (-i
ajoute une insensibilité à la casse):La page de manuel :
la source
Utilisez l'option -v pour grep - elle renvoie tout MAIS le motif demandé.
la source
pgrep -u user | xargs ps -f -p
Je ne pense pas qu'il y en ait, la plupart des informations que vous pouvez obtenir sont le nom et l'identifiant du processus en utilisant l'option -l pour pgrep.
ps prend en charge toutes sortes d'options de formatage, donc je voudrais simplement créer un alias pour ce que vous voulez enregistrer. Un moyen simple d'exclure le processus grep de la sortie nous pour inclure un canal supplémentaire
grep -v grep
pour exclure tout processus grep.la source
Afin d'éliminer le
grep
processus, vous pouvez utiliser des crochets dans le cadre de votre modèle:Vous pouvez le faire avec
ps
etpgrep
:la source
Cela vous aidera, je suppose:
ps auxww
la source