8

I hurried and forgot the e in crontab -e before I hit Enter.

A prompt appeared, so I closed with Ctrl+D, same as I usually exit input prompts.

Now, without warning, my entire crontab is empty.

Why? What logic caused this to happen? How should I close prompts other than Ctrl+D so that nothing is saved?

1

2 Answers 2

7

Control+C will in this case abort crontab and not wipe out the current crontab entries. Otherwise, the bare - is a common indication on Unix that input should be read from standard input, and Control+D closes standard input, resulting in the empty crontab file, as nothing was piped in on standard input.

A user crontab entry along the lines of

@daily crontab -l > $HOME/.cron.`hostname`

may help against any such future oopsies by providing a backup copy of the crontab data (or you can go wild with version control, or however complex you want the backup to be).

14

You replaced your crontab with contents from stdin, which was empty. It is essentially same as crontab < /dev/null.

Pressing Ctrl+C might be a better habit.

Your crontab is most likely gone. Backup could be somewhere in /var/spool/cron, but I don't know any cron daemon that maintains backups. You should set up backups of /var/spool/cron if it's important for you.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .