Scheduling tasks in NodeJS with cron job
Tags: node, beginners, javascript
Published: 2021-10-30 03:57:19

The **[cron](https://en.wikipedia.org/wiki/Cron)** command-line utility, also known as **cron job,** is a job scheduler on a Unix-like operating system. Users who set up and maintain software environments use cron to schedule jobs (commands or shell scripts) to run periodically at fixed times, dates, or intervals. It typically automates system maintenance or administration—though its general-purpose nature makes it useful for things like downloading files from the internet and downloading email at regular intervals.

A **cron job** is defined by using a series of asterisks (*****) which denotes different timing as indicated below. 

```
# ┌───────────── minute (0 - 59)
# │ ┌───────────── hour (0 - 23)
# │ │ ┌───────────── day of the month (1 - 31)
# │ │ │ ┌───────────── month (1 - 12)
# │ │ │ │ ┌───────────── day of the week (0 - 6) (Sunday to Saturday)
# │ │ │ │ │                                   
# │ │ │ │ │
# │ │ │ │ │
# * * * * *
```

This is very useful when you perform repetitive tasks that can be done programmatically for instance clearing logs, downloading files from the internet regularly or sending SMS to your spouse regularly from a Love SMS API ****😓

![red_skull.jpeg](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mnpj89yy4u5anisflcmf.jpeg)

### **Examples of cron-job in a GNU system**

The following command runs the `./clean_file.sh` script file regularly at 1 minutes past midnight everyday

```bash
1 0 * * * ./clean_file.sh
```

### **More Examples of cron job notation**

- `45 23 * * 6` - runs on Saturdays at 23:45 (11:45pm)
- `0 0 25 12 *` - runs at midnight on 25th of December (Christmas day)
- `0 0 * * *` - runs at midnight everyday
- `* * * * *` - runs every minute
- `* 10,14 * * *`- runs everyday at 10:00 (10am) and 14:00 (2pm)
- `0 0 14 2 *` - runs every 14th day in February and at midnight

To use the cron notation to schedule tasks in our application, we will install the node package **[node-cron](https://www.npmjs.com/package/node-cron)** running the command below in our terminal.

```bash
npm install node-cron 
```

[Bree](https://github.com/breejs/bree) is another package with support for workers threads and cron syntax. But for the purpose of this article, we will stick to node-cron. So let's run a simple example:

```jsx
const cron = require('node-cron');

cron.schedule('* * * * *', () => {
  console.log('running a task every minute');
});
```

So you could perform basically any function at different scheduled dates by passing the function as a second argument. 

### Running in background

on Linux you can run the program in the background by using the ampersand `&` sign behind the command:

```bash
node app .js &
```

And use the command `jobs` to see the running processes in the background.

A similar command on Powershell is known as [Start-Job](https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/start-job?view=powershell-7.1#:~:text=The%20Start%2DJob%20cmdlet%20starts,an%20extended%20time%20to%20finish.)

Thanks for reading through, I hope you liked this article 🤗

If you enjoy reading this article, you can consider [buying me a coffee](https://www.buymeacoffee.com/kayode)

Connect with me on [Twitter](https://twitter.com/zt4ff) and [LinkedIn](https://www.linkedin.com/in/oluwasegun-kayode-07879b1aa/)