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).
 
    
    - 4,277
- 5
- 30
- 32
 
    
    - 6,377
- 14
- 59
- 91
2 Answers
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
 
    
    - 9,514
- 7
- 45
- 69
 
    
    - 53,269
- 16
- 95
- 99
- 
                    4Dear Jan! Great answer. How about running a cron every 30 seconds? Is it like this? * * * * */30 /path/to/php /var/www/html/a.php ? – flaab Nov 26 '12 at 18:10
- 
                    27Unfortunately you can't run cron jobs more frequently than every minute. You'll have to use something else for that. – Jan Hančič Nov 26 '12 at 19:41
- 
                    10Jan Hančič, you can do this. You just need to use a simple trick described here: http://stackoverflow.com/a/1034304/1580615 – Ruben Aug 05 '13 at 03:28
- 
                    Is it normal practice to execute .php script each minute with cron? Can it reduce server productivity? Is there any other bad side effects? – Andrew Feb 19 '16 at 08:54
- 
                    @flaab 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>&1 – Shashank Shah Nov 28 '16 at 05:15
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
 
    
    - 12,119
- 5
- 32
- 34
- 
                    42That'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. – Keith Thompson Jul 18 '13 at 17:43