Apakah mungkin untuk mengimbangi set skrip cron untuk dijalankan setiap 5 menit?
Saya memiliki dua skrip, skrip 1 mengumpulkan beberapa data dari satu basis data dan memasukkannya ke yang lain, skrip 2 mengeluarkan data ini dan banyak data lainnya dan membuat beberapa laporan cantik darinya. Kedua skrip harus dijalankan setiap 5 menit. Saya ingin mengimbangi skrip 2 dengan satu menit sehingga dapat membuat laporan dari data baru. EG Saya ingin skrip satu dijalankan pada :00, :05, :10, :15 [...]
dan skrip dua dijalankan pada :01, :06, :11, :16 [...]
setiap jam. Skrip tidak saling bergantung, dan skrip 2 harus dijalankan terlepas dari apakah skrip satu berhasil atau tidak. Tetapi akan bermanfaat jika laporannya dapat memiliki hte data terbaru. Apakah ini mungkin dengan cron?
Pos;
Saya telah berpikir tentang menggunakan kedua perintah dalam skrip shell sehingga mereka berjalan segera setelah satu sama lain tetapi ini tidak berhasil, kadang-kadang skrip 1 dapat terputus pada menunggu API eksternal dll. Jadi mungkin membutuhkan waktu hingga 15 menit untuk berjalan, tetapi skrip 2 harus dijalankan setiap 5 menit sehingga melakukannya dengan cara ini akan menghentikan / menunda eksekusi skrip 2. Jika saya dapat mengatur ini di Cron, artinya skrip 2 akan berjalan terlepas dari skrip apa yang sedang dilakukan 1
Field entri menit untuk crontab menerima operator "increments" yang agak membingungkan karena sepertinya operator itu seharusnya operator "bagi dengan" matematika tetapi tidak. Anda akan paling sering melihatnya menggunakan sesuatu seperti yang berikut ini. Perhatikan bahwa ini tidak menemukan angka yang dapat dibagi lima, melainkan mengambil setiap item kelima dari suatu set:
Ini memberitahu cron untuk mencocokkan setiap item kelima (
/5
) dari set menit 0-59 (*
) tetapi Anda dapat mengubah set seperti ini:Ini akan mengambil setiap item kelima dari set 1-59, menjalankan perintah Anda pada menit 6, 11, 16, dll.
Jika Anda membutuhkan lebih banyak offset berbutir halus dari satu menit, Anda dapat meretasnya menggunakan perintah sleep sebagai bagian dari crontab Anda seperti ini:
Ini akan menjalankan pekerjaan Anda setiap lima menit, tetapi perintah itu tidak akan benar-benar dimulai sampai 15 detik setelah menit. Untuk pekerjaan yang berjalan singkat di mana berada beberapa detik setelah sesuatu yang lain membuat perbedaan tetapi Anda tidak ingin terlambat satu menit penuh, ini adalah hack yang cukup sederhana.
sumber
Anda dapat menunjukkan offset waktu dengan simbol +. Misalnya, untuk dijalankan pada
:01, :06, :11, :16 [...]
, buat tugas sepertisumber
Ini bekerja untuk saya:
Di mana 1 adalah menit offset. Jadi, jika Anda ingin mengimbangi tiga menit:
Saya memiliki ini berfungsi dalam pengaturan jadwal AWS
sumber