我有一个简单的脚本,可以使用ps检查某些进程的进程ID。当我直接在命令行上运行它时,它可以正常工作,但在脚本中运行时却不能。我在做什么错了?
这很好:
ps auwx | grep elasticsearch | grep -v grep | grep user | awk '{print $2}' | tail -1
在脚本中,它不会:
#!/bin/bash
#Setting ES Heap to 50GB
ES_HEAP_SIZE="50g"
#Finding dump file to be deleted
FILE_ID=$(ps auwx | grep elasticsearch | grep -v grep | grep user | awk '{print $2}' | tail -1)
FILE_NAME="java_pid$FILE_ID.hprof"
echo "Elasticsearch pid: $FILE_ID"
echo "Dump file name if it exists: $FILE_NAME. Checking now."
if [ -s $FILE_NAME ]
then
rm $FILE_NAME
kill -9 $FILE_ID
#Starting elasticsearch daemon
/data/elasticsearch-1.4.4/bin/elasticsearch -d
else
echo "All good. Dump file $FILE_NAME does not exist."
fi
答案 0 :(得分:0)
个人宠儿:为什么您的管道中有六个执行,而两个执行了您所需的一切?
ps auwx | awk '/elasticsearch/ && /user/ { x=$2 } END{ print x; }'
顺便说一句,您想要PID吗?因为看起来您正在读取PPID。
希望有帮助。