docs: def run(self):
          """Run process if nobody else is, otherwise wait until we're needed. Never returns."""
  
          log.info("Waiting for lock, currently held by %s", self.lock.who())
          if self.lock.acquire():
              log.info("Lock '%s' acquired", self.lockname)
              # We got the lock, so we make sure the process is running and keep refreshing the lock - if we ever stop for any reason, for example because our host died, the lock will soon expire.
              while True:
                  if self.process is None:  # Process not spawned yet
                      self.process = self.spawn(self.command)
                      log.info("Spawned PID %d", self.process.pid)
                  child_status = self.process.poll()
                  if child_status is not None:
                      # Oops, process died on us.
                      log.error("Child died with exit code %d", child_status)
                      sys.exit(1)
                  # Refresh lock and sleep
                  if not self.lock.refresh():
                      who = self.lock.who()
                      if who is None:
                          if self.lock.acquire(block=False):
                              log.warning("Lock refresh failed, but successfully re-acquired unclaimed lock")
                          else:
                              log.error("Lock refresh and subsequent re-acquire failed, giving up (Lock now held by %s)", self.lock.who())
                              self.cleanup()
                              sys.exit(os.EX_UNAVAILABLE)
                      else:
                          log.error("Lock refresh failed, %s stole it - bailing out", self.lock.who())
                          self.cleanup()
                          sys.exit(os.EX_UNAVAILABLE)
                  time.sleep(self.sleep)