{"id":6159,"date":"2026-08-05T09:13:45","date_gmt":"2026-08-05T06:13:45","guid":{"rendered":"https:\/\/www.scalahosting.com\/kb\/?p=6159"},"modified":"2026-08-05T09:13:46","modified_gmt":"2026-08-05T06:13:46","slug":"choose-safe-cron-frequency-spanel","status":"publish","type":"post","link":"https:\/\/www.scalahosting.com\/kb\/choose-safe-cron-frequency-spanel\/","title":{"rendered":"How to Choose a Safe Cron Job Frequency in SPanel"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">SPanel runs cron jobs on a schedule you set through five plain fields &#8211; Minutes, Hours, Date, Month, Weekday &#8211; so the real decision is how often a job should fire without piling work onto your VPS. Match the frequency to how long the job takes and how fresh its output needs to be; hourly or daily is plenty for most maintenance. Cron&#8217;s smallest interval is one minute, and SPanel has no overlap lock, so a slow job run too often stacks up on itself.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Who this is for<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">You own or manage a small or medium ScalaHosting VPS, and you are setting up a scheduled task &#8211; a backup, a cache warmer, a feed import. You know what the command does; what you are unsure about is the schedule. This article is about picking a frequency that does the work without slowing the server down.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>What problem this solves<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">It is easy to assume that more frequent means more up to date, but on a modestly sized VPS this can backfire. A job scheduled every minute that takes ninety seconds to finish starts a second copy before the first ends, then a third, until the server is overloaded. The fix is not a bigger server &#8211; it is a schedule that fits the work.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>How SPanel solves this<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">In SPanel, open the <strong>Cron Jobs<\/strong> tool. The schedule is set through five fields &#8211; Minutes, Hours, Date, Month, Weekday &#8211; each with a preset dropdown plus a free-text box that defaults to *. A * means &#8220;every value,&#8221; so the more fields you pin to a specific value, the less often the job runs.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large mpg-gallery\"><img decoding=\"async\" width=\"1024\" height=\"640\" src=\"https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/08\/01-schedule-fields-1024x640.webp\" alt=\"How to Choose a Safe Cron Job Frequency in SPanel, How SPanel solves this\" class=\"wp-image-6160\" srcset=\"https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/08\/01-schedule-fields-1024x640.webp 1024w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/08\/01-schedule-fields-300x188.webp 300w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/08\/01-schedule-fields-768x480.webp 768w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/08\/01-schedule-fields.webp 1440w\" sizes=\"(max-width: 361px) 660px, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 910px, 1140px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">You don&#8217;t need to be fully aware of crontab syntax &#8211; simply pick a preset or type a value, enter your command, and save. Here are a few common patterns:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>0 3 * * * &#8211; once a day at 03:00.<\/li>\n\n\n\n<li>*\/15 * * * * &#8211; every 15 minutes.<\/li>\n\n\n\n<li>30 2 * * 1 &#8211; Mondays at 02:30.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">After saving, the job appears in your cron list with its schedule shown, so you can confirm it reads as intended.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large mpg-gallery\"><img decoding=\"async\" width=\"1024\" height=\"640\" src=\"https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/08\/02-cron-list-1024x640.webp\" alt=\"How to Choose a Safe Cron Job Frequency in SPanel, How SPanel solves this 2\" class=\"wp-image-6161\" srcset=\"https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/08\/02-cron-list-1024x640.webp 1024w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/08\/02-cron-list-300x188.webp 300w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/08\/02-cron-list-768x480.webp 768w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/08\/02-cron-list.webp 1440w\" sizes=\"(max-width: 361px) 660px, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 910px, 1140px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Why this is different in SPanel<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Two things make this easier to get right. The five fields are shown plainly with their own dropdowns, so you choose a frequency by reading labels rather than memorizing a crontab line. Scheduling also pairs with the Run Manually test and the empty-MAILTO default: you can trigger the job once to measure its runtime before committing to a frequency, and with MAILTO empty the job runs quietly instead of mailing you on every fire.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Before you start<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Access to the <strong>Cron Jobs<\/strong> area in your SPanel User Interface.<\/li>\n\n\n\n<li>The exact command you want to schedule, tested on its own first.<\/li>\n\n\n\n<li>A rough idea of how long the command takes &#8211; use the <strong>Run Manually<\/strong> test if you are not sure.<\/li>\n\n\n\n<li>For any job that writes or deletes data, confirm it points at safe test data before you schedule it.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Step-by-step<\/strong><\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Open the <strong>Cron Jobs<\/strong> tool. You should see the form with the five schedule fields, each set to * by default.<\/li>\n\n\n\n<li>Determine what frequency you need for the cron job. If the output must be current and the job is quick, every 15 minutes (*\/15 * * * *) is reasonable; a nightly backup is ideally done once a day during quiet hours (0 3 * * *).<\/li>\n\n\n\n<li>Set the fields. Leave * where you want every value and pin the rest. For daily at 03:00, set Minutes to 0, Hours to 3, and leave the other three as *.<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image size-large mpg-gallery\"><img decoding=\"async\" width=\"1024\" height=\"640\" src=\"https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/08\/01-schedule-fields-1024x640.webp\" alt=\"How to Choose a Safe Cron Job Frequency in SPanel, How SPanel solves this\" class=\"wp-image-6160\" srcset=\"https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/08\/01-schedule-fields-1024x640.webp 1024w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/08\/01-schedule-fields-300x188.webp 300w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/08\/01-schedule-fields-768x480.webp 768w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/08\/01-schedule-fields.webp 1440w\" sizes=\"(max-width: 361px) 660px, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 910px, 1140px\" \/><\/figure>\n\n\n\n<ol start=\"4\" class=\"wp-block-list\">\n<li>Enter your command. Make sure the command is correct, especially if it involves writing or deleting data. If needed, do a test run to ensure everything is correct before you set the cron for the production environment.<\/li>\n\n\n\n<li>Save the job. It now appears in your cron list with the schedule you set.<\/li>\n\n\n\n<li>Test it using the <strong>Run Manually<\/strong> in the <strong>Actions <\/strong>drop-down menu and take note of the runtime. If it is close to or longer than your interval, lengthen the interval so two copies never overlap.<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image size-large mpg-gallery\"><img decoding=\"async\" width=\"1024\" height=\"640\" src=\"https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/08\/02-cron-list-1-1024x640.webp\" alt=\"How to Choose a Safe Cron Job Frequency in SPanel, Step-by-step 2\" class=\"wp-image-6162\" srcset=\"https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/08\/02-cron-list-1-1024x640.webp 1024w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/08\/02-cron-list-1-300x188.webp 300w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/08\/02-cron-list-1-768x480.webp 768w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/08\/02-cron-list-1.webp 1440w\" sizes=\"(max-width: 361px) 660px, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 910px, 1140px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>What happens behind the scenes<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">SPanel writes your five-field choice into the system cron table for your account, and the scheduler fires the command at each matching minute. There&#8217;s no mechanism to monitor whether the previous run has finished &#8211; cron simply starts a new process on schedule. That is why the gap between runs, not the command itself, protects the server.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Limitations and edge cases<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>One-minute minimum.<\/strong> Cron&#8217;s smallest granularity is one minute; there is no sub-minute schedule. If you need something every few seconds, a cron job is the wrong tool &#8211; use a long-running worker process instead.<\/li>\n\n\n\n<li><strong>No overlap lock.<\/strong> SPanel does not stop a job from starting while a previous copy is still running, so a job that runs longer than its interval can stack up and start using excessive amounts of resources. Guard a long-running job with a lockfile &#8211; for example wrap the command with flock &#8211; so a new run skips itself while one is active.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Troubleshooting<\/strong><\/h2>\n\n\n\n<figure class=\"wp-block-table is-style-regular green-rows\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Symptom<\/strong><\/td><td><strong>Likely cause<\/strong><\/td><td><strong>What to do<\/strong><\/td><\/tr><tr><td>Server load spikes on a regular interval<\/td><td>Job runs more often than it finishes, so copies overlap<\/td><td>Lengthen the interval; add a flock lockfile to the command<\/td><\/tr><tr><td>Job never seems to run<\/td><td>All five fields left at * plus a typo, or wrong command path<\/td><td>Re-check each field and the command; use Run Manually to test<\/td><\/tr><tr><td>Output is always stale<\/td><td>Interval too long for how fresh the data must be<\/td><td>Move to a shorter interval, e.g. *\/15 * * * *, if runtime allows<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>When to use this \/ when not to use this<\/strong><\/h2>\n\n\n\n<figure class=\"wp-block-table is-style-regular green-rows\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Use this when<\/strong><\/td><td><strong>Skip or use something else when<\/strong><\/td><\/tr><tr><td>A task repeats on a fixed clock schedule<\/td><td>The task must react instantly to an event<\/td><\/tr><tr><td>The job finishes well within its interval<\/td><td>Each run takes longer than the gap between runs<\/td><\/tr><tr><td>Once-a-minute or slower is fresh enough<\/td><td>You need sub-minute or near-real-time work<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>FAQ<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Q:<\/strong> <strong>What is the most frequent a cron job can run in SPanel?<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>A:<\/strong> Once per minute &#8211; cron has a one-minute floor, so * * * * * is as often as it gets. For anything finer, run a continuous process instead.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Q:<\/strong> <strong>Is running every minute safe?<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>A:<\/strong> Only if the job reliably finishes in well under a minute. With no overlap lock, a slow job at one-minute frequency starts stacking copies, so test the runtime first.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Q:<\/strong> <strong>How do I stop two copies of a job from overlapping?<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>A:<\/strong> Add a lockfile to the command, for example with flock, so a new run exits when an earlier one is still active. SPanel does not do this for you.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Q:<\/strong> <strong>How do I schedule a daily job?<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>A:<\/strong> Set Minutes and Hours to the time you want and leave Date, Month, and Weekday as *; 0 3 * * * runs once a day at 03:00.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Q:<\/strong> <strong>Will I get an email every time the job runs?<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>A:<\/strong> Not by default &#8211; MAILTO is empty, so jobs run quietly. Add a notification address yourself if you want one.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Q:<\/strong> <strong>Should backups run more often than daily?<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>A:<\/strong> Usually not on a small VPS &#8211; nightly in the quiet hours is a common choice, since more frequent backups add load and rarely improve recovery enough to justify it.<\/p>\n\n\n\n<script type=\"application\/ld+json\">\n    {\n      \"@context\": \"https:\/\/schema.org\",\n      \"@type\": \"FAQPage\",\n      \"mainEntity\": [{\n        \"@type\": \"Question\",\n        \"name\": \"What is the most frequent a cron job can run in SPanel?\",\n        \"acceptedAnswer\": {\n          \"@type\": \"Answer\",\n          \"text\": \"Once per minute - cron has a one-minute floor, so * * * * * is as often as it gets. For anything finer, run a continuous process instead.\"\n        }\n      }, {\n        \"@type\": \"Question\",\n        \"name\": \"Is running every minute safe?\",\n        \"acceptedAnswer\": {\n          \"@type\": \"Answer\",\n          \"text\": \"Only if the job reliably finishes in well under a minute. With no overlap lock, a slow job at one-minute frequency starts stacking copies, so test the runtime first.\"\n        }\n      },{\n        \"@type\": \"Question\",\n        \"name\": \"How do I stop two copies of a job from overlapping?\",\n        \"acceptedAnswer\": {\n          \"@type\": \"Answer\",\n          \"text\": \"Add a lockfile to the command, for example with flock, so a new run exits when an earlier one is still active. SPanel does not do this for you.\"\n        }\n      },{\n        \"@type\": \"Question\",\n        \"name\": \"How do I schedule a daily job?\",\n        \"acceptedAnswer\": {\n          \"@type\": \"Answer\",\n          \"text\": \"Set Minutes and Hours to the time you want and leave Date, Month, and Weekday as *; 0 3 * * * runs once a day at 03:00.\"\n        }\n      },{\n        \"@type\": \"Question\",\n        \"name\": \"Will I get an email every time the job runs?\",\n        \"acceptedAnswer\": {\n          \"@type\": \"Answer\",\n          \"text\": \"Not by default - MAILTO is empty, so jobs run quietly. Add a notification address yourself if you want one.\"\n        }\n      },{\n        \"@type\": \"Question\",\n        \"name\": \"Should backups run more often than daily?\",\n        \"acceptedAnswer\": {\n          \"@type\": \"Answer\",\n          \"text\": \"Usually not on a small VPS - nightly in the quiet hours is a common choice, since more frequent backups add load and rarely improve recovery enough to justify it.\"\n        }\n      }]\n    }\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>SPanel runs cron jobs on a schedule you set through five plain fields &#8211; Minutes, Hours, Date, Month, Weekday &#8211; so the real decision is how often a job should fire without piling work onto your VPS. Match the frequency to how long the job takes and how fresh its output needs to be; hourly [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_seopress_titles_title":"Choose a Safe Cron Job Frequency in SPanel | ScalaHosting KB","_seopress_titles_desc":"Choose a safe cron job frequency in SPanel. Match the interval to how long a job runs so slow tasks never overlap and overload your small or medium VPS.","_seopress_robots_index":"","_seopress_robots_follow":"","_seopress_robots_imageindex":"","_seopress_robots_snippet":"","_seopress_robots_primary_cat":"","_seopress_robots_breadcrumbs":"","_seopress_robots_freeze_modified_date":"","_seopress_robots_custom_modified_date":"","_seopress_robots_canonical":"","_seopress_social_fb_title":"","_seopress_social_fb_desc":"","_seopress_social_fb_img":"","_seopress_social_fb_img_attachment_id":0,"_seopress_social_fb_img_width":0,"_seopress_social_fb_img_height":0,"_seopress_social_twitter_title":"","_seopress_social_twitter_desc":"","_seopress_social_twitter_img":"","_seopress_social_twitter_img_attachment_id":0,"_seopress_social_twitter_img_width":0,"_seopress_social_twitter_img_height":0,"_seopress_redirections_value":"","_seopress_redirections_enabled":"","_seopress_redirections_enabled_regex":"","_seopress_redirections_logged_status":"","_seopress_redirections_param":"","_seopress_redirections_type":0,"_seopress_analysis_target_kw":"","_seopress_news_disabled":"","_seopress_video_disabled":"","_seopress_video":[],"_seopress_pro_schemas_manual":[],"_seopress_pro_rich_snippets_disable_all":"","_seopress_pro_rich_snippets_disable":[],"_seopress_pro_schemas":[],"footnotes":""},"categories":[66],"tags":[],"class_list":["post-6159","post","type-post","status-publish","format-standard","hentry","category-tutorials"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.scalahosting.com\/kb\/wp-json\/wp\/v2\/posts\/6159","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.scalahosting.com\/kb\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.scalahosting.com\/kb\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.scalahosting.com\/kb\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.scalahosting.com\/kb\/wp-json\/wp\/v2\/comments?post=6159"}],"version-history":[{"count":3,"href":"https:\/\/www.scalahosting.com\/kb\/wp-json\/wp\/v2\/posts\/6159\/revisions"}],"predecessor-version":[{"id":6167,"href":"https:\/\/www.scalahosting.com\/kb\/wp-json\/wp\/v2\/posts\/6159\/revisions\/6167"}],"wp:attachment":[{"href":"https:\/\/www.scalahosting.com\/kb\/wp-json\/wp\/v2\/media?parent=6159"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.scalahosting.com\/kb\/wp-json\/wp\/v2\/categories?post=6159"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.scalahosting.com\/kb\/wp-json\/wp\/v2\/tags?post=6159"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}