注意shell指令碼中ps -ef|grep的坑

it_is_me發表於2020-11-25

指令碼中有這樣一行程式碼

PID=`ps -ef | grep live-admin | grep -v grep | awk '{print $2}'`
echo ${PID}
if [ -n "${PID}" ]
then
    kill -15 ${PID}
fi

然後我的指令碼名稱是 live-admin.sh

結果是echo總是列印兩個PID,然後指令碼執行失敗,但把ps那一行程式碼單獨拷貝出來執行是隻有一個PID的

原因是ps -ef | grep live-admin | grep -v grep | awk '{print $2}'這行程式碼中的live-admin和指令碼名稱重名了,所以會查詢到兩個PID

把指令碼名稱修改成其他不重名的就成功了

相關文章