Comment la tuyauterie de cette command parvient-elle finalement à tuer le process?

J'ai vu la ligne suivante dans un script bash pour tuer un process (dans ce cas, démarré avec la command loadgen ):

 ps xww | grep -i "loadgen" | grep "PATTERNMATCH_FACT.xml" | cut -c1-5 | xargs -i kill {} 2>/dev/null 

Je voudrais comprendre la raison de la tuyauterie après les deux grep dans la command ci-dessus.

La façon dont la command loadgen est démarrée est la suivante. C'est une partie du script de démarrage.

 ./loadgen -XMLFile ${DEMODIR}/bam-103-pattern-match/data/PATTERNMATCH_FACT.xml -duration 0 -frequency 2 

ps xww donne la sortie suivante

 ... 1 ? Ss 0:00 init [2] 1804 pts/0 Ss 0:00 -bash ... 

Après les deux grep , il canalise la sortie à cut . Cette command coupe le caractère 1-5 de la sortie. Dans la sortie ci-dessus, ce sont les PID:

  1 1804 

Ceci est canalisé à xargs . Xargs crée des commands qui ressemblent à ceci:

 kill 1 kill 1804 

et les exécute. 2>/dev/null signifie que tous les messages d'erreur sont envoyés au pseudo-périphérique /dev/null .

Ainsi, votre command tue tous les process qui sont grep de la command ps .

Ou voyez, expliquehell .