docs: def check_background_commands_complete(self):
  		"""Check whether any background commands are running or to be run.
  		If none are, return True. If any are, return False.
  		"""
  		unstarted_command_exists  = False
  		self.shutit_obj.log('In check_background_commands_complete: all background objects: ' + str(self.background_objects),level=logging.DEBUG)
  		self.shutit_obj.log('Login id: ' + str(self.login_id),level=logging.DEBUG)
  		for background_object in self.background_objects:
  			self.shutit_obj.log('Background object send: ' + str(background_object.sendspec.send),level=logging.DEBUG)
  		background_objects_to_remove = []
  		def remove_background_objects(a_background_objects_to_remove):
  			for background_object in a_background_objects_to_remove:
  				self.background_objects.remove(background_object)
  		for background_object in self.background_objects:
  			self.shutit_obj.log('Checking background object: ' + str(background_object),level=logging.DEBUG)
  			state = background_object.check_background_command_state()
  			self.shutit_obj.log('State is: ' + state,level=logging.DEBUG)
  			if state in ('C','F','T'):
  				background_objects_to_remove.append(background_object)
  				self.background_objects_completed.append(background_object)
  			elif state == 'S':
  				# Running command exists
  				self.shutit_obj.log('check_background_command_state returning False (S) for ' + str(background_object),level=logging.DEBUG)
  				remove_background_objects(background_objects_to_remove)
  				return False, 'S', background_object
  			elif state == 'N':
  				self.shutit_obj.log('UNSTARTED COMMAND! ' + str(background_object.sendspec.send),level=logging.DEBUG)
  				unstarted_command_exists = True
  			else:
  				remove_background_objects(background_objects_to_remove)
  				assert False, shutit_util.print_debug(msg='Un-handled: ' + state)
  			if state == 'F':
  				self.shutit_obj.log('check_background_command_state returning False (F) for ' + str(background_object),level=logging.DEBUG)
  				remove_background_objects(background_objects_to_remove)
  				return False, 'F', background_object
  		remove_background_objects(background_objects_to_remove)
  		self.shutit_obj.log('Checking background objects done.',level=logging.DEBUG)
  		if unstarted_command_exists:
  			# Start up an unstarted one (in order), and return False
  			for background_object in self.background_objects:
  				state = background_object.check_background_command_state()
  				if state == 'N':
  					background_object.run_background_command()
  					self.shutit_obj.log('check_background_command_state returning False (N) for ' + str(background_object),level=logging.DEBUG)
  					return False, 'N', background_object
  		# Nothing left to do - return True.
  		self.shutit_obj.log('check_background_command_state returning True (OK)',level=logging.DEBUG)
  		return True, 'OK', None