Bagaimana cron menangani sisa dalam pekerjaan "sesering"

13

Jika saya melakukan ini:

*/9 * * * * /path/to/wotnot

Pada jam berapa tugas akan berjalan dalam dua jam, mulai pukul 09.00

Apakah ini A:

09h00
09h09
09h18
09h27
09h36
09h45
09h54
10h03
10h12
10h21
10h30
10h39
10h48
10h57

atau B:

09h00
09h09
09h18
09h27
09h36
09h45
09h54
10h00
10h09
10h18
10h27
10h36
10h45
10h54
Jesse
sumber

Jawaban:

31

Saat melihat rentang, Anda menafsirkannya hanya dalam kolom itu, jadi '* / 9' dalam kolom menit berarti "daftar setiap menit, lalu pilih setiap nilai kesembilan". Pilihan ini diatur ulang di bagian atas jam, sehingga Anda memulai kembali di xx: 00, xx: 09, xx: 18, dll setiap jam.

Itu juga dapat dibaca sebagai "setiap sembilan menit setiap jam", menyiratkan pengaturan ulang di bagian atas jam.

Jadi perilaku aktual yang akan Anda lihat sesuai dengan opsi B.

John
sumber
Ini adalah satu-satunya jawaban yang tampaknya benar-benar menjawab pertanyaan itu. Apakah Anda mencoba ini untuk memastikan?
gparent
Dalam 10 menit terakhir? Tidak. Dalam tiga bulan terakhir? Ya, meskipun tidak secara khusus pada interval sembilan menit.
John
Jangan melihat mengapa saya peduli ketika Anda melakukannya tetapi hanya jika. Terima kasih.
gparent
1
Saya memiliki mantan rekan kerja yang kesal tentang "tidak, Anda tidak mengujinya, Anda mengandalkan ingatan Anda yang salah!" dalam situasi yang sama (tentu saja, 5 menit kemudian mereka berjalan kesal setelah saya membuktikan bahwa itu masih berfungsi), jadi saya telah membentuk kebiasaan lindung nilai terhadap hal itu sebelumnya.
John
2
Langkah pertama dalam pengujian adalah memastikan bahwa Anda memiliki merek dan versi yang sama dengan pelanggan (dalam hal ini Jesse). Saya tidak melihat petunjuk di sini sejauh ini tentang cron apa yang dia gunakan. (Kemungkinan Vixie Cron, dan fitur dasar ini cenderung stabil di seluruh versi program itu.)
Kaz
22

Untuk mengkonfirmasi jawaban John, */ndi kolom menit berarti "ketika menit adalah 0 mod n". Ini sebuah crontabentri:

*/7 * * * *  date >> /tmp/foo

dan inilah hasilnya:

Thu Jan 10 14:49:01 GMT 2013
Thu Jan 10 14:56:01 GMT 2013
Thu Jan 10 15:07:01 GMT 2013

Perhatikan jarak antara dua kali terakhir bukan tujuh menit, karena setelah nn: 56 pertandingan berikutnya */7adalah `nn + 1: 07.

Ya, saya sadar saat-saat itu ada di masa depan (atau saat saya memposting ini); Saya harus menggerakkan jam sistem maju agak cepat untuk mendapatkan jawaban cepat.

MadHatter
sumber
5
+1 untuk upaya :)
Sven