Hari ini adalah 1 November 2016 atau dalam angka (tidak ambigu), 2016-11-01.
Saya memiliki tugas mengatur cron pengguna seperti ini:
# m h dom mon dow command
33 3 1 */2 * /home/user/...
Seharusnya berjalan setiap bulan pada tanggal satu bulan pada jam 3:33, tidak peduli hari apa dalam seminggu, tetapi untuk beberapa alasan itu dijalankan hari ini, meskipun 11 tidak habis dibagi 2.
Adakah yang bisa menjelaskan hal ini kepada saya? Apakah asumsi saya tentang keterbagian oleh 2 salah?
EDIT: Saya lupa menyebutkan, saya menjalankan cron
versi "3.0pl1-127 + deb8u1" pada mesin Debian 8.6 "Jessie".
Jawaban:
Ini
/
bukan ekspresi aritmatika, melainkan menggambarkan "nilai langkah" di atas rentang nilai yang diizinkan . Jadi, karena bulan selalu dimulai dengan1
alih - alih0
,/2
berarti "mengambil setiap nilai lainnya", menghasilkan (1, 3, 5, 7, 9, 11).Ini juga dijelaskan dalam halaman buku panduan, meskipun ini tidak terlalu jelas dan mudah dimengerti:
sumber
*/5
? Apakah 1,6,11,1,6 ... atau 1,6,11,4,9 ...? Saya berasumsi bahwa "rentang nilai yang diizinkan" berarti tidak memiliki memori, tetapi sekarang saya tidak begitu yakin tentang itu.crond
cukup ambil daftar nilai yang mungkin, terapkan pemilih langkah sekali dan kemudian gunakan hasil ini berulang kali.Hari ini adalah hari pertama di bulan November.
* / 2 berarti cronjob Anda akan dieksekusi setiap bulan seperti yang Anda katakan.
Jadi bulan depan (Desember) cronjob tidak akan dieksekusi, tetapi bulan (Januari) setelahnya.
Bulan sebelum bulan ini (Oktober) cronjob tidak dieksekusi. Tetapi pada bulan September itu.
sumber
*/2
bidang bulan sama dengan1-11/2
, bukan2-12/2
. Saya tidak mengatakan Anda salah, tetapi dapatkah Anda membuat dokumentasi pendukung?