Cettab /etc/cron.d dosyasındayken asla çalışmaz


32

İşte Debian Jessie’de yaptığım şey:

  • cron'u yükleyin apt-get install cron
  • backup_crontabdosya koymak/etc/cron.d/

Ancak görev hiçbir zaman çalışmıyor.

İşte bazı çıktılar:

/# crontab -l
no crontab for root

/# cd /etc/cron.d && ls
backup_crontab

/etc/cron.d# cat backup_crontab
0,15,30,45 * * * * /backup.sh >/dev/null 2>&1

Belirli bir crontab'ı etkinleştirmek veya cron "hizmetini" kendi içinde etkinleştirmek için yapılacak bir şey var mı?


4
Ya çalışıyorsa ve bir hatayla başarısız oluyorsa, tüm çıktıyı / dev / null'a yönlendirdiğiniz için göremiyorsunuz? :)
tink

tink çıktıyı bir dosyanın sonuna eklemek mümkün mü?
Jivan

2
elbette; 0,15,30,45 * * * * /backup.sh >> / tmp / testing_cron.out 2> & 1
tink

@Jivan, sadece küçük bir not: çıktı açısından ls /etc/cron.deşdeğerdir cd /etc/cron.d && ls. Tek fark, çalışma dizini değişmeyecek olmasıdır.
Drew Chapin

Yanıtlar:


49

/etc/cron.dAyrıca ihtiyacı olan dosyalar , işin altında çalışılacağı kullanıcıyı da listeler .

yani

0,15,30,45 * * * * root /backup.sh >/dev/null 2>&1

Ayrıca izinlerin ve sahibin: grubun doğru ayarlandığından ( -rw-r--r--ve sahip olduğu root:root) emin olmalısınız


16
crontab -liçinde cron girişlerini rapor eder /var/spool/cron/crontabs/- yani kullanıcı başına crontabs. /etc/cron.ddosyalar sistem crontab'larıdır ve rapor edilmez crontab -l.
Stephen Harris,

5
Aslında işe yaramadığını söyledim ama sadece rootdosyaya ekledikten sonra olduğunu fark ettim - crontab -lnedenini açıkladığın gibi söylemedi - yardımın için teşekkürler
Jivan

9
Dosya adının da bir rolü olduğu görülüyor. Benim durumumda etc/cron.dismin ortasındaki bir noktaya sahip bir dosyaya ekledim ve ismini değiştirinceye kadar iş hiç yürütülmedi
pic

20
Burada da aynı sorun, "-" dosya adındaki kısa çizgilerle "-" alt çizgi şeklinde değiştirilerek problem çözüldü, işler hemen gerçekleşti.
Rob,

1
Ayrıca bir çizgi vardı ... ne .... neden ?! Neyse, teşekkürler @Rob
Nikolay Dimitrov

8

Gözlemlediğim bir diğer şey ise içindeki dosyanın /etc/cron.dbir uzantısı olamayacağı. Benim özel durumumda sembolik bir bağım vardı:

# my-job.crontab
* * * * * root echo "my job is running!" >> /tmp/my-job.log

$: ln -sf /home/me/my-job.crontab /etc/cron.d/
# This did not work -> job would not run

$: ln -sf /home/me/my-job.crontab /etc/cron.d/my-job
# This did work -> job ran fine

Dosya adı kısıtlaması çalışma bölümü man sayfasında belgelenmiştir: http://manpages.ubuntu.com/manpages/xenial/man8/run-parts.8.html , dosya biçimini geçersiz kılmak için bir --regex seçeneği iletilebilir.

Varsayılan cron davranışı ancak uzantı olmadan kaldı, aşağıdaki açıklamalara bakın: https://bugs.launchpad.net/ubuntu/+source/debianutils/+bug/38022


Dostum, günümü kurtardın!
elboletaire

2
Bu Ubuntu'da doğrudur (belki tüm Debian kaynaklı dağıtımlarda). Amazon Linux'ta (ve belki de tüm Redhat türetilmiş dağıtımlarında) dosya adında bir noktaya sahip olabilirsiniz. Teşekkürler Unix.SE.
Kanun29,

Sadece saf bir Debian'ı kontrol ettim ve noktalar da işe yaramadı. Kısa çizgiler çalışır (yukarıdaki yorumların söylediğinin aksine).
Yasa29,

4

Muhtemelen cron dosyanızın sonundan itibaren boş bir satırın eksik olduğunu düşünüyorum. Aynı sorunu yaşadım, ancak burada listelenen her şeyi kontrol ettikten sonra (kullanıcı izinleri, dosya adı, cron sürümü vb.), Son girdiğimde satır sonunun gelmediğini /etc/cron.d/own_cronve tüm dosyanın yok sayılmasına neden olduğunu anladım .


2

Bu bilgisayardaki tek kullanıcı sizseniz, sadece kullanmak isteyebilirsiniz crontab -e. Komutu ilk çalıştırdığınızda bir editör seçmeniz istenecektir. Sonra buna bunu ekleyebilirsiniz:

0,15,30,45 * * * * /backup.sh >/dev/null 2>&1

Normal bir kullanıcı hesabına geçerseniz sudo crontab -e, programlanmasını istediğiniz komut dosyalarını yapılandırmak için kullanmanız gerekir root.

crontab -lkullanarak yalnızca bir kez ayarladıktan sonra geçerli crontab’ı görüntüler crontab -e. /etc/cron.d/ İçinde bir cron dosyanız varsa , ile gösterilmez crontab -l.

Ayrıca komut ile çalıştırılabilir olduğunu doğrulamak gerekir: chmod +x /backup.sh.


1
teşekkürler - bu durumda crontab Dockerfilegerçekten yapamadığım bir bağlam içindedir crontab -e- ama yine de yararlı bir bilgidir
Jivan

2

* Bian distros'tan (Raspbian gibi) -lgelen Cron için Cron daemon parametresini etkinleştirmeniz gerekir . Bu, /etc/default/cronconfig dosyasını kullanarak yapmanız tavsiye edilir EXTRA_OPTS.


Bu aşağıya oy kullandı, ancak bazı durumlarda açıklanmadığı halde doğru. Debian-tabanlı dağıtımlarda, -lcron daemon seçeneğinin /etc/cron.ddizinde genişletilmiş bir dosya adı dizisi olmasına izin verilir , bu nedenle dosya içinde bir nokta olduğu için sessizce yoksayılırsa, o zaman "-l" ekleyerek veya "nokta çıkarmadan" sorunu düzeltecek.
Kanun29,

1

Sürümünüzü kontrol edin cron.

Dillon'ın soyunu kullanıyorsanız, bir /etc/cron.dgirişte kullanıcıya ihtiyacınız yok gibi görünüyor .

Kalan saçlarımı çekip çıkardıktan sonra bunu çözdüm.

/etc/cron.dÇeşitli kurulumlar tarafından bırakılan bir avuç girdi var . Bazı araştırmalardan sonra, birinin çalıştığını buldum. Kullanıcı yoktu. Böylece kullanıcıyı diğerlerinden çıkardım. Ve çalışmaya başladılar.

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.