mirror of https://github.com/databricks/cli.git
42 lines
934 B
Bash
Executable File
42 lines
934 B
Bash
Executable File
#!/bin/bash
|
|
|
|
|
|
# wait <pid> in bash only works for child process. This script is more general.
|
|
wait_pid() {
|
|
local pid=$1
|
|
local max_attempts=100 # 100 * 0.1 seconds = 10 seconds
|
|
local attempt=0
|
|
local sleep_time=0.1
|
|
|
|
while [ $attempt -lt $max_attempts ]; do
|
|
if [[ "$OSTYPE" == "msys"* || "$OSTYPE" == "cygwin"* ]]; then
|
|
# Windows approach
|
|
if ! tasklist | grep -q $pid; then
|
|
echo "Process has ended"
|
|
return 0
|
|
fi
|
|
else
|
|
# Linux/macOS approach
|
|
if ! kill -0 $pid 2>/dev/null; then
|
|
echo "Process has ended"
|
|
return 0
|
|
fi
|
|
fi
|
|
|
|
sleep $sleep_time
|
|
attempt=$((attempt + 1))
|
|
done
|
|
|
|
echo "Timeout: Process $pid did not end within 10 seconds"
|
|
return 1
|
|
}
|
|
|
|
# Usage
|
|
if [ $# -eq 0 ]; then
|
|
echo "Usage: $0 <PID>"
|
|
exit 1
|
|
fi
|
|
|
|
wait_pid $1
|
|
exit $?
|