Sponsored Content
Top Forums Shell Programming and Scripting Writing a script to run weekly/monthly - check for weekday or day-of-the-month Post 302623665 by newbie_01 on Saturday 14th of April 2012 09:23:26 AM
Old 04-14-2012
Writing a script to run weekly/monthly - check for weekday or day-of-the-month

Hi all,

I currently have a UNIX file maintenance script that runs daily as a cron job.

Now I want to change the script and create functions/sub inside it that runs on a weekly or monthly basis.

To run all the scripts' daily maintenance, I want to schedule it in cron as simply maint.sh when it runs all of its daily maintenance. To run its weekly maintenance functions/subs, I schedule it as maint.sh weekly=6 where 6 is saturday. To run its monthly task, I schedule it as maint.sh monthly=15, i.e. every 15th of the month. Not sure whether I can do monthly=eom where eom is to run functions/sub for every end of the month.

At the moment, am playing around with the weekly functions/sub and what I've done so far is to do something like below

Code:
 
day_of_the_week=`date '+%A' | tr "[:upper:]" "[:lower:]"`
day_of_the_week_n=""
date_of_the_month=`date '+%d'`
 
case "${day_of_the_week}" in
   "monday" )
      day_of_the_week_n=1 ;;
   "tuesday" )
      day_of_the_week_n=2 ;;
   "wednesday" )
      day_of_the_week_n=3 ;;
   "thursday" )
      day_of_the_week_n=4 ;;
   "friday" )
      day_of_the_week_n=5 ;;
   "saturday" )
      day_of_the_week_n=6 ;;
   "sunday" )
      day_of_the_week_n=0 ;;
esac

Then I compare the day_of_week_n variable with the value of the command below:

Code:
 
echo ${1} | grep "weekly" | cut -f2 -d=

And then I use if-then-else to compare if current day of the week matches, then it will run the weekly functions/sub. So weekly=6 will run saturday's functons/sub, weekly=1 will run monday's functions/sub and so on.

Am wanting to know if there is a better way of parsing for the day of the week besides what am doing at the moment which is using case and then doing if-then-else to check for the day of the week.

For the monthly functions/sub, I uses the value of the one below and uses if-then-else again to compare it when monthly=15.

Code:
 
date_of_the_month=`date '+%d'`

Perhaps anyone can advice if there is any way I can check for end of month?

Any advice much appreciated. Thanks in advance.
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Write a shell script to find whether the first day of the month is a working day

Hi , I am relatively new to unix... Can u pls help me out to find out if the first day of the month is a working day ie from (Monday to Friday)...using Date and If clause in Korn shell.. This is very urgent. Thanks for ur help... (7 Replies)
Discussion started by: phani
7 Replies

2. Shell Programming and Scripting

Cron to run first day of month to calculate date 3 months ago

Hi, I would like to find out how can i calculate a date which is 3 months ago. I intend to run a cron job on the 1st of every month, and calculate the month 4 months earlier from the date. For example, if today's date is 1st May 2007, i would like to return 012007( January 2007). i can get... (1 Reply)
Discussion started by: new2ss
1 Replies

3. UNIX for Dummies Questions & Answers

cron script -run every 2nd day of month except Monday

I know I can't schedule this in cron and would have to write a wrapper around my script and schedule it in cron ....but not sure how do to this? How do I exclude Monday if the 2nd day of the month falls on a Monday? Thanks. I tried this: 0 0 2 * 0,2-6 command And I know this doesnt... (2 Replies)
Discussion started by: newtou
2 Replies

4. Shell Programming and Scripting

crontab entry to run every last day of the month

i've created a script which should run every last day of the month. what would be the exact crontab entry for this? thanks! (9 Replies)
Discussion started by: tads98
9 Replies

5. Shell Programming and Scripting

Script to find previous month last day minus one day timestamp

Hi All, I need to find the previous month last day minus one day, using shell script. Can you guys help me to do this. My Requirment is as below: Input for me will be 2000909(YYYYMM) I need the previous months last day minus 1 day timestamp. That is i need 2000908 months last day minus ... (3 Replies)
Discussion started by: girish.raos
3 Replies

6. Shell Programming and Scripting

Script to check if last modified day is previous day

Hi, I would like to write a script that checks if a file ('counter') was modified the previous day, if so erase its contents and write 00000000 into it. For e.g. if the file 'counter' was last modified at 11.30pm on 24th May and the script runs at 12.15am of 25th May, it should erase it's... (1 Reply)
Discussion started by: hegdepras
1 Replies

7. Shell Programming and Scripting

Script to counting a specific word in a logfile on each day of this month, last month etc

Hello All, I am trying to come up with a shell script to count a specific word in a logfile on each day of this month, last month and the month before. I need to produce this report and email it to customer. Any ideas would be appreciated! (5 Replies)
Discussion started by: pnara2
5 Replies

8. Shell Programming and Scripting

run the script for last day of the month

Hello Experts, I have a script which i want to run the on last day of every month. let say I have backup.sh script which i want to run it every month last day. Can anyone please help :confused: thanks (4 Replies)
Discussion started by: aks_1902
4 Replies

9. Shell Programming and Scripting

Need help in running script on last day of month

Hello Experts/Guru, I need a help in running the script on every month last day.... PS: due to some constrain I can't schedule in crontab Requirement: On Jan 31st i want to run some script, similarly on Feb 28th, March 31st, April 30th......till Dec 31st. Please help me by providing... (3 Replies)
Discussion started by: aks_1902
3 Replies

10. Shell Programming and Scripting

Script to run on 2 4 and 7 day of the month

I am looking for a unix script which could run a job on 2, 4 and 7 working day of the month. if the days are falling on the saturday/sunday. it should run on the next day. Thank you.. (9 Replies)
Discussion started by: tradingspecial
9 Replies
ANACRONTAB(5)							   File Formats 						     ANACRONTAB(5)

NAME
/etc/anacrontab - configuration file for Anacron DESCRIPTION
The /etc/anacrontab configuration file describes the jobs controlled by anacron(8). It can contain three types of lines: job-description lines, environment assignments, or empty lines. Job-description lines can have the following format: period in days delay in minutes job-identifier command The period in days variable specifies the frequency of execution of a job in days. This variable can be represented by an integer or a macro (@daily, @weekly, @monthly), where @daily denotes the same value as the integer 1, @weekly the same as 7, and @monthly specifies that the job is run once a month, independent on the length of the month. The delay in minutes variable specifies the number of minutes anacron waits, if necessary, before executing a job. This variable is repre- sented by an integer where 0 means no delay. The job-identifier variable specifies a unique name of a job which is used in the log files. The command variable specifies the command to execute. The command can either be a command such as ls /proc >> /tmp/proc or a command to execute a custom script. Environment assignment lines can have the following format: VAR=VALUE Any spaces around VAR are removed. No spaces around VALUE are allowed (unless you want them to be part of the value). The specified assignment takes effect from the next line until the end of the file, or to the next assignment of the same variable. The START_HOURS_RANGE variable defines an interval (in hours) when scheduled jobs can be run. In case this time interval is missed, for example, due to a power down, then scheduled jobs are not executed that day. The RANDOM_DELAY variable denotes the maximum number of minutes that will be added to the delay in minutes variable which is specified for each job. A RANDOM_DELAY set to 12 would therefore add, randomly, between 0 and 12 minutes to the delay in minutes for each job in that particular anacrontab. When set to 0, no random delay is added. Empty lines are either blank lines, line containing white spaces only, or lines with white spaces followed by a '#' followed by an arbi- trary comment. You can continue a line onto the next line by adding a '' at the end of it. In case you want to disable Anacron, add the 0anacron cron job (which is a part of crontab(1)) into the /etc/cron.hourly/jobs.deny direc- tory. EXAMPLE
This example shows how to set up an Anacron job similar in functionality to /etc/crontab which starts all regular jobs between 6:00 and 8:00 only. A RANDOM_DELAY which can be 30 minutes at the most is specified. Jobs will run serialized in a queue where each job is started only after the previous one is finished. # environment variables SHELL=/bin/sh PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root RANDOM_DELAY=30 # Anacron jobs will start between 6am and 8am. START_HOURS_RANGE=6-8 # delay will be 5 minutes + RANDOM_DELAY for cron.daily 1 5 cron.daily nice run-parts /etc/cron.daily 7 0 cron.weekly nice run-parts /etc/cron.weekly @monthly 0 cron.monthly nice run-parts /etc/cron.monthly SEE ALSO
anacron(8), crontab(1) The Anacron README file. AUTHOR
Itai Tzur <itzur@actcom.co.il> Currently maintained by Pascal Hakim <pasc@(debian.org|redellipse.net)>. For Fedora, maintained by Marcela Malaova <mmaslano@redhat.com>. cronie 2012-11-22 ANACRONTAB(5)
All times are GMT -4. The time now is 01:09 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy