|
Search Forums:
|
|||||||
| Forums | Register | Forum Rules | Linux and Unix Links | Man Pages | Albums | FAQ | Users | Calendar | Search | Today's Posts | Mark Forums Read |
| Shell Programming and Scripting Post questions about KSH, CSH, SH, BASH, PERL, PHP, SED, AWK and OTHER shell scripts and shell scripting languages here. |
|
|
|
Thread Tools | Search this Thread | Display Modes |
|
#1
|
|||
|
|||
|
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!
|
| Sponsored Links | |
|
|
|
#2
|
||||
|
||||
|
Have cron run a script on days 28, 29, 30 and 31 of every month. Create two variables in the script, one containing today's day of the month and another containing tomorrow's day of the month: Code:
TODAY=`date +%d`
TOMORROW=`date +%d -d "1 day"`
# See if tomorrow's day is less than today's
if [ $TOMORROW -lt $TODAY ]; then
echo "This is the last day of the month"
# Do stuff...
fi![]()
Last edited by zaxxon; 10-20-2011 at 03:54 AM.. Reason: code tags |
| Sponsored Links | ||
|
|
|
#3
|
||||
|
||||
|
to be ran at 11pm on the last day of a month: Code:
00 23 * * *[ `date +%d` -eq `echo \`cal\` | awk '{print $NF}'` ] && myJob.sh |
|
#4
|
||||
|
||||
|
You can try as, Code:
00 23 * * * [[ $(date +'%d') -eq $(cal | awk '!/^$/{ print $NF }' | tail -1) ]] && job 1>/dev/null 2>&1hth.
Last edited by zaxxon; 10-20-2011 at 03:55 AM.. Reason: code tags |
| Sponsored Links | |
|
|
#5
|
||||
|
||||
|
Just a note - when using commands in cron always use the full path to commands...
/usr/bin/date /usr/bin/cal In this case however, the commands should work without the full path because cron sets up a very basic environment that usually includes /usr/bin in PATH, but I always err on the side of caution and provide absolute paths.... </pedant> Cheers ZB |
| Sponsored Links | |
|
|
#6
|
|||
|
|||
|
My simple solution...
Was to turn the date math trick shown above into a script that I named 'last-day-of-month.sh': Code:
#!/bin/bash
TODAY=`/bin/date +%d`
TOMORROW=`/bin/date +%d -d "1 day"`
# See if tomorrow's day is less than today's
if [ $TOMORROW -lt $TODAY ]; then
exit 0
fi
exit 1Which can then be used within a crontab file as follows: Code:
12 0 * * * last-day-of-month.sh && /run/my/cron/job.sh I hope this is of some use to you... -jason |
| Sponsored Links | |
|
|
#7
|
||||
|
||||
|
I had a similar dilemma where I need to run a backup script every 2nd Tuesday of the Month. So I added the following to my script: Code:
TODAY=`/bin/date +%d | cut -d"0" -f2`
TUE=`cal | awk {'print $3'} | xargs | /usr/bin/cut -d" " -f3`
#See if today matches the 2nd Tuesday of the month
if [ "$TODAY" -ne "$TUE" ] ; then
exit 0
else
Last edited by zaxxon; 10-20-2011 at 03:55 AM.. Reason: code tags |
| Sponsored Links | ||
|
|
![]() |
| Thread Tools | Search this Thread |
| Display Modes | |
More UNIX and Linux Forum Topics You Might Find Helpful
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Crontab Entry | Dastard | Shell Programming and Scripting | 5 | 02-10-2007 01:22 AM |
| crontab entry | Sowser | UNIX for Advanced & Expert Users | 4 | 01-08-2007 04:34 PM |
| Crontab entry | bestbuyernc | Shell Programming and Scripting | 1 | 09-12-2005 03:13 PM |
| crontab entry | matrixmadhan | UNIX for Dummies Questions & Answers | 3 | 06-07-2005 08:57 AM |
| Crontab First Monday of Month only | molonede | UNIX for Dummies Questions & Answers | 3 | 10-09-2001 09:38 AM |
|
|