每次我试图杀死它们时,PID都会改变



您好,我创建了一个脚本来终止按年龄排序的进程,但是每次 PID 都在变化......我该如何解决这个问题这是我的脚本

 #!/bin/bash
    #Argument = -c check -k kill -l list
usage()
{
cat << EOF
usage: $0 options
This script kills all the processes running and leaves the last one sorted by age running.
OPTIONS:
   -c      checks how many proccess are runnig it needs string argument
   -k      Kill all the processes and leaves just the last sorted by age running
   -l      Show the list of procesess to be killed.
EOF
}
CHECK=
KILL=
LIST=
while getopts "hc:k:l:" OPTION
do
     case $OPTION in
         h)
             usage
             exit 1
             ;;
         c)
             CHECK=$OPTARG
             ps -ef | grep -i $CHECK | wc -l
             ;;
         k)
             KILL=$OPTARG
             T2=$(ps -ef | grep -i "$KILL" | awk '{print $3,$5}' | sort -r +1 | sed 1d |awk '{print $1}')
                for f in $T2; do
                        echo "killing $f"
                        kill $f
                done
             ;;
         l)
             LIST=$OPTARG
             T2=$(ps -ef | grep -i "$LIST" | awk '{print $3,$5}' | sort -r +1 | sed 1d |awk '{print $1}')
                for f in $T2; do
                        echo "PID $f"
                done
               ;;
         ?)
             usage
             exit
             ;;
     esac
done
if [[ -z KILL ]] || [[ -z LIST ]] || [[ -z CHECK ]]
then
     usage
     exit 1
fi

而且我不明白为什么当我在没有参数的情况下调用脚本时,帮助没有显示

如果另一个程序在被杀死时重新启动它,PID 将发生变化。这实际上在守护程序中很常见。

永远不会调用usage,因为您正在检查字符串KILL等是否为空,而不是变量。只需在他们面前添加一个美元符号。

相关内容

  • 没有找到相关文章

最新更新