Difference between /etc/crontab and "crontab -e"
Solution 1
As Ignacio said, /etc/crontab
is the system wide crontab.
The format of /etc/crontab
is like this:
# m h dom mon dow user command
* * * * * someuser echo 'foo'
while crontab -e
is per user, it's worth mentioning with no -u
argument the crontab command goes to the current users crontab. You can do crontab -e -u <username>
to edit a specific users crontab.
Notice in a per user crontab there is no 'user' field.
# m h dom mon dow command
* * * * * echo 'foo'
An aspect of crontabs that may be confusing is that root also has its own crontab. e.g. crontab -e -u root
will not edit /etc/crontab
See Configuring cron.
In most Linux distros, per user crontabs are typically stored in: /var/spool/cron/crontabs/<username>
(vixie-cron).
RHEL based distributions are stored in /var/spool/cron/<username>
. (cronie)
Solution 2
One is the system crontab and can only be edited by root, and the other is the user crontab and can be edited by a user and exists per user.
Related videos on Youtube
jrdioko
Updated on September 18, 2022Comments
-
jrdioko over 1 year
What is the difference between the crontab located in
/etc/crontab
and the crontab that can be edited usingcrontab -e
? -
MartyMacGyver over 8 yearsFYI, the path given above is incorrect: per-user crontabs are stored in /var/spool/cron/crontabs/<username> (I tried twice to submit this simple correction.)
-
MartyMacGyver over 8 years... and it's corrected now.
-
Wildcard over 6 yearsActually, it's stored in
/var/spool/cron/root
for root's per-user crontab on a RHEL 6 system. Haven't checked Ubuntu, but saying "typically" seems a bit of a stretch. -
skrewler over 6 years@Wildcard I think "typically" is a fair word to use. RHEL distros ship w/ "cronie" (and anacron I believe) which is their fork of ISC-Cron/vixie cron. I don't think that's a stretch, in any case I've updated my answer to include more detail.
-
Wildcard over 6 yearsFor a quick lookup of the paths across distros, search for the string
path[crontabs]
in the CFEngine "paths" library and check the context (the preceding context lines look like e.g.redhat::
). There's more variation than you think; e.g. SUSE puts them in/var/spool/cron/tabs
. (Abstracting distro differences is one of the reasons CFEngine was originally created, so it's often a good reference.)