IBD doesn’t have to be done in one session. Bitcoin Core saves progress and exits cleanly when you exit. It picks up where it left off the next time you start up.
Also, is there a way to check the progress of IBD using the daemon?
You can use getblockchaininfo
An RPC that provides information such as the current height and hash, whether the node is in IBD state, and the expected progress.