Using crontab to execute script every minute and another every 24 hours [closed]
Asked Answered
W

2

321

I need a crontab syntax which should execute a specific PHP script /var/www/html/a.php every minute. The execution on every minute must start at 00:00. The other task which must execute a script at 00:00 /var/www/html/reset.php (once every 24 hours).

Watersick answered 22/3, 2011 at 21:24 Comment(0)
F
595

every minute:

* * * * * /path/to/php /var/www/html/a.php

every 24hours (every midnight):

0 0 * * * /path/to/php /var/www/html/reset.php

See this reference for how crontab works: http://adminschoice.com/crontab-quick-reference, and this handy tool to build cron jobx: http://www.htmlbasix.com/crontab.shtml

Fredericafrederich answered 22/3, 2011 at 21:27 Comment(5)
Dear Jan! Great answer. How about running a cron every 30 seconds? Is it like this? * * * * */30 /path/to/php /var/www/html/a.php ?Fulgurous
Unfortunately you can't run cron jobs more frequently than every minute. You'll have to use something else for that.Matterhorn
Jan Hančič, you can do this. You just need to use a simple trick described here: https://mcmap.net/q/100967/-how-to-get-a-unix-script-to-run-every-15-secondsArkwright
Is it normal practice to execute .php script each minute with cron? Can it reduce server productivity? Is there any other bad side effects?Statis
@Fulgurous for every 30 seconds you can try something like this: - * * * * * curl --silent URL >/dev/null 2>&1 * * * * * sleep 30; curl --silent URL >/dev/null 2>&1Heraclea
L
381

This is the format of /etc/crontab:

# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed

I recommend copy & pasting that into the top of your crontab file so that you always have the reference handy. RedHat systems are setup that way by default.

To run something every minute:

* * * * * username /var/www/html/a.php

To run something at midnight of every day:

0 0 * * * username /var/www/html/reset.php

You can either include /usr/bin/php in the command to run, or you can make the php scripts directly executable:

chmod +x file.php

Start your php file with a shebang so that your shell knows which interpreter to use:

#!/usr/bin/php
<?php
// your code here
Lithic answered 22/3, 2011 at 21:27 Comment(1)
That's the format of /etc/crontab, which is a system crontab file. A user crontab has a different format, which doesn't include the username field, since it runs as the user who submitted it. If you want to run a cron job as a non-root user, you should use the crontab command to submit it (and not worry about where the crontab is stored). Don't mess around with /etc/crontab unless you really need to.Undercut

© 2022 - 2024 — McMap. All rights reserved.