web-dev-qa-db-fra.com

Quelle est la signification du symbole `|` dans la coque?

Que signifie le symbole | dans la commande Sudo ps -ef | grep processname?

Est-ce que quelqu'un peut aussi expliquer cette commande? J'ai utilisé cette commande uniquement pour obtenir le PID et tuer ce processus, mais j'ai aussi vu Sudo ps -ef | grep processname | grep -v grep et j'ai l'impression que -v grep revient à tuer l'ancien PID généré pour grep. Si c'est le cas, comment ça marche?

16
Aamir
ps -ef | grep processname

Il exécute d'abord Sudo ps -ef et passe le résultat à la deuxième commande.

La deuxième commande filtre toutes les lignes contenant le "nom de processus" de Word.

ps -ef | grep processname | grep -v grep répertorie toutes les lignes contenant processnameet ne contenant pas grepname__.

Selon man grep

-v, --invert-match
              Invert the sense of matching, to select non-matching lines.  (-v
              is specified by POSIX.)

Selon man ps

ps displays information about a selection of the active processes.

-e     Select all processes.  Identical to -A.

-f     Do full-format listing. This option can be combined with many
          other UNIX-style options to add additional columns.  It also
          causes the command arguments to be printed.  When used with -L,
          the NLWP (number of threads) and LWP (thread ID) columns will be
          added.  See the c option, the format keyword args, and the
          format keyword comm.

Vous pouvez combiner les paramètres -ef signifie la même chose que -e -f.

En fait, ps -ef | grep processname répertorie toutes les occurrences du processus appelé processnamename__.

13
Pilot6

Il s'appelle pipe. Il donne la sortie de la première commande comme entrée de la seconde commande.

Dans votre cas, cela signifie:
Le résultat de Sudo ps -ef est introduit comme entrée de grep processname

Sudo ps -ef:
Ceci répertorie tous les processus en cours d'exécution. Tapez man ps dans le terminal pour plus.

grep processname
Ainsi, cette liste de processus est introduite dans grep qui ne fait que rechercher le programme défini par programname.

Exemple

Taper Sudo ps -ef | grep firefox dans mon terminal retourne:

parto     6501  3081 30 09:12 ?        01:52:11 /usr/lib/firefox/firefox
parto     8295  3081  4 15:14 ?        00:00:00 /usr/bin/python3 /usr/share/unity-scopes/scope-runner-dbus.py -s web/firefoxbookmarks.scope
parto     8360  8139  0 15:14 pts/24   00:00:00 grep --color=auto firefox
35
Parto

Je vais essayer d'y répondre avec une réponse simple et pratique:

Le tube | vous permet de faire des choses géniales dans Shell! C’est le seul opérateur que je considère comme le plus utile et le plus puissant.

que diriez-vous de compter les fichiers dans un répertoire? simple:

ls | wc -l ..redirect la sortie de ls à wc avec le paramètre -l pour les lignes

ou comptage de lignes dans un fichier?

cat someFile | wc -l

et si je veux chercher quelque chose? 'grep' peut rechercher des occurrences de chaînes:

cat someFile | grep aRandomStringYouWantToSearchFor

il vous suffit de rediriger la sortie de la commande à gauche du tuyau vers la commande à droite du tuyau.

un niveau supplémentaire: combien de fois quelque chose se passe dans un fichier?

cat someFile | grep aRandomStringYouWantToSearchFor | wc -l

vous pouvez utiliser le | pour presque tout :)

fortune | cowsay

enter image description here

7
Gewure

J'ai utilisé cette commande uniquement pour obtenir le PID et tuer ce processus

D’autres réponses ont déjà répondu à votre question principale, mais j’aimerais aborder cette question également;

En général tuer un processus est souvent excessif et laisse les ressources allouées par un processus dans un état désordonné. Vous pouvez souvent simplement terminer le;

A côté de cela, utilisez simplement pkill pour tuer/terminer un processus. pkill permet de spécifier un nom de processus exact ou une expression régulière:

pkill -x foo # Terminates process foo
pkill ^foo$ # Terminates process foo
pkill -9 -x foo # Kills process foo
pkill -9 ^foo$ # Kills process foo
4
kos