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 .