Gocron处理Docker进程的问题

示例代码

'' > proc.txt
'' > list.txt
ps -ef|grep 'docker'|awk -F 'keyword -c ' '{print $2}'  >> proc.txt

IFS=$'\n'
for line in `cat proc.txt`;
do
    newline=${line//\\/\\\\}
    echo "check ${newline}"
    PROCESS_NUM_ALL=$(ps -ef|grep -w ${newline}| grep -v 'grep' | wc -l)
    PROCESS_NUM=$(ps -ef|grep -w ${newline}| grep -v 'grep' | grep -v 'docker'| wc -l)
    echo "所有进程数: $PROCESS_NUM_ALL 有效进程: $PROCESS_NUM";
    if [ ${PROCESS_NUM} -eq "0" ];then
        ps -ef|grep "${newline}"| grep 'docker'|grep -v 'grep'|cut -c 9-15|xargs kill -9
        echo "kill ${newline}"
        echo "kill ${newline}" >> list.txt
        echo "进程不存在"
    else
        echo "进程正常"
    fi
done

遇到的问题

  1. 变量名写错

  1. 在grep \ 的时候,需要转义

  2. 变量赋值,不需要单引号

Last updated