How did I wipe out all my cron jobs?

10

I have accidentally wiped out all my cron jobs. I'm not sure what I have done. I don't remember deleting entries from it by issuing crontab -e. What are the possible ways that the cron jobs can be completely wiped out?

Jason Yeo

Posted 2012-03-14T06:49:26.857

Reputation: 205

Answers

18

If you type crontab with no arguments, it reads a crontab from standard input. If you then type Control-D, it will create an empty crontab, overwriting your previous crontab. (Control-C aborts the command and leaves your crontab alone.)

jpmath's answer correctly points out that crontab -r will also wipe out your cron jobs (that's what it's for).

I avoid this by never using crontab -e (edit crontab) or crontab with no arguments (which reads from stdin). Instead, I keep my crontab entries in a separate file, which I maintain in a source control system, and run the crontab command with that file name as an argument.

(I temporarily clobbered my own crontab while writing this answer, knowing that I could recover it.)

Keith Thompson

Posted 2012-03-14T06:49:26.857

Reputation: 4 645

thanks. Are there any ways to recover it? – Jason Yeo – 2012-03-15T02:07:26.503

4If you didn't already save a copy of it, none that I know of. The system probably keeps your crontab in /var/spool/cron/crontabs/foo, where foo is your user name; if you have some way of recovering a previous version of that file, you might have a chance. In other words, it comes down to whether you can recover old deleted files in general. Do you have backups? – Keith Thompson – 2012-03-15T04:11:21.033

@JasonYeo you might be able to recover it using PhotoRec (based on TestDisk), but if that section of the disk was overwritten, it's possible you may not be able to recover the file (the filesystem you use will also affect this).

– Breakthrough – 2013-07-31T17:44:05.640

6

If you type crontab -r instead of crontab -e by mistake (e and r are next to each other), your crontab will be removed as well.

jpmath

Posted 2012-03-14T06:49:26.857

Reputation: 225

0

Here's how I confirmed why I lost my crontab file:

[me@myUbuntuPC ~]$ history | grep crontab
...
197  crontab
198  man crontab
198  crontab -e
...

And there's the evidence. My employer used to call that "Learn After Doing"!

I can confirm that under Ubuntu 12.04 and 18.04 (so I assume versions in between), if you type crontab by itself, and hit ctrl-C it also wipes your crontab.

I don't use crontab very often, and while setting up a new machine, my faulty memory told me to type crontab on the old one to view the contents (having forgotten it's crontab -e), I then said "Oh, that's not right. Abort!" and hit Ctrl-C. No more crontab! D'oh!

Then I reviewed the man pages, my notes and/or Google... (L.A.D. as we used to say.)

Not sure if other distros act like this with ctrl-C.

So now I added notes inside my crontab file reminding me to "crontab -l > crontab.backup" to save, and "crontab crontab.backup" to restore. Now, when it's time to build a new Ubuntu 22.04LTS, I'll look at crontab.backup, hopefully read the notes, and remember enough to do it right!

I just tested with a LinHES system (Arch based MythTV) and crontab 4.5 gives you the following:

[me@myLinHESpc ~]$ crontab
crontab 4.5
crontab file [-u user]  replace crontab from file
crontab -  [-u user]    replace crontab from stdin
crontab -l [-u user]    list crontab
crontab -e [-u user]    edit crontab
crontab -d [-u user]    delete crontab
crontab -c dir <opts>   specify crontab directory

I like this much better.

Arch (and LinHES) are rolling upgrade distros, so this would reflect the latest versions in the repos as of mid-2018.

So, chances are, you wiped your crontab by typing crontab by itself, and you don't have crontab 4.5!

I've had years of experience running Linux, but Arch has taught me I know very little about it!

Lurker Smith

Posted 2012-03-14T06:49:26.857

Reputation: 1