Run a Cron Job Every Minute

29/12/2020
Chưa phân loại
If you want to run a program or script in the background on Linux then cron job is very important. With the help of cron jobs, you can execute a program or script in the background after a given interval of time.

Let’s take a look at some of the real life examples of cron jobs.

  • Let’s say, you own a website and you want to send all the users of your website an email every day. All you have to do is, write an email sending script and set up a cron job to run that script every day.
  • Let’s say, you own an advertising agency and you want to remind all the advertisers whose balance is below 5$ to recharge. All you have to do is write a script that checks the balance of all the advertisers and when it’s below 5$, it will send a notification to the advertiser’s mobile number or email. Then set up a cron job to run the script every 5 to 10 minutes, or every hour.

There are many other usages of cron jobs in Linux.

In this article, I will show you how to run cron jobs every minute on Linux. I will be using Debian 9 Stretch for the demonstration. But you can use any modern Linux distribution of your choice. Let’s get started.

Basics of Crontab:

On Linux, you don’t have to be root in order to run cron jobs. You can run cron jobs as any user. Every user on Linux can use a crontab file to run their own set of cron jobs.

By default, a user doesn’t have a crontab file on Linux. You can create a crontab file with the following command:

$ crontab -e

If you’re running this command for the first time, then you should be asked to pick a text editor from the list. I will pick nano, the default one. You can pick the one you like. Once you’re done, press <Enter>.

The crontab file should be created (if not available already) and opened with your favorite text editor.  Now you can add your own cron jobs at the end of this file and once you’re happy, just save it and exit out of the text editor.

Syntax of Running a Command Every Minute:

The syntax of crontab file is as follows:

minute hour dayOfMonth month dayOfWeek commandToRun

Here,

  • minute can be 0 to 59.
  • hour can also be 0 to 59.
  • dayOfMonth can be 1 to 31.
  • month can be 1 to 12.
  • dayOfWeek can be 0 to 7. 0 and 7 means Sunday, 1 means Monday, 2 means Tuesday and so on.

To run a commandToRun command every minute, you should write it in the crontab file as follows:

* * * * * commandToRun

Running a Crob Job Every Minute:

Now that we know the theories, let’s add a simple script timer.sh to the crontab file and see how to manage it.

In the timer.sh script, I only have the following lines of codes. All it does is create a new file /home/shovon/bin/timer.log (if does not exist already) and appends the output of the date command to it.

Now let’s add the script to our crontab and let it run every minute with the following line:

* * * * * /home/shovon/bin/timer.sh

Once you save the crontab file and exit out of the text editor, the new crontab file should be installed.

After a minute is passed, a new file is timer.log is created in the desired directory as you can see in the marked section of the screenshot below.

From the timer.log log file, it is obvious that the script timer.sh runs every minute.

Catching Errors from the Cron Jobs:

To catch errors from a cron job, you can send the errors to a error.log file and normal outputs to access.log file for example. Of course you can name the files anything you want.

To demonstrate this, I modified my script timer.sh a little bit. Now the errors are send to error.log file in the /home/shovon/bin directory and the outputs are sent to access.log in the /home/shovon/bin directory.

At first the /tmp/i_must_be_here file does not exist, so I get the error in the error.log file as you can see.

The access.log file is empty at the moment.

Now I am going to create the file /tmp/i_must_be_here

And as you can see, the output is in the access.log file now.

If you want, you can redirect the output and the errors in the same file as follows:

As you can see, STDIN and STDERR outputs are sent to the out.log file.

Making Sure the Last Job Finished Running Before Running the Job Again:

For this to work, you can create a temporary file just after the job starts and remove it just before it finishes. Then you can check whether the temporary file exists before starting the job. If it does, you can exit out of the job and run the job only when the temporary file is unavailable.

This simple script does just that.

As you can see, the timer.pid file is created.

Reading the access.log file proves that the cron job do not run before the previous cron job finishes running. As you can see, it ran at 01:32:01 and the next time it should’ve run at 01:33:01, but it didn’t. Instead, it ran at 01:35:01, about 3 minutes later.

Organizing Cron Job Outputs for Easy Debugging:

You can format the outputs nicely to make your cron job easier to debug.

An example of how it can be done is given in the following script.

As you can see, the outputs, errors and success messages are nicely printed in the log file.

You can do amazing things with cron jobs and shell scripts. I demonstrated some of the ideas here. But the sky is your limit. Feel free to experiment with any ideas you have. Thanks for reading this article.

ONET IDC thành lập vào năm 2012, là công ty chuyên nghiệp tại Việt Nam trong lĩnh vực cung cấp dịch vụ Hosting, VPS, máy chủ vật lý, dịch vụ Firewall Anti DDoS, SSL… Với 10 năm xây dựng và phát triển, ứng dụng nhiều công nghệ hiện đại, ONET IDC đã giúp hàng ngàn khách hàng tin tưởng lựa chọn, mang lại sự ổn định tuyệt đối cho website của khách hàng để thúc đẩy việc kinh doanh đạt được hiệu quả và thành công.
Bài viết liên quan

How to Upgrade to a New Ubuntu Version

Upgrading to a newer version of Ubuntu is a pretty simple and straightforward process. The entire upgrade procedure is...
29/12/2020

How to Configure dnsmasq on Ubuntu Server 18.04 LTS

dnsmasq is a very lightweight local DNS server. dnsmasq can also be configured as a DNS cache server and DHCP server. dnsmasq...
29/12/2020

How to install Nvidia Drivers on Linux

You can use Nvidia cards with the open-source Nouveau device driver or the Nvidia proprietary drivers. The proprietary driver...
28/12/2020
Bài Viết

Bài Viết Mới Cập Nhật

Reliable IPv4 and IPv6 Subnet Rental Services: The Perfect Solution for Global Businesses
23/12/2024

Tìm Hiểu Về Thuê Proxy US – Lợi Ích và Cách Sử Dụng Hiệu Quả
11/12/2024

Mua Proxy V6 Nuôi Facebook Spam Hiệu Quả Tại Onetcomvn
03/06/2024

Hướng dẫn cách sử dụng ProxyDroid để duyệt web ẩn danh
03/06/2024

Mua proxy Onet uy tín tại Onet.com.vn
03/06/2024