40 lines
1.3 KiB
Bash
Executable File
40 lines
1.3 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
# I am potentially invoked when ping-service.sh (which see) fails to
|
|
# contact the racket-pkg-website service.
|
|
#
|
|
|
|
# Request a dump of running threads:
|
|
dumprequestfile=$HOME/racket-pkg-website/signals/.dumpinfo
|
|
touch $dumprequestfile
|
|
|
|
# Wait a few seconds for the dump to complete:
|
|
sleep 10
|
|
|
|
# Tar up the most recent few hours' worth of logs:
|
|
logarchive=$HOME/ping-failure-logs-$(date +%Y%m%d%H%M%S).tar.gz
|
|
(
|
|
cd $HOME/service/racket-pkg-website/log/main/; \
|
|
ls -tr | tail -n 10 | xargs tar -zcf $logarchive \
|
|
)
|
|
|
|
# Restart the service using daemontools.
|
|
if [ -f $dumprequestfile ]
|
|
then
|
|
# If the `.dumpinfo` signal is still there after our sleep, then
|
|
# the process is so far off the rails we shouldn't bother waiting
|
|
# for it, so kill it hard.
|
|
echo "Killing service hard and restarting it."
|
|
svc -dku $HOME/service/racket-pkg-website
|
|
else
|
|
# Otherwise, it's at least partially awake, so try asking it
|
|
# nicely.
|
|
echo "Politely requesting service termination before restart."
|
|
svc -du $HOME/service/racket-pkg-website
|
|
fi
|
|
|
|
# Finally, complain out loud. We expect to be running in some kind of
|
|
# cron-ish context, so the output we produce here will likely find its
|
|
# way into an email to a responsible party.
|
|
echo "racket-pkg-website on-ping-service-failure.sh invoked. logarchive=$logarchive"
|