Skip to content
Related Articles

Related Articles

Improve Article

Crontab – Running a Python script with parameters

  • Last Updated : 18 Jul, 2021
Geek Week

Scheduling python scripts with crontab is fundamental when it comes to automating tasks using python. We will see how to schedule python scripts and pass the necessary parameters as well.

The Cron job utility is a time-based job scheduler in Unix. It allows the user to run the file at a given time and date. And crontab is a list of commands that you want to run on a regular schedule, and also the name of the command used to manage that list. 

Creating Python script for demonstration:

First, let’s create a simple script that we will be scheduled to run every 2 minutes. The below is a simple script that calculates the product of all parameters passed and prints them to STDOUT along with the time the script was run.

Python




#! /usr/bin/python3
  
import sys
from datetime import datetime
  
def main(args):
    ans = 1
    for arg in args[1:]:
        ans *= int(arg)
    print("calculated result as: {} on: {} ".format(ans,
                                                    datetime.now()))
  
if __name__ == '__main__':
    main(sys.argv)

Note: #!/usr/bin/python3 (specifying the path of script interpreter) is necessary if you wish to make the script executable.



Assuming we have saved this script as  my_script.py under our home directory, we can make it executable by entering the following command in our terminal:

$ sudo chmod +x my_script.py

We can test our script if it is working properly.

./my_script.py 1 2 3 4 5
calculated result as: 120 on: 2021-07-01 12:19:48.856184

The crontab scheduling expression has the following parts:

Crontab also accepts special characters for creating a more complex time schedule:

CharacterMeaning
CommaTo separate multiple values
HyphenTo indicate a range of values
AsteriskTo indicate all possible values
Forward slashTo indicate EVERY

To schedule our script to be executed, we need to enter the crontab scheduling expression into the crontab file. To do that, simply enter the following in the terminal:

crontab -e

You might be prompted to select an editor, choose nano and append the following line to the end of the opened crontab file:

*/2 * * * * /home/$(USER)/my_script.py 1 2 3 4 5 >> /home/$(USER)/output.txt

where $(USER) can be replaced with your username. Save changes and exit. This will schedule our Python script to run every 2 minutes with 1 2 3 4 5 as command-line arguments and write the output to /home/$(USER)/ouput.txt.

 Attention geek! Strengthen your foundations with the Python Programming Foundation Course and learn the basics.  

To begin with, your interview preparations Enhance your Data Structures concepts with the Python DS Course. And to begin with your Machine Learning Journey, join the Machine Learning – Basic Level Course




My Personal Notes arrow_drop_up
Recommended Articles
Page :