123456789101112131415161718192021222324252627282930313233 |
- #!/bin/bash
- # Run a command, suppressing output unless it hangs or crashes.
- TMPFILE="$(mktemp)"
- PID=$$
- # Print output to avoid travis killing us
- watchdog() {
- for i in $(seq 5 5 150); do
- sleep 300
- echo "This command has been running for more than $i minutes..."
- done
- echo "Command timed out after 2.5h, dumping logs:"
- cat "$TMPFILE"
- echo "TIMED OUT"
- kill -SIGKILL $PID
- }
- watchdog 2>/dev/null &
- WATCHDOG_PID=$!
- time "$@" >"$TMPFILE" 2>&1
- CODE=$?
- if [ $CODE != 0 ]; then
- tail -n 2000 "$TMPFILE"
- echo "FAILED $CODE"
- kill $WATCHDOG_PID
- exit $CODE
- fi
- kill $WATCHDOG_PID
- exit 0
|