Index: at-3.1.13/atd.c =================================================================== --- at-3.1.13.orig/atd.c +++ at-3.1.13/atd.c @@ -103,6 +103,7 @@ int selinux_enabled=0; #define BATCH_INTERVAL_DEFAULT 60 #define CHECK_INTERVAL 3600 +#define RETRY_INTERVAL CHECK_INTERVAL /* Global variables */ @@ -845,12 +846,17 @@ run_loop() /* Something went wrong the last time this was executed. * Let's remove the lockfile and reschedule. + * + * To prevent pointless CPU heating with permanent errors, + * next execution is scheduled with RETRY_INTERVAL inserted. */ strncpy(lock_name, dirent->d_name, sizeof(lock_name)-1); lock_name[sizeof(lock_name)-1] = 0; lock_name[0] = '='; unlink(lock_name); - next_job = now; + if (next_job > now + RETRY_INTERVAL) { + next_job = now + RETRY_INTERVAL; + } nothing_to_do = 0; } continue;