Linux

How to Resolve Crontab Error crontab: installing new crontab “/tmp/crontab.vqE76q”:1: bad command errors in crontab file, can’t install.

crontab: installing new crontab

When I tried to save and quit editing crontab, I met an error like this:

[oracle@test ~]$ crontab -e
crontab: installing new crontab
"/tmp/crontab.vqE76q":1: bad command
errors in crontab file, can't install.

Format Issues

Please be sure the format of your cron job comply with the following.

 ┌───────────── min (0 – 59)
 │ ┌────────────── hour (0 – 23)
 │ │ ┌─────────────── day of month (1 – 31)
 │ │ │ ┌──────────────── month (1 – 12)
 │ │ │ │ ┌───────────────── day of week (0 – 6)
 │ │ │ │ │
 │ │ │ │ │
 * * * * *  command to execute

The first 5 fields delimited by white spaces are all for time format, 6th and thereafter are the commands that you want to execute.

That is to say, if you were using over 5 fields, say 6 fields to schedule the time for your job to execute, it could cause problem.

Let’s see some common settings for a cron job.

1. Minutely

For example, if you want a job executed every minute, it should be:

[oracle@test ~]$ crontab -e
* * * * * /home/oracle/minute.sh
...

crontab: installing new crontab

There can’t be no more 5 wild cards in the crontab. In the real world, this example might be a very rare case of being executing every minute.

The cron job is the same as the following one:

0-59 * * * * /home/oracle/minutely.sh

But it is not the same as the following one:

0,59 * * * * /home/oracle/minutely.sh

The job means that it will be executed only at minute 0 and 59 of every hour.

The is because a hyphen indicates a range of items, whereas a comma means a separated item.

2. Hourly

For executing scripts every hour, you need to specify the minute field. For example:

[oracle@test ~]$ crontab -e
20 * * * * /home/oracle/hourly.sh
...

crontab: installing new crontab

This cron job will be executed at 20 minutes past every hour. There’re 4 wild cards in the list.

3. Daily

If you’d like to execute a job everyday, you should specify both minute and hour fields. For example, 04:20 AM everyday, you may set a cron job like this one:

[oracle@test ~]$ crontab -e
20 4 * * * /home/oracle/daily.sh
...

crontab: installing new crontab

There’re 3 wild cards in the list.

4. Weekly

A weekly job takes three fields: minute + hour + weekday :

[oracle@test ~]$ crontab -e
20 4 * * 6 /home/oracle/weekly.sh
...

crontab: installing new crontab

This job will be executed at 04:20 AM on Saturday. There’re only 2 wild cards left in the list.

4. Yearly

A yearly job takes four fields: minute + hour + month day + month :

[oracle@test ~]$ crontab -e
20 4 11 3 * /home/oracle/weekly.sh
...

crontab: installing new crontab

This job will be executed at 04:20 AM on 11th of Mar every year. There’re only 1 wild card left in the list.

4. Execute Every Minute in Specific Hour Everyday

Don’t mistaken the following cron job. It’s syntactically correct but it will be executed every minute in 4 o’clock everyday:

[oracle@test ~]$ crontab -e
* 4 * * * /home/oracle/daily.sh
...

crontab: installing new crontab

Leave a Reply

Your email address will not be published. Required fields are marked *