If I understood you correctly, you need to run background jobs when the server is free of other work, right?
First, there are some background jobs that should be executed often, otherwise some functions will work not correctly. For example, full-text indexation.
For other scheduled jobs you can use one of following:
Configure a schedule on a time when you have less users working with the application.
Use JobQueue subsystem of that lets you execute all background jobs one by one, and they will not run several at a time causing server failure.