| Tested on | Rocky Linux 10.2 (Red Quartz) |
|---|---|
| Package | cronie 1.7.0 |
| Applies to | RHEL, Rocky Linux, AlmaLinux, Oracle Linux, CentOS Stream, Fedora |
| Privilege | sudo or root |
| Scope | Learn how to restart the cron or crond service on Ubuntu, Debian, RHEL, Rocky Linux, AlmaLinux and CentOS, when a restart is required, and why crontab changes normally reload automatically. |
| Related guides | systemctl crontab command cheat sheet |
There is no crontab service to restart in Linux. crontab is the command and configuration format used to define scheduled jobs; the background service is named cron on Debian and Ubuntu or crond on most RHEL-family distributions.
You normally do not need to restart the service after using crontab -e, editing /etc/crontab, or adding a valid file under /etc/cron.d/. The daemon detects changed schedules automatically.
Restart cron or crond only when the daemon is stopped, unhealthy, or you are troubleshooting the service itself. Cronie monitors stored crontabs and reloads changed schedules; Debian’s cron package similarly describes cron as reading the crontab files and executing scheduled commands.
Quick reference
| What you need | Debian / Ubuntu | RHEL / Rocky / AlmaLinux / CentOS |
|---|---|---|
| Detect which unit exists | `systemctl status cron 2>/dev/null | |
| Check service state | sudo systemctl status cron |
sudo systemctl status crond |
| Restart the daemon | sudo systemctl restart cron |
sudo systemctl restart crond |
| Start at boot | sudo systemctl enable --now cron |
sudo systemctl enable --now crond |
| List your schedule | crontab -l |
crontab -l |
| Verify system schedules | sudo cat /etc/crontab |
sudo cat /etc/crontab |
| Check whether reload is exposed | systemctl show cron -p CanReload |
systemctl show crond -p CanReload |
| Recent daemon logs | sudo journalctl -u cron -n 50 --no-pager |
sudo journalctl -u crond -n 50 --no-pager |
After a normal crontab -e edit, save the file and confirm with crontab -l. A service restart is not part of that workflow.
Do You Need to Restart Cron?
Use this table before you touch systemctl. Ordinary schedule edits do not need a daemon restart.
| Situation | Restart required? | Recommended action |
|---|---|---|
Edited with crontab -e |
No | Save the file and verify with crontab -l |
Installed a crontab with crontab file |
No | Verify the installed schedule |
Edited /etc/crontab |
Normally no | Validate syntax, ownership and fields |
Added or edited /etc/cron.d/jobname |
Normally no | Validate filename, permissions, owner and user field |
Added a script to /etc/cron.daily/ |
No daemon restart | Validate filename and executable permissions |
| Cron service is inactive or failed | Yes, after diagnosis | Start or restart the correct service |
| Cron package or daemon configuration changed | Possibly | Follow the package documentation and restart when required |
| Individual job is failing | Usually no | Troubleshoot the job rather than restarting cron |
Cronie monitors user crontabs, /etc/crontab, /etc/anacrontab, and files under /etc/cron.d/. When inotify is available, it detects file changes through filesystem notifications; otherwise, it checks modification times every minute and reloads changed crontabs. The Cronie manual documents both inotify-based detection and the minute-based fallback, and states that changed crontabs are reloaded automatically with no need to restart cron after modification.
On Debian-family systems, /etc/crontab and files in /etc/cron.d/ are monitored for changes, and cron checks modification times each minute when determining what to reload. See the Debian cron man page for that behavior.
Crontab vs Cron vs crond
| Term | Meaning |
|---|---|
crontab |
Command used to install, edit, list or remove user schedules |
| crontab file | File containing scheduled jobs |
cron |
Common daemon and service name on Debian/Ubuntu |
crond |
Common daemon and service name on RHEL-family systems |
| Cronie | Cron implementation used by RHEL-family distributions and others |
crontab -e edits the current user’s schedule. /etc/crontab is a system-wide crontab with an additional username field. Files under /etc/cron.d/ also use the system-crontab format. /etc/cron.hourly, .daily, .weekly, and .monthly are periodic script directories managed according to the distribution’s cron/anacron setup.
The Debian crontab manual states that user crontabs should be managed with the crontab command rather than directly editing spool files. For field syntax and examples, see the crontab command cheat sheet.
Check the Cron Service Before Restarting
Start with detection rather than assuming the service name. One of the two units should respond on a typical server:
systemctl status cron 2>/dev/null || systemctl status crondOn an RHEL-family host, cron.service is absent and crond.service is active:
● crond.service - Command Scheduler
Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; preset: enabled)
Active: active (running) since Sat 2026-07-11 16:42:12 IST; 406ms ago
Main PID: 4706 (crond)That active (running) line means the scheduler daemon is up; you still restart only when its state or logs show a real service problem.
Debian, Ubuntu and Linux Mint
sudo systemctl status cronsudo systemctl is-active cronsudo systemctl is-enabled cronOn Debian and Ubuntu, is-active should print active and is-enabled should print enabled when cron is installed and set to start at boot.
RHEL, Rocky Linux, AlmaLinux and CentOS Stream
sudo systemctl status crondsudo systemctl is-active crondsudo systemctl is-enabled crondOn the test host both checks returned active and enabled.
Process and package checks
List installed cron units:
systemctl list-unit-files | grep -E '^(cron|crond)\.service'Sample output:
crond.service enabled enabledConfirm the crontab utility is installed:
command -v crontab/usr/bin/crontab| Result | Meaning |
|---|---|
active |
Daemon is running |
inactive |
Installed but currently stopped |
failed |
Service exited with an error |
| Unit not found | Cron package may not be installed or a different scheduler is used |
active but job fails |
Troubleshoot the job, environment and schedule |
How to Restart Cron on Linux
Ubuntu and Debian
Restart the daemon when the service is stopped or unhealthy:
sudo systemctl restart cronThe command exits silently on success. Confirm the unit came back up:
sudo systemctl status cron --no-pagerLook for Active: active (running) in the status block.
RHEL-family distributions
On Rocky Linux 10.2 the equivalent unit is crond:
sudo systemctl restart crondVerify immediately afterward:
sudo systemctl status crond --no-pagerSample output:
● crond.service - Command Scheduler
Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; preset: enabled)
Active: active (running) since Sat 2026-07-11 16:42:12 IST; 406ms ago
Main PID: 4706 (crond)Start, stop and enable
| Action | Debian/Ubuntu | RHEL/Rocky/AlmaLinux |
|---|---|---|
| Start | sudo systemctl start cron |
sudo systemctl start crond |
| Restart | sudo systemctl restart cron |
sudo systemctl restart crond |
| Stop | sudo systemctl stop cron |
sudo systemctl stop crond |
| Enable at boot | sudo systemctl enable cron |
sudo systemctl enable crond |
| Enable and start | sudo systemctl enable --now cron |
sudo systemctl enable --now crond |
On older init scripts you may still see sudo service cron restart or sudo service crond restart. Those are compatibility paths for non-systemd or legacy tooling—not the primary workflow on current systemd-based releases. Do not treat direct /etc/init.d/ calls as equal modern alternatives.
Does Cron Support Reload?
Cron normally detects crontab changes itself, so an explicit reload is generally unnecessary for schedule updates. systemctl reload only works when the installed unit exposes a reload operation, and support varies by distribution, cron implementation and package. Do not assume cron.service and crond.service both support reload.
Check whether the unit advertises reload support:
systemctl show crond -p CanReloadOn Rocky Linux 10.2 with Cronie:
CanReload=yesThe cron unit is not present on that host:
systemctl show cron -p CanReloadCanReload=noCanReload=yes does not necessarily mean “reload all cron schedules.” On the tested Cronie service, the systemd reload action sends SIGHUP. Cronie normally uses this signal to close and reopen its log file; ordinary crontab changes are detected separately through inotify or modification-time checks.
Do not run systemctl reload crond merely after crontab -e.
Do not restart or reload cron merely to activate a changed schedule. First verify the crontab file and wait for the next matching minute. Restart the daemon only when its service state or logs show an actual daemon problem.
Verify That the Updated Cron Job Is Loaded
User crontab
List the current user’s installed lines:
crontab -lSample output:
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
* * * * * date >> /tmp/cron-test.log 2>&1For another user:
sudo crontab -u username -lSystem schedules
sudo cat /etc/crontabList drop-in job files:
sudo ls -l /etc/cron.d/Sample output:
total 4
-rw-r--r--. 1 root root 128 Jan 14 05:30 0hourlyCreate a temporary verification job
Add a one-minute test line with crontab -e:
* * * * * date >> /tmp/cron-test.log 2>&1Watch the log file:
tail -f /tmp/cron-test.logNew timestamps should appear once per minute when the schedule is valid. Remove the test line and delete /tmp/cron-test.log when you are done.
Cron Is Running but the Job Does Not Execute
When systemctl status shows the daemon is healthy, look at the job itself. Restarting cron rarely fixes syntax, path, or permission problems.
Check the schedule syntax
crontab -lFor /etc/crontab and /etc/cron.d/, remember the username field:
# minute hour day month weekday user command
0 2 * * * root /usr/local/sbin/backup.shA user crontab does not include that username column:
0 2 * * * /usr/local/sbin/backup.shUse absolute paths
Cron runs with a restricted environment:
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/binPrefer:
0 2 * * * /usr/bin/python3 /opt/scripts/report.pyrather than:
0 2 * * * python3 /opt/scripts/report.pyCheck ownership and permissions
ls -l /path/to/script.shsudo chmod +x /path/to/script.shFiles under /etc/cron.d/ should normally be owned by root and must follow the implementation’s filename and permission rules. On Debian-family systems, files under /etc/cron.d/ must be owned by root, must not be group- or other-writable, and normally use names containing only letters, numbers, underscores, and hyphens. Files in /etc/cron.d/ do not need the executable bit. Scripts under /etc/cron.daily/ do need to be executable—that distinction trips up many first-time cron setups.
Check line endings and interpreter
file /path/to/script.shhead -1 /path/to/script.shWindows CRLF line endings and a missing shebang (#!/bin/bash) are common reasons a script works in your shell but not from cron.
Capture standard output and errors
* * * * * /path/to/script.sh >> /tmp/script-cron.log 2>&1Cron may log only that it attempted to run the command; the log file shows what the script printed.
Check SELinux where applicable
On RHEL-family systems:
getenforceEnforcingsudo ausearch -m AVC -ts recentFix the policy or file context rather than disabling SELinux.
Check time and timezone
timedatectlLocal time: Sat 2026-07-11 16:42:11 IST
Universal time: Sat 2026-07-11 11:12:11 UTC
Time zone: Asia/Kolkata (IST, +0530)dateJobs scheduled around DST changes, after timezone edits, or on VMs with clock drift may appear to “skip” even when cron is healthy.
Check cron logs
On Debian and Ubuntu, depending on logging configuration:
sudo journalctl -u cron --since todaysudo grep CRON /var/log/syslogOn RHEL-family distributions:
sudo journalctl -u crond --since todaysudo tail -f /var/log/cronRecent journal lines from the test host:
sudo journalctl -u crond -n 50 --no-pagerJul 11 16:21:02 rocky1 crond[900]: (CRON) INFO (running with inotify support)
Jul 11 16:21:02 rocky1 crond[900]: (demo_cron) ORPHAN (no passwd entry)The exact log file depends on the distribution and logging configuration. A successful cron log entry does not prove your script completed successfully—it may only show that cron tried to launch it.
| Symptom | Likely cause | Fix |
|---|---|---|
| Job never appears in logs | Wrong schedule or wrong user crontab | Re-check fields with crontab -l; confirm the correct user owns the entry |
ORPHAN (no passwd entry) in logs |
Username in /etc/cron.d/ or /etc/crontab does not exist |
Fix the user field or create the account |
| Script works manually, not from cron | Relative path or missing PATH |
Use absolute paths to the interpreter and script |
| Permission denied in captured log | Script not executable or wrong owner | chmod +x and correct ownership |
| Silent failure on RHEL | SELinux denial | Check ausearch -m AVC; restore correct context |
When Restarting Cron Is Actually Appropriate
Restart may be reasonable when:
cron.serviceorcrond.serviceisfailed- the daemon is running but no schedules are being evaluated
- the cron package or daemon-level configuration was changed
- the service was upgraded and the package manager did not restart it
- logs indicate a daemon-level fault
- you are recovering after a damaged or replaced service process
Restart is normally not a fix for:
- invalid cron syntax
- missing executable permissions
- relative paths
- missing environment variables
- wrong username field
- malformed
/etc/cron.d/filenames - command failures
- SELinux denials
- timezone misunderstandings
Summary
There is no crontab service to restart. User crontabs, /etc/crontab, and valid files under /etc/cron.d/ are normally detected automatically by the cron daemon.
Use systemctl restart cron on Debian and Ubuntu or systemctl restart crond on RHEL-family distributions only when the daemon itself is stopped, failed, or unhealthy. When one scheduled job does not run, check its syntax, paths, permissions, environment and logs before restarting the service.
References
- Cronie manual (cron.8)
- Debian cron man page
- Debian crontab man page
- Red Hat Enterprise Linux — configuring scheduled tasks
- systemd.service — reload behavior

