Bir crontab dosyasını düzenlemenin doğru yolu nedir?


52

Web sunucum için awstats'ın yenilenmesini otomatikleştirmeye çalışıyorum ve bunu ayarlamak için cron kullanmam gerektiğini anladım. Yani her kullanıcı bir crontab dosyasına sahip mi?

Buradaki talimatları takip ediyordum topluluk / AWStats

Ve dosyaya gitmek diyor: /etc/crontab

Bu dosyada zaten bazı bilgiler var. Bu ana crontabdosya mı yoksa bir şey mi? Açılan dosyayı kullanmak için çevrimiçi bazı talimatlar gördüm crontab -e.

Kullanmak için uygun dosya ve bunun için en iyi yol nedir?

Kök olmayan kullanıcım olarak bir görev zamanlarsam, belirtilen zaman aralığında, hiçbir sorun olmadan kendi kendine çalışır mı?

crontabÇalışmaya başlamadan önce cron işini dosyaya kaydettikten sonra sunucuyu yeniden başlatmam gerekir mi?

Yanıtlar:


50

Kullanmak için uygun dosya ve bunun için en iyi yol nedir?

crontab -e Bunu yapmanın en iyi yolu - bu kullanıcı başına crontab'ların kolayca düzenlenebilmesini sağlar.

Kök olmayan kullanıcım olarak bir görev zamanlarsam, belirtilen zaman aralığında, hiçbir sorun olmadan kendi kendine çalışır mı?

Evet ve bu kullanıcı hesabının yetkileriyle çalışır.

Prensip olarak, elinden gelenin en düşük ayrıcalıklarına sahip zamanlanmış görevleri çalıştırmak en iyisidir, bu nedenle yaptığınız şey root gerektirmiyorsa, root kullanmayın. Hatta erişmek mümkün gerek yoksa senin hesabın dosya ve klasörleri, o zaman yeni bir kullanıcı oluşturmak ve bu kullanıcı hesabı kullanabilirsiniz sadece o görev için. Senin görevin Öte yandan yapar kök gerektirir, kullanım root crontab ( su/ sudo sudaha sonra kökünü kullanmak crontab -e).

Çalışmaya başlamadan önce cron işini crontab dosyasına kaydettikten sonra sunucuyu yeniden başlatmam gerekir mi?

Hayır, derhal çalışmaya başlayacaktır (bir sonraki olası programlanan zaman).

Neden dosyayı doğrudan düzenlemiyorsunuz? Nerede bulunuyor?

Kullanıcı crontab dosyaları bulunur /var/spool/cron/crontabs, ancak izinleri süper kullanıcı izni olmadan geçilemeyecek şekilde ayarlanır (ancak bir kez açıldığında ve cron işlemi ayrıcalıkları dosyaya erişebilir).

Sistem, son kullanıcıların doğrudan bu dosyaları düzenlemeleri için tasarlanmamıştır ve aslında dosyanın DO NOT EDIT THIS FILEüstünde, bu etkinin başında sert bir uyarı vardır . Dosya bunun yerine , geçici bir crontab dosyasının kendisini kontrol edip yükleyen - sert bir uyarı olmadan - crontab -edosyanın geçici bir yansımasını ayarlayarak düzenlenmesi için tasarlanmıştır /tmp. Bunların hepsi süper kullanıcı izni olmadan yapılabilir.

Doğrudan crontab dosyasını düzenlediyseniz sonucun ne olacağını bilmiyorum. Muhtemelen bir sonraki yeniden başlatmaya kadar etkili olmayacak ve herhangi bir hatanın hata ayıklaması zor olabilir.


5
crontab -esudo olmadan kullanıcı crontab'ınızı düzenlemenizi sağlar. Kullanıcı crontab'ları, /var/spool/cron/crontabssüper kullanıcı izni olmadan erişilemeyen bir dizindir (ancak cron ayrıcalıkları bıraktıktan sonra onu hala okuyabilir). Doğrudan dosyayı denemek ve düzenlemek için sudo kullanıyor olsanız bile, üstünde "BU DOSU DÜZENLEME ETMEYİN" başlıklı büyük bir uyarı görüyorsunuz - dosya crontabgeçici bir kopya kullanan /tmpve ardından yükleyen komut kullanılarak düzenlenecek şekilde tasarlanmıştır kurtardıktan sonra.
thomasrutter

25

Her kullanıcının kendine ait vardır crontab.

Görmek için sadece yazın

crontab -l

ve evet, doğru gördünüz, eklemek istediğinizde crontabbasitçe yapın

crontab -e

ilk defa, kullanacağınız editör hakkında sorular sorulacak crontab. Söylediğiniz gibi bir acemi olduğunuz için nano kullanmanızı öneririm, kullanımı en basit editördür.

Crontab'ın kendisi böyle çalışır

MIN =  Minute 0-60
HOUR = Hour [24-hour clock] 0-23
MDAY = Day of Month 1-31
MON = Month 1-12 OR jan,feb,mar,apr ...
DOW =  Day of Week 0-6 OR sun,mon,tue,wed,thu,fri,sat
COMMAND = Command to be run Any valid command-line

Örneğin, her pazartesi sadece 15 dakikada bir işi tetiklemek için, öyle yaparsınız

*/15 * * * mon /home/me/yourscript.sh

ve EVET, cronjob'ınızı, yürütmek için yeterli haklara sahip olan kullanıcının crontabına yerleştirmeniz çok önemlidir.

Bu nedenle, komut dosyanızın kök veya özel bir kullanıcı olması gerekiyorsa, söz konusu kullanıcıya su verdiğinizden ve buradaki cronjob'ı eklediğinizden emin olun.

Ayrıca çok önemli!

cronjob aptal! Evet dedim. Her zaman application/command/scriptkullanmakta olduğunuz PATH'in tamamını girdiğinizden emin olun , çünkü crontab çalışmaz .bashrcveya benzeri olmaz. Her zaman cron'a dosyaları ve dizinleri nerede bulabileceğini söylediğinizden emin olmalısınız.

Diğer sorularınızı cevaplamak için:

Elbette kendi başına koşacak, bunun için orada. Ancak cronjob'ın gerçekten yaptığını veya bir şey eksik olup olmadığını kontrol etmeniz gerekir. Örneğin gerçekten çalışıp çalışmadığını görmek için bir günlük dosyasına giriş yapın.

HAYIR, yeniden başlatma gerekli değildir. Linux ile yeniden başlatma normalde yalnızca yeni bir çekirdek yüklerseniz gereklidir. Bunu kullanmak için yeniden başlatmanız gerekir. Hemen hemen her şey Linux'ta yeniden başlatmadan yapılabilir. Elbette istisnalar da var, ancak genel olarak bu ifade doğru.


zaman biçimini kontrol etmek için bu siteyi inceleyin crontab.guru
Astm
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.