Bash
該命令中的管道最終如何實現殺死程序?
我在用於終止程序的 bash 腳本中看到了以下行(在這種情況下,從 command 開始
loadgen
):ps xww | grep -i "loadgen" | grep "PATTERNMATCH_FACT.xml" | cut -c1-5 | xargs -i kill {} 2>/dev/null
我想了解在上面命令中的兩個 grep 之後進行管道的原因。
命令的啟動方式
loadgen
如下。它是啟動腳本的一部分。./loadgen -XMLFile ${DEMODIR}/bam-103-pattern-match/data/PATTERNMATCH_FACT.xml -duration 0 -frequency 2
ps xww
給出以下輸出... 1 ? Ss 0:00 init [2] 1804 pts/0 Ss 0:00 -bash ...
在兩者之後,
grep
它通過管道將輸出傳輸到cut
. 此命令從輸出中刪除字元 1-5。在上面的輸出中,它應該是 PID:1 1804
這是通過管道傳輸到
xargs
. Xargs 建構的命令如下所示:kill 1 kill 1804
並執行它們。
2>/dev/null
表示所有錯誤資訊都發送到偽設備/dev/null
。因此,您的命令會殺死命令
grep
之外的每個程序ps
。或查看explainshell。