我想用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