You need to use the date command to find out whether tomorrow is the first day of the next month. If it is true, you can run your script.
Say hello to TZ variable
TZ is time zone environment variable on Linux or Unix-like systems. The TZ environment variable tells functions such as the ctime(3) family and programs like date what the time zone and daylight saving rule is. For example, Greenwich Mean Time can be defined as follows:
You can set TZ as follows to get tomorrow from the current date (+%d):
TZ=GMT-24 date +%d
How do I find out tomorrow date?
The syntax is as follows:
# CDT TZ=CDT-24 date +%d #PST TZ=PST-24 date +%d #EDT TZ=PST-24 date +%d #IST TZ=IST-24 date +%d
Example: Shell script
#!/bin/bash # Purpose: Tell if it is last day of a month # Author: Vivek Gite <www.cyberciti.biz> under GPL v2.x+ # --------------------------------- # Find tomorrow day in IST time zone day=$(TZ=IST-24 date +%d) # Compare it # If both are 1 means today is the last day of a month if test $day -eq 1; then echo "Last Day of a Month" else echo "Noop" fi
Run it as follows:
Fri Jul 31 12:35:16 IST 2015 Last Day of a Month
Try one more time:
Tue Aug 4 01:04:48 IST 2015 Noop
Create a wrapper script
Let us say you want to find out disk usage on the last day of a month. You’ve a script called /root/scripts/disk-usage.sh. Modify above script as follows:
#!/bin/bash # Script: /root/scripts/is-end-of-month.sh # Purpose: Tell if it is last day of a month # Author: Vivek Gite <www.cyberciti.biz> under GPL v2.x+ # --------------------------------- # Find tomorrow day in IST time zone day=$(TZ=IST-24 date +%d) # Compare it # If both are 1 means today is the last day of a month if test $day -eq 1; then # Call disk usage script /root/scripts/disk-usage.sh fi
Create a cron job
You can install your cronjob by running the following command:
# crontab -e
Append the following code to run a script called /root/scripts/is-end-of-month.sh once a day:
0 0 * * * /root/scripts/disk-usage.sh
Save and close the file.
- What is cron on a Linux or Unix-like systems?
- HowTo: Add Jobs To cron Under Linux or UNIX?
- Linux Verify crond Daemon And Cronjobs Are Running
- Linux Start Restart and Stop The Cron or Crond Service
- Linux: List / Display All Cron Jobs
- Linux / UNIX Crontab File Location
- Linux / UNIX: Change Crontab Email Settings ( MAILTO )
- Disable The Mail Alert By Crontab Command On a Linux or Unix-like Systems
- Linux: At What Time Cron Entries In cron.daily, cron.weekly, cron.monthly Run?
- Linux Execute Cron Job After System Reboot
- Linux / UNIX Setup and Run PHP Script As A Cron Job
- How to run crontab job every minute on a Linux or Unix-like system
- Run crontab (cron jobs) Every 10 Minutes
- Cron Job Script Execution on the Last Day of a Month