Menggunakan crontab untuk menjalankan skrip setiap menit dan lainnya setiap 24 jam [ditutup]

316

Saya memerlukan sintaks crontab yang harus menjalankan skrip PHP tertentu /var/www/html/a.phpsetiap menit. Eksekusi pada setiap menit harus dimulai pukul 00:00. Tugas lain yang harus menjalankan skrip pada pukul 00:00 /var/www/html/reset.php(sekali setiap 24 jam).

Michael
sumber

Jawaban:

586

setiap menit:

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

setiap 24 jam (setiap tengah malam):

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

Lihat referensi ini untuk cara kerja crontab: http://adminschoice.com/crontab-quick-reference , dan alat praktis ini untuk membangun cron jobx: http://www.htmlbasix.com/crontab.shtml

Jan Hančič
sumber
3
Jan sayang! Jawaban yang bagus Bagaimana menjalankan cron setiap 30 detik? Apakah seperti ini? * * * * * / 30 / path / ke / php /var/www/html/a.php?
flaab
26
Sayangnya Anda tidak dapat menjalankan pekerjaan cron lebih sering daripada setiap menit. Anda harus menggunakan sesuatu yang lain untuk itu.
Jan Hančič
9
Jan Hančič, Anda bisa melakukan ini. Anda hanya perlu menggunakan trik sederhana yang dijelaskan di sini: stackoverflow.com/a/1034304/1580615
Ruben
Apakah praktik biasa untuk mengeksekusi skrip .php setiap menit dengan cron? Bisakah itu mengurangi produktivitas server? Apakah ada efek samping buruk lainnya?
Andrew
@flaab untuk setiap 30 detik Anda dapat mencoba sesuatu seperti ini: - * * * * * curl --silent URL> / dev / null 2> & 1 * * * * * * sleep 30; curl --silent URL> / dev / null 2> & 1
Shashank Shah
375

Ini adalah format / 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

Saya sarankan menyalin & menempelkan itu ke bagian atas file crontab Anda sehingga Anda selalu memiliki referensi yang praktis. Sistem RedHat diatur seperti itu secara default.

Untuk menjalankan sesuatu setiap menit:

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

Untuk menjalankan sesuatu di tengah malam setiap hari:

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

Anda dapat memasukkan / usr / bin / php dalam perintah untuk menjalankan, atau Anda dapat membuat skrip php langsung dieksekusi:

chmod +x file.php

Mulai file php Anda dengan shebang sehingga shell Anda tahu juru bahasa mana yang harus digunakan:

#!/usr/bin/php
<?php
// your code here
Greg
sumber
42
Itu format /etc/crontab, yang merupakan file sistem crontab. Seorang pengguna crontab memiliki format yang berbeda, yang tidak termasuk bidang nama pengguna, karena berjalan sebagai user yang disampaikan itu. Jika Anda ingin menjalankan pekerjaan cron sebagai pengguna non-root, Anda harus menggunakan crontabperintah untuk mengirimkannya (dan tidak khawatir tentang di mana crontab disimpan). Jangan main-main dengan /etc/crontabkecuali Anda benar-benar perlu.
Keith Thompson
umm ... tidak, masih tidak berfungsi
Madeo