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