How to add a cron job on Linux

Question: I would like to schedule a task on my Linux box, so that the task runs periodically at fixed times. How can I add a cron job for this task on my Linux system?

The cron utility is the default task scheduler used in Linux. Using cron, you can schedule a task (e.g., a command or a shell-script) to run it periodically or one-time at a specific time of hour, day, week, month, etc. The cron tool is useful when you schedule a variety of regular maintenance jobs, such as periodic backup, rotating logs, checking filesystem, monitoring disk space, and so on.

Add a Cron Job from the Command Line

To add a cron job, you can use a command-line tool called crontab.

Type the following command to create a new cron job to run as the current user.

$ crontab -e

If you want a cron job to run as any other user, type the following command instead.

$ sudo crontab -u <username> -e

You will be presented with a text editor window, where you can add or edit cron jobs. By default, nano editor will be used.

Each cron job is formatted as follows.

<minute> <hour> <day-of-month> <month-of-year> <day-of-week> <command>

The first five elements specify the schedule for a task, and the last element is the (full-path) command or script to execute according to the schedule.

Here are a few useful cron job examples.

  • * * * * * /home/dan/bin/script.sh: run every minute.
  • 0 * * * * /home/dan/bin/script.sh: run every hour.
  • 0 0 * * * /home/dan/bin/script.sh: run at 12am daily.
  • 0 9,18 * * * /home/dan/bin/script.sh: run at 9AM and 6PM twice a day.
  • 0 9-18 * * * /home/dan/bin/script.sh: run every hour from 9AM and 6PM.
  • 0 9-18 * * 1-5 /home/dan/bin/script.sh: run every hour from 9AM and 6PM every weekday.
  • */10 * * * * /home/dan/bin/script.sh: run every 10 minutes.

Once you are done with setting up cron job(s), press Ctrl+X to save and quit the editor. At this point, newly added cron jobs should be activated.

To browse existing cron jobs of yours, use the following command:

$ crontab -l

Add a Cron Job from GUI

If you are in Linux desktop environment, you can use a GUI fronend for crontab to add or edit a cron job via a more user-friendly interface.

On GNOME desktop, there is GNOME Schedule (gnome-schedule package).

On KDE desktop, there is Task Scheduler (kcron package).

Download this article as ad-free PDF (made possible by your kind donation): 
Download PDF

Subscribe to Ask Xmodulo

Do you want to receive Linux related questions & answers published at Ask Xmodulo? Enter your email address below, and we will deliver our Linux Q&A straight to your email box, for free. Delivery powered by Google Feedburner.


Support Xmodulo

Did you find this tutorial helpful? Then please be generous and support Xmodulo!

4 thoughts on “How to add a cron job on Linux

  1. Or how about putting scripts in cron.daily, cron.monthly, cron.hourly and such. However I find putting things IN the crontab is better for visibility. A simple crontab will show you what a user has cron'd out.

  2. you can add variables to the crontab to avoid repititions

    folder1=/usr/bin/rsync

    00 10 * * * ${folder1}/rsync

  3. You can also have a direct command instead of a script e.g
    0 1 * * * rsync -flags source target
    To pull data from one place to another every day at 0100.

Leave a comment

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