|Image: https://boinc.berkeley.edu, fair use|
BOINC is a program curated by the University of Berkeley that allows people around the world to contribute to science projects.
It works by using spare cycles from your computer to perform calculations that help do things like folding proteins to find candidates for cancer treatment, mapping the milky way galaxy, searching for pulsar stars, and improving our understanding of climate change and its effects.
It runs as a background process and is easily configured to only run in certain conditions - like when you haven't used your computer for 10 minutes for example.
It comes with a nifty GUI manager and for most people using it on their desktop this post is not going to be at all relevant. This post deals with the case where a person is running it on a server without the GUI manager.
Anyway, the easiest solution I found to restarting BOINC on a headless server was to use supervisord. It's pretty much the "go to" tool for simple process management and adding the BOINC program was as easy as would be expected:
Here's the program definition from my /etc/supervisord.conf file:
[program:BOINC] command=sh /root/boinc/startup.sh process_name=boinc exitcodes=0,1,2 autostart=true autorestart=unexpected
I use a script to restart BOINC because I want to make sure that I get reconnected to my account manager in case something goes wrong.
Here's what /root/boinc/startup.sh script looks like:
/etc/init.d/boinc-client start sleep 10 boinccmd --join_acct_mgr http://bam.boincstats.com <user> <pass>
If BOINC crashes it will automatically get restarted and reconnected to my account manager. This means I don't need to monitor that process on all the servers I install it on.