{"id":6033,"date":"2026-06-19T09:45:30","date_gmt":"2026-06-19T06:45:30","guid":{"rendered":"https:\/\/www.scalahosting.com\/kb\/?p=6033"},"modified":"2026-06-19T09:45:31","modified_gmt":"2026-06-19T06:45:31","slug":"add-edit-delete-cron-jobs-spanel","status":"publish","type":"post","link":"https:\/\/www.scalahosting.com\/kb\/add-edit-delete-cron-jobs-spanel\/","title":{"rendered":"How to Add, Edit, and Delete Cron Jobs in SPanel"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">SPanel&#8217;s form-based Cron Job Manager covers the three things you do most with scheduled tasks: add a job, change one in place, and remove one. In the SPanel user interface, open the <strong>Cron Jobs<\/strong>, then use the <strong>Create a New Cron Job<\/strong> form, <strong>Edit<\/strong>, or <strong>Delete <\/strong>on a job&#8217;s row.<br><br><strong>The key limit<\/strong>: an edit or delete is an exact-match, in-place change to a single job line &#8211; no multi-select, no bulk edit &#8211; so each action touches only the job you picked and leaves the rest of your crontab alone. New jobs are quiet by default too: an empty MAILTO means adding a job does not start emailing its output.<\/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\">This guide is for the person who runs scheduled tasks on a ScalaHosting managed VPS and wants to manage them without a terminal &#8211; usually a small business owner with a nightly backup or recurring report. Digital agencies and developers will find this operation useful as well. You do not need shell experience, only the SPanel user interface and a command to run on a schedule. To confirm a job works before trusting the schedule, see the related guide below.<\/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\">The old way to manage scheduled tasks is crontab -e over SSH: one shared file, every job on its own line, no guardrails. The danger is not writing a new line &#8211; it is everything around it. A stray keystroke on another row, a deleted character in a path, and a job that ran for months stops firing. One careless edit can break every job in the file &#8211; no warning, no undo.<\/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\">SPanel replaces the raw file with a form. Open the <strong>Cron Jobs Manager<\/strong> and your jobs appear as a list, one row each.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">To <strong>add<\/strong>, fill in the five schedule fields and the command and save; to <strong>edit<\/strong>, open a row and change what you need &#8211; most often the schedule; to <strong>delete<\/strong>, remove a row after a confirmation. You work on one job at a time, and the form does the crontab editing, so the mistakes that break a hand-edited file never happen.<\/p>\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 specifics make this safer than a hand edit.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Edit and delete are exact-match, single-line changes.<\/strong> When you edit a job, SPanel replaces only the line you selected; when you delete one, it removes only that line. Every other job stays byte-for-byte as it was. There is no multi-select and no bulk edit &#8211; which is the safety feature: you cannot affect a neighboring job by accident.<\/li>\n\n\n\n<li><strong>New jobs are silent by default.<\/strong> A standard crontab emails the output of every run, so a fresh job on a busy schedule can flood your inbox. SPanel ships with an empty MAILTO &#8211; the cron setting that decides where output is emailed &#8211; so output goes nowhere and your added job runs quietly. Want the emails? Set MAILTO yourself; nothing arrives by surprise.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Before you start<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">You will need:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>A ScalaHosting managed VPS with SPanel, signed in to the SPanel user interface (not the admin area).<\/li>\n\n\n\n<li>The command to schedule, with full absolute paths &#8211; a relative path that works in your shell often fails under cron.<\/li>\n\n\n\n<li>A schedule in mind, such as &#8220;every day at 3 AM.&#8221; The next section shows how to write it in cron&#8217;s five fields.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Step-by-step<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">We will add a harmless job, change its schedule in place, then delete it.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The example has no application-side effects: it only appends one line to a test log file: \/bin\/echo &#8220;cron ran&#8221; &gt;&gt; \/home\/USER\/kb-test\/cron.log. Before adding the test cron job, create \/home\/USER\/kb-test\/ or replace the path with an existing directory in your account.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>In the SPanel user interface, open <strong>Cron Jobs Manager<\/strong>. Your jobs appear as a list with their schedules and commands.<\/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\/06\/image1-3-1024x640.webp\" alt=\"How to Add, Edit, and Delete Cron Jobs in SPanel, Step-by-step\" class=\"wp-image-6034\" srcset=\"https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/06\/image1-3-1024x640.webp 1024w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/06\/image1-3-300x188.webp 300w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/06\/image1-3-768x480.webp 768w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/06\/image1-3.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=\"2\" class=\"wp-block-list\">\n<li><strong>Add a job.<\/strong> Fill in the five schedule fields and the command, then save. For &#8220;every day at 3:00 AM,&#8221; the schedule is 0 3 * * *, with the command echo &#8220;cron ran&#8221; >> ~\/kb-test\/cron.log.<br><strong>The five schedule fields.<\/strong> Cron reads a schedule as five values in order: <strong>minute<\/strong> (0\u201359), <strong>hour<\/strong> (0\u201323), <strong>day-of-month<\/strong> (1\u201331), <strong>month<\/strong> (1\u201312), <strong>day-of-week<\/strong> (0\u20136, where 0 is Sunday). A * means &#8220;every.&#8221; A few examples:<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>0 3 * * * &#8211; every day at 3:00 AM.<\/li>\n\n\n\n<li>*\/15 * * * * &#8211; every 15 minutes, all day.<\/li>\n\n\n\n<li>30 2 * * 1 &#8211; 2:30 AM every Monday.<\/li>\n<\/ul>\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\/06\/image3-3-1024x640.webp\" alt=\"How to Add, Edit, and Delete Cron Jobs in SPanel, Step-by-step 2\" class=\"wp-image-6035\" srcset=\"https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/06\/image3-3-1024x640.webp 1024w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/06\/image3-3-300x188.webp 300w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/06\/image3-3-768x480.webp 768w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/06\/image3-3.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=\"3\" class=\"wp-block-list\">\n<li><strong>Confirm the job was added.<\/strong> Save returns you to the list, where the new job appears as its own row.<\/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\/06\/image2-3-1024x640.webp\" alt=\"How to Add, Edit, and Delete Cron Jobs in SPanel, Step-by-step 3\" class=\"wp-image-6036\" srcset=\"https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/06\/image2-3-1024x640.webp 1024w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/06\/image2-3-300x188.webp 300w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/06\/image2-3-768x480.webp 768w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/06\/image2-3.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><strong>Edit the job in place.<\/strong> Open <strong>Actions<\/strong> &#8211; <strong>Edit<\/strong> on the new job&#8217;s row. The form opens pre-filled. Change only the schedule &#8211; from 3:00 AM to 4:30 AM (minute 30, hour 4, the rest *) &#8211; and save.<\/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\/06\/image5-2-1024x640.webp\" alt=\"How to Add, Edit, and Delete Cron Jobs in SPanel, Step-by-step 4\" class=\"wp-image-6037\" srcset=\"https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/06\/image5-2-1024x640.webp 1024w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/06\/image5-2-300x188.webp 300w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/06\/image5-2-768x480.webp 768w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/06\/image5-2.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=\"5\" class=\"wp-block-list\">\n<li><strong>Confirm the edit, and that the rest are intact.<\/strong> Back in the list, the edited job shows its new schedule while every other job is unchanged &#8211; the exact-match edit touched one line and left the neighbors alone.<\/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\/06\/image4-3-1024x640.webp\" alt=\"How to Add, Edit, and Delete Cron Jobs in SPanel, Step-by-step 5\" class=\"wp-image-6038\" srcset=\"https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/06\/image4-3-1024x640.webp 1024w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/06\/image4-3-300x188.webp 300w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/06\/image4-3-768x480.webp 768w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/06\/image4-3.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=\"6\" class=\"wp-block-list\">\n<li><strong>Delete the job.<\/strong> Use <strong>Delete<\/strong> on its row and confirm. SPanel removes only that line, and the rest of your schedule is intact.<\/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\/06\/image6-1024x640.webp\" alt=\"How to Add, Edit, and Delete Cron Jobs in SPanel, Step-by-step 6\" class=\"wp-image-6039\" srcset=\"https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/06\/image6-1024x640.webp 1024w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/06\/image6-300x188.webp 300w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/06\/image6-768x480.webp 768w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/06\/image6.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 reads and writes your user&#8217;s crontab &#8211; the same file crontab -e opens. When you add, edit, or delete, it rewrites that file, replacing or removing only the targeted line and copying the rest through unchanged. That is why one action never disturbs a job you did not select.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Limitations and edge cases<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">You work one job at a time: <strong>no multi-select<\/strong> (five edits for five jobs) and <strong>no bulk delete<\/strong>. The panel manages the standard five-field schedule; it does not offer one-time &#8220;run once at this date&#8221; scheduling, automatic retries, or a drag-and-drop schedule builder. Because a fresh job is silent by default, &#8220;I added it but got no email&#8221; is expected, not a failure.<\/p>\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>Symptom<\/td><td>Likely cause<\/td><td>What to do<\/td><\/tr><tr><td>Added job never seems to run<\/td><td>Schedule fields are off, or the command uses a relative path<\/td><td>Re-check the five fields; use full absolute paths<\/td><\/tr><tr><td>No email after adding a job<\/td><td>Empty MAILTO default &#8211; output is not mailed<\/td><td>Expected; set MAILTO if you want emails<\/td><\/tr><tr><td>Edited the wrong job&#8217;s schedule<\/td><td>Two rows looked alike<\/td><td>Open the right row by its command; the others were untouched<\/td><\/tr><tr><td>Job still runs after you deleted it<\/td><td>Confirmation dismissed, or a duplicate line exists<\/td><td>Confirm the row is gone; delete any duplicate<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>When to use \/ when not to use<\/strong><\/h2>\n\n\n\n<figure class=\"wp-block-table is-style-regular green-rows\"><table class=\"has-fixed-layout\"><tbody><tr><td>Use the Cron Job Manager when<\/td><td>Reach for something else when<\/td><\/tr><tr><td>You want to add, change, or remove a recurring task without SSH<\/td><td>You need a task to run exactly once at a future date<\/td><\/tr><tr><td>You want to change one job&#8217;s schedule and leave the rest alone<\/td><td>You want automatic retries or failure alerts on a job<\/td><\/tr><tr><td>You prefer a form over editing a raw crontab<\/td><td>You are confirming a brand-new job actually works (test it first)<\/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>Will editing one cron job change the others?<\/strong> <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>A:<\/strong> No. SPanel matches the exact line of the job you opened and rewrites only that line. The others stay as they were.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Q:<\/strong> <strong>Can I edit or delete several jobs at once?<\/strong> <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>A:<\/strong> No. There is no multi-select or bulk edit &#8211; you work one job at a time. That is deliberate: an action cannot catch a job you did not mean to touch.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Q:<\/strong> <strong>Why didn&#8217;t I get an email when my new job ran?<\/strong> <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>A:<\/strong> No email is expected by default because SPanel uses an empty MAILTO= setting. To confirm the job actually runs, use the related \u201ctest a cron job before it runs\u201d guide or check the job\u2019s output\/log file.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Q:<\/strong> <strong>Does deleting a job in SPanel remove it from the real crontab?<\/strong> <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>A:<\/strong> Yes. SPanel writes your real user crontab, so deleting a job removes that line from the file the scheduler reads.<\/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\": \"Will editing one cron job change the others?\",\n        \"acceptedAnswer\": {\n          \"@type\": \"Answer\",\n          \"text\": \"No. SPanel matches the exact line of the job you opened and rewrites only that line. The others stay as they were.\"\n        }\n      }, {\n        \"@type\": \"Question\",\n        \"name\": \"Can I edit or delete several jobs at once?\",\n        \"acceptedAnswer\": {\n          \"@type\": \"Answer\",\n          \"text\": \"No. There is no multi-select or bulk edit - you work one job at a time. That is deliberate: an action cannot catch a job you did not mean to touch.\"\n        }\n      },{\n        \"@type\": \"Question\",\n        \"name\": \"Why didn't I get an email when my new job ran?\",\n        \"acceptedAnswer\": {\n          \"@type\": \"Answer\",\n          \"text\": \"No email is expected by default because SPanel uses an empty MAILTO= setting. To confirm the job actually runs, use the related \u201ctest a cron job before it runs\u201d guide or check the job\u2019s output\/log file.\"\n        }\n      },{\n        \"@type\": \"Question\",\n        \"name\": \"Does deleting a job in SPanel remove it from the real crontab?\",\n        \"acceptedAnswer\": {\n          \"@type\": \"Answer\",\n          \"text\": \"Yes. SPanel writes your real user crontab, so deleting a job removes that line from the file the scheduler reads.\"\n        }\n      }]\n    }\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>SPanel&#8217;s form-based Cron Job Manager covers the three things you do most with scheduled tasks: add a job, change one in place, and remove one. In the SPanel user interface, open the Cron Jobs, then use the Create a New Cron Job form, Edit, or Delete on a job&#8217;s row. The key limit: an edit [&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":"How to Add, Edit, and Delete Cron Jobs in SPanel | ScalaHosting KB","_seopress_titles_desc":"Learn how to add, edit, and delete cron jobs in SPanel, manage schedules safely, and understand quiet-by-default MAILTO behavior.","_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-6033","post","type-post","status-publish","format-standard","hentry","category-tutorials"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.scalahosting.com\/kb\/wp-json\/wp\/v2\/posts\/6033","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=6033"}],"version-history":[{"count":1,"href":"https:\/\/www.scalahosting.com\/kb\/wp-json\/wp\/v2\/posts\/6033\/revisions"}],"predecessor-version":[{"id":6040,"href":"https:\/\/www.scalahosting.com\/kb\/wp-json\/wp\/v2\/posts\/6033\/revisions\/6040"}],"wp:attachment":[{"href":"https:\/\/www.scalahosting.com\/kb\/wp-json\/wp\/v2\/media?parent=6033"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.scalahosting.com\/kb\/wp-json\/wp\/v2\/categories?post=6033"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.scalahosting.com\/kb\/wp-json\/wp\/v2\/tags?post=6033"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}