Where does the output of `at` and `cron` jobs go?

From the cron man page:

When executing commands, any output is mailed to the owner of the crontab (or to the user named in the MAILTO environment variable in the crontab, if such exists). The children copies of cron running these processes have their name coerced to uppercase, as will be seen in the syslog and ps output.

So you should check your/root's mail, or the syslog (eg. /var/log/syslog).

For long-running processes it is sometimes useful to know what the output is before you get the email, I use this instead:

  1. Use ps to find the process ID of your running program (PID below);
  2. use lsof to find the file the output is being written to:

    lsof -p PID

In the output, look for the 1u and 2u lines under the FD column header.

These lines will tell you what temporary files the process output is going into before it is sent by mail. Typically, for at, the file is located under /var/spool/cron/atjobs/. Finally, display that file and you will find your process' (current) output.