Cron: Difference between revisions

From Cheaha
Jump to navigation Jump to search
(add shebang explanation)
(add more on the shebang)
Line 71: Line 71:
</pre>
</pre>


The first line in the cron configuration file (crontab file) is the shebang. When a this file is executed, if the file content beings with #!, the kernel executes the file specified on the #! line and passes the original file as an argument.  
The first line in the cron configuration file (crontab file) is the shebang. When this file is executed, if the file content beings with #!, the kernel executes the file specified on the #! line and passes the original file as an argument. Essentially, the shebang tells the terminal which program to use to run your scripts if your script is an executable file.  
<pre>
<pre>
#!/usr/bin/env
#!/usr/bin/env
</pre>
</pre>

Revision as of 17:31, 10 March 2021

Cron

What Is Cron?

Cron is a unix time based job scheduler tool.

Overview

Crontab Syntax

Cron Expression Table

Cron actions are driven by a crontab file, also known as a "cron table". The user's crontab file is a configuration file that specifies shell commands to run at a given schedule.

Each line of a crontab file represents a job, and looks like this:

# ┌───────────── minute (0 - 59)
# │ ┌───────────── hour (0 - 23)
# │ │ ┌───────────── day of the month (1 - 31)
# │ │ │ ┌───────────── month (1 - 12)
# │ │ │ │ ┌───────────── day of the week (0 - 6) (Sunday to Saturday;
# │ │ │ │ │                                   7 is also Sunday on some systems)
# │ │ │ │ │
# │ │ │ │ │
# * * * * * <command to execute>

Crontab Options

Examples

Using Cron to Initiate An Sbatch To Run A Bash Script

Bash Script

#!/bin/bash

# resources 
#SBATCH cpus-per-task=1
#SBATCH mem-per-cpu=4G
#SBATCH array=-1%1
#SBATCH partition=express

# job name, error and output files
#SBATCH --job-name=cron-job
#SBATCH error=err_%j_4a.log
#SBATCH output=out_%j_%4a.log
#SBATCH ntasks=1

# email address to request notifications when the job is complete or if it fails
#SBATCH --mail-type=FAIL
#SBATCH --mail-user=$blazerid@uab.edu


# store text file in the home directory
echo "hi" > $HOME/test.txt 

Crontab File

#!/usr/bin/env
# run generate_data.py  
# git add, commit, and push

MAILTO=blazerid@uab.edu

#git add data.csv
#git commit -m "update data"
#git push

# submit script to queuing system 
# runs cronjob.sh every minute of every day
* * * * * /cm/shared/apps/slurm/18.08.9/bin/sbatch /data/user/user_id/project_dir/cronjob.sh

The first line in the cron configuration file (crontab file) is the shebang. When this file is executed, if the file content beings with #!, the kernel executes the file specified on the #! line and passes the original file as an argument. Essentially, the shebang tells the terminal which program to use to run your scripts if your script is an executable file.

#!/usr/bin/env