# Solved: Crontab bad minute error

## Cause of the error

[Cron](https://betterstack.com/community/guides/linux/cron-jobs-getting-started/) reads every line of the crontab. If the line is not a comment or an
environmental variable, cron expects a correct and valid minute expression of
the cronjob. If there is an invalid minute expression (e.g. a typo), cron will
throw a Bad minute error.

[info]
## 🔭 Want to get alerted when your Cron doesn’t run correctly?
Go to [Better Stack](https://betterstack.com/uptime/) and start monitoring in 5 minutes.
[/info]

## Solution

### Troubleshooting

1. **The error message includes a specific line number.** Look at the line and
   look for syntax errors and typos.

   ```bash
   "/tmp/crontab.gLfS38":4: bad minute
   #error on line 4
   ```

2. **Check for unexpected line breaks.** Check the example of an unexpected line
   break bellow:

   ```bash
   0 0 * * *
   /command/to/execute
   ```

   Make sure there is one cronjob per line. One cronjob should not be defined on
   multiple lines.

3. **Make sure all comments start with # and are on separate lines.**
4. **Check if time schedule corresponds with the syntax rules as shown bellow**

### Crontab syntax

Crontabs have simple, but strict syntax rules. Every crontab file has to:

- Start whit a correct cron schedule (can be an environmental variable) or
  comment on every line
- Contain a username for each cron job
- Contain valid and executable shell expression
- End with a newline

```bash
# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  | .---- username
# |  |  |  |  | |
# *  *  *  *  * user  command to be executed
*  *  *  *  *  root   echo 'Hello world!'
```

[ad-uptime]