Skip to content
This documentation is sourced from a third-party project and is not maintained by pgEdge.

Viewing job run details

You can view the status of running and recently completed job runs in the cron.job_run_details:

select * from cron.job_run_details order by start_time desc limit 5;
┌───────┬───────┬─────────┬──────────┬──────────┬───────────────────┬───────────┬──────────────────┬───────────────────────────────┬───────────────────────────────┐
 jobid  runid  job_pid  database  username       command        status     return_message            start_time                      end_time            
├───────┼───────┼─────────┼──────────┼──────────┼───────────────────┼───────────┼──────────────────┼───────────────────────────────┼───────────────────────────────┤
    10   4328     2610  postgres  marco     select process()   succeeded  SELECT 1          2023-02-07 09:30:00.098164+01  2023-02-07 09:30:00.130729+01 
    10   4327     2609  postgres  marco     select process()   succeeded  SELECT 1          2023-02-07 09:29:00.015168+01  2023-02-07 09:29:00.832308+01 
    10   4321     2603  postgres  marco     select process()   succeeded  SELECT 1          2023-02-07 09:28:00.011965+01  2023-02-07 09:28:01.420901+01 
    10   4320     2602  postgres  marco     select process()   failed     server restarted  2023-02-07 09:27:00.011833+01  2023-02-07 09:27:00.72121+01  
     9   4320     2602  postgres  marco     select do_stuff()  failed     job canceled      2023-02-07 09:26:00.011833+01  2023-02-07 09:26:00.22121+01  
└───────┴───────┴─────────┴──────────┴──────────┴───────────────────┴───────────┴──────────────────┴───────────────────────────────┴───────────────────────────────┘
(10 rows)

The records in cron.job_run_details are not cleaned automatically, but every user that can schedule cron jobs also has permission to delete their own cron.job_run_details records.

Especially when you have jobs that run every few seconds, it can be a good idea to clean up regularly, which can easily be done using pg_cron itself:

-- Delete old cron.job_run_details records of the current user every day at noon
SELECT  cron.schedule('delete-job-run-details', '0 12 * * *', $$DELETE FROM cron.job_run_details WHERE end_time < now() - interval '7 days'$$);

If you do not want to use cron.job_run_details at all, then you can add cron.log_run = off to postgresql.conf.