Neden cron işim bu ay kaçtı?


31

Bugün 1 Kasım 2016 ya da (belirli) rakamlarla, 2016-11-01.

Bu şekilde ayarlanmış bir kullanıcı cron işim var:

# m h  dom mon dow   command
33  3   1  */2  *    /home/user/...

Her ayın ilk günü saat 3: 33'te, haftanın hangi günü olduğu fark etmeksizin, ancak bir nedenden ötürü, 11'in 2'ye bölünememesine rağmen bugün çalıştırıldığı tahmin ediliyor.

Biri bana bunu açıklayabilir mi? Bölünebilirlik varsayımım 2 yanlış mı?

EDIT: cron"3.0pl1-127 + deb8u1" versiyonunu Debian 8.6 "Jessie" makinesinde kullanıyorum.



Öyleyse 1 yılın 2016 ayının 11. günü hakkında konuşuyorsunuz. :) (Amerika'daki en yaygın tarih sırası ay-gün-yıl'dır.)
Piliçler

@chicks bu sorunun düzenlenme geçmişini kontrol edin, başlangıçta bahsettiğiniz formatı kullandım ;-)
comfreak

@ chicks demek ay / gün / yıl?
kullanıcı253751

... imfibis No. ... comfreak: lol
civcivler

Yanıtlar:


61

/Bunun yerine fazla "adım değerler" tanımlar, bir aritmetik ifade değil izin değerler aralığı. Bu nedenle, aylar her zaman 1yerine başlamakla başladığından 0, /2"her diğer değeri al" anlamına gelir, (1, 3, 5, 7, 9, 11).

Bu el kitabında da açıklanmıştır, ancak bu çok açık ve anlaşılması kolay olmamalıdır:

Kademe değerleri aralıklarla birlikte kullanılabilir. "<Sayı>" olan bir aralığın ardından, sayının değerinin aralık boyunca atlandığını belirtir. Örneğin, saat alanında "0-23 / 2" her iki saatte bir komut çalıştırma belirtmek için kullanılabilir (V7 standardındaki alternatif "0,2,4,6,8,10,12,14,16 , 18,20,22" ). Yıldız işaretinden sonra da adımlara izin verilir, bu nedenle "iki saatte bir" demek istiyorsanız, sadece "* / 2" kullanın.


2
Cevabınız için teşekkürler, bu sayfayı man sayfasını tekrar okuduktan ve kafamda çalıştıktan sonra gördüm. Genelde sadece sayıların 0 ile başladığı kısa vadeli cron işleriyle çalışıyordum ve benim varsayımım aslında bir anlamda anlamlıydı.
comfreak,

18
Ben sadece bu soruyu neden daha sık sorulmadığını sordum ve aynı sonuca ulaştım: Çünkü az sayıda insan, ay alanında herhangi bir şeyle "*" iş yapıyor.
Sven

Bir soru, örneğin sayı bölünmezse ne olur */5? 1,6,11,1,6 ... mı yoksa 1,6,11,4,9 ... mu olurdu? "İzin verilen değer aralığının üstünde" olduğunu, hafızasının olmadığı anlamına geldiğini varsaydım, ancak şimdi bundan o kadar emin değildim.
MariusSiuram

@ MariusSiuram: İlk değişken. Yine, bu bir aritmetik işlem değildir. crondsadece olası değerlerin listesini alır, adım seçiciyi bir kez uygular ve ardından bu sonuçları tekrar tekrar kullanır.
Sven

4

Bugün kasımdaki ilk gün.

* / 2, cronjob'ınızın söylediğiniz gibi her ay çalışacağını gösterir.

Yani gelecek ay (Aralık) cronjob idam edilmeyecek, ancak bundan sonraki ay (Ocak) olacak.

Bu aydan önceki ay (Ekim), cronjob idam edilmedi. Ancak Eylül ayında öyleydi.


1
Yani */2, ayın alanından 1-11/2ziyade eşdeğer olduğunu tahmin edersiniz 2-12/2. Yanıldığını söylemiyorum ama destekleyici belgeler hazırlayabilir misin?
MadHatter,

@MadHatter Sven iyi açıkladı.
Yetimler

1
Katılıyorum ve en iyisi yetkili kaynakları.
MadHatter

2
Sadece işaret, Eylül, Ekim
öncesi
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.