Remove use of -p with lsof
On machines with more modern kernels (>5.4 from testing so far) the useage of -b seems to conflict with the usage of -p. Whilst the usage of -b seems like a good idea to avoid blocks as we are tight looping on it, the usage of -p seems to require the usage of stat() (specifically in /proc) which -b forbids. All you get is a load of warnings (suppressable by -w) but never a positive result, which means that all servers are reported as "Failed to start". We are not keen on losing -b, so instead parse the output of lsof (using -F to format it) to check the if PIDs that it outputs match that we are looking for. Signed-off-by: Paul Elliott <paul.elliott@arm.com>
This commit is contained in:
parent
6210320215
commit
58ed8a7594
1 changed files with 15 additions and 1 deletions
|
@ -633,7 +633,21 @@ if type lsof >/dev/null 2>/dev/null; then
|
|||
proto=TCP
|
||||
fi
|
||||
# Make a tight loop, server normally takes less than 1s to start.
|
||||
while ! lsof -a -n -b -i "$proto:$1" -p "$2" >/dev/null 2>/dev/null; do
|
||||
while true; do
|
||||
SERVER_PIDS=$(lsof -a -n -b -i "$proto:$1" -F p | cut -c2-)
|
||||
SERVER_FOUND=false
|
||||
# When proxies are used, more than one PID can be listening on
|
||||
# the same port. Each PID will be on its own line.
|
||||
while read -r PID; do
|
||||
if [[ $PID == $2 ]]; then
|
||||
SERVER_FOUND=true
|
||||
break
|
||||
fi
|
||||
done <<< "$SERVER_PIDS"
|
||||
|
||||
if ($SERVER_FOUND == true); then
|
||||
break
|
||||
fi
|
||||
if [ $(( $(date +%s) - $START_TIME )) -gt $DOG_DELAY ]; then
|
||||
echo "$3 START TIMEOUT"
|
||||
echo "$3 START TIMEOUT" >> $4
|
||||
|
|
Loading…
Reference in a new issue