Crontab executes at the wrong time - linux

I have a crontab settings as follows:
sudo crontab -l -u bheng
Contents:
#field allowed values
# ----- --------------
# minute 0-59
# hour 0-23
# day of month 1-31
# month 1-12 (or names, see below)
# day of week 0-7 (0 or 7 is Sun, or use names)
#
# m h dom mon dow command
MAILTO="bheng#outlook.com"
#Daily
01 22 * * * php /home/mysite.com/artisan products:exportdiff --interval="yesterday"
16 22 * * * php /home/mysite.com/artisan images:exportdiff --interval="yesterday"
31 22 * * * php /home/mysite.com/artisan publications:exportdiff --interval="yesterday"
#Weekly
1 23 * * 7 php /home/mysite.com/artisan publications:exportdiff --interval="last sunday"
16 23 * * 7 php /home/mysite.com/artisan images:exportdiff --interval="last sunday"
31 23 * * 7 php /home/mysite.com/artisan products:exportdiff --interval="last sunday"
As you can see, it suppose to be kicking at 10 and 11 PM at night.
But instead, I got 3 emails at 5 PM yesterday at 5:01 PM, 5:16 PM, 5:31 PM.
I thought it was the time wrong the in system or VM so I checked it I saw UTC time.
Then, I update it by running sudo dpkg-reconfigure tzdata and set it to US Eastern time.
Now, when I ran date command I got Ex.Thu Dec 15 07:56:27 EST 2016 correctly as US EST time.
Is there some service that I need to restart?
Or is this something other crontab settings that might have overwrite my current settings ?

I believe you have to restart cron after making time / time zone related changes.
Depending on your version of cron, you might be able to restart it with sudo service cron restart.

Related

Crontab bad day-of-week when trying to run 3rd wednesday of the month

Have tried a schedule of below to get a job to run at 7:30 on the 3rd wednesday of the month
30 07 * * wed#3
30 07 * * 4#3
Get below error
"/tmp/crontab.kE5RJg":76: bad day-of-week
errors in crontab file, can't install
Curretly using below
30 07 15-21 * wed

Run a cron script at 1:00 PM UTC every day

i need to run a cron at 1:00 PM UTC every day, is this the right crontab for UTC ?
0 1 * * *
No, it should be in 24 hour format so
0 13 * * *
The timezone within which cron jobs are scheduled by default, is based upon the default system timezone (/etc/timezone). Depending upon your distribution, you may be able to set CRON_TZ in your crontab.
If your system default timezone is UTC then 0 1 * * * is correct.
You can add a job like the following to your crontab to determine which timezone cron is using:
0 * * * * date > /tmp/date.out

timezone aware cron jobs (adjust for DST)

I have a need to download files from all over the world to the same server. The files become available at the same time each day in the local timezone. The challenge is daylight savings time. Because different countries adjust on different days, and some don't do DST at all, the offset between any 2 timezones changes throughout the year. So it is not possible to convert everything into a single timezone. Is there a way to handle this with cron? Or something similar to cron?
I already tried this and it does not do what I want:
TZ=Asia/Tokyo
05 15 * * * echo $(date) JAPAN >> /tmp/crontest1.txt 2>&1
TZ=Europe/London
05 15 * * * echo $(date) LONDON >> /tmp/crontest2.txt 2>&1
TZ=America/New_York
05 15 * * * echo $(date) NY >> /tmp/crontest3.txt 2>&1
TZ=America/Denver
05 15 * * * echo $(date) DENVER >> /tmp/crontest4.txt 2>&1
everything runs at 15:05 in the timezone of the server and the output is
Fri Mar 24 04:05:01 JST 2017 JAPAN
Thu Mar 23 19:05:01 GMT 2017 LONDON
Thu Mar 23 15:05:01 EDT 2017 NY
Thu Mar 23 13:05:01 MDT 2017 DENVER
so while each process runs with the TZ value set correctly it runs at the time of the main server. I need something that adjusts the start time for DST.

crontab hour with UTC working hours GMT-8

i have a machine set in GMT.
i would like to have a cron task scheduled from 6AM to 5PM in PST, which is GMT-8.
gmt time zone. typical.
00 06-17 * * *
now -8 produces a crontab bad hour error.
00 22-09 * * *
the following is accepted or should i say, no error.
00 22,23,0,1,2,3,4,5,6,7,8,9 * * *
any short form therefore?
For vixie cron,
Lists and ranges are allowed to co-exist in the same field. "1-3,7-9" would be rejected by AT&T or BSD cron -- they want to see "1-3" or "7,8,9" ONLY
That is, the following:
00 22-23,0-9 * * *
You can try by changing the time zone for cron also:
suku#ubuntu-vm:~$ crontab -l | tail -2
TZ=Africa/Tripoli
* * * * * date > date.txt
suku#ubuntu-vm:~$ cat date.txt
Thu Jan 10 18:50:01 EET 2013
suku#ubuntu-vm:~$ date
Thu Jan 10 22:20:19 IST 2013
A good place to try out the basics is the cron simulator at www.dataphyx.com 1

What is the syntax for a cron job that runs 15 and 45 minutes after the hour?

What is the syntax for a cron job that runs 15 and 45 minutes after the hour? (So every 30 minutes.)
Would the syntax be something like:
15,45,30 * * * * wget -O /dev/null http://somesite.com/4_leads.php
So for example it would run at
2:15
2:45
3:15
3:45
4:15
4:45
and so on
From man 5 crontab
field allowed values
----- --------------
minute 0-59
hour 0-23
day of month 1-31
month 1-12 (or names, see below)
day of week 0-7 (0 or 7 is Sun, or use names)
Or, in other words
# m h dom mon dow user command
15,45 * * * * yourusername wget -O /dev/null http://somesite.com/4_leads.php
Skip the username field if you place the entry in a user specific crontab, via crontab -e, crontab -e -u yourusername, or similar.
This question may be better suited to serverfault.

Resources