You don't need new software to do this; here is how your existing software can handle this.
cron to suspend the machine at a pre-configured time.
- Use the BIOS timer to wake it up at a pre-configured time.
For the last few releases Ubuntu has used their own home baked init system called upstart1. The power management utilities have gone through a couple of phases, so depending on what version you have there might be a couple ways of making this happen. This question on Ask Ubuntu should be helpful at figuring this part out, but you cat also just try to find which of these commands suspend your machine (as root):
# From the powermanagement-interface package
pmi action suspend
# From the pm-utils package
# Using DBUS
dbus-send --system --print-reply --dest="org.freedesktop.UPower" /org/freedesktop/UPower org.freedesktop.UPower.Suspend
# A little raw kernel api call
echo -n mem > /sys/power/state
Once you find one of those that suspends to your satisfaction on your version, stick it in a root cron job:
0 11 * * * <working command from previous step>
This assumes that you go to bed at a reasonable hour like 11. Obviously you can change that part :)
For this you are going to need to bust around in your BIOS. What this feature is called is going to vary by manufacture, but most boards have a way to power on at a certain clock time.
Here is one configured for a late morning rise:
You can get an idea of what these settings are going to look like in various BIOSes from Google image search: bios wake timer.
1 This actually is changing in the next release as they have settled on systemd along with most other major distros. When that happens the commands above will be obsoleted by