我想用pgrep先檢測一個進程是否正在運行,如果是,確定進程是否被意外重複(運行)。如果是這樣,它應該殺死重複的進程。pgrep檢測重複進程
if ! pgrep -f "java" > /dev/null; then
echo "Yes its running but there may be duplicates"
< Now check for duplicates here and kill if necessary >
fi
請幫
* UPDATE *
的ps aux:
debian 2521 3.8 5.4 407212 27524 pts/0 Sl 20:16 0:08 java -cp somefile.jar
代碼:
if [ $(pgrep -f "somefile.jar" | wc -l) -gt 1 ]; then
kill $(pgrep -f "somefile.jar" | grep -v $(pgrep -o "somefile.jar") | awk '{printf $1" "}');
fi
運作,但拋出錯誤
* UPDATE *
這裏是我的代碼直接貼:
if [ $(pgrep -f java | wc -l) -gt 1 ]; then
echo "kill $(pgrep -f java | grep -v $(pgrep -of java) | sort -n | uniq | awk '{printf $1" "}')";
fi
你會如何確定哪兩個殺人? PID是數字的那個比另一個高呢? – konsolebox