Web sunucum için awstats'ın yenilenmesini otomatikleştirmeye çalışıyorum ve bunu ayarlamak için cron kullanmam gerektiğini anlıyorum. Yani her kullanıcının bir crontab dosyası mı var?
Talimatları takip ediyordum burada community/AWStats
Ve şu adresteki dosyaya gitmemizi söylüyor: /etc/crontab
Bu dosyada zaten bazı bilgiler var. Bu ana crontab
dosyası falan mı? İnternette crontab -e
ile açılan dosyayı kullanmak için bazı talimatlar gördüm.
Kullanılacak uygun dosya ve bunu yapmanın en iyi yolu nedir?
Bir görevi root olmayan kullanıcım olarak planlarsam, belirtilen zaman aralığında sorunsuz bir şekilde kendi kendine çalışır mı?
Cron işini crontab
dosyasına kaydettikten sonra çalışmaya başlaması için sunucuyu yeniden başlatmam gerekecek mi?
**Kullanılacak uygun dosya ve bunu yapmanın en iyi yolu nedir?
"crontab -e" bunu yapmanın en iyi yoludur - bu, kullanıcı başına crontab'ları kolayca düzenlemenize olanak tanır.
**Bir görevi root olmayan kullanıcım olarak planlarsam, belirtilen zaman aralığında kendi kendine sorunsuz bir şekilde çalışır mı?
Evet ve bu kullanıcı hesabının ayrıcalıklarıyla çalışacaktır.
Prensip olarak, zamanlanmış görevleri yapabileceğiniz en düşük ayrıcalıklarla çalıştırmak en iyisidir, bu nedenle yaptığınız şey root gerektirmeyecekse root kullanmayın. Eğer kendi hesabınızdaki dosya ve klasörlere erişmeniz gerekmiyorsa, yeni bir kullanıcı oluşturabilir ve bu kullanıcı hesabını sadece bu görev için kullanabilirsiniz. Öte yandan, eğer göreviniz root gerektiriyorsa, root'un crontab'ını kullanın (root'a su
/ sudo su
ve ardından crontab -e
kullanın).
**Çalışmaya başlamadan önce cron işini crontab dosyasına kaydettikten sonra sunucuyu yeniden başlatmam gerekecek mi?
Hayır, hemen çalışmaya başlayacaktır (yani, bir sonraki olası planlanan zamanda).
**Neden dosyayı doğrudan düzenlemiyoruz? Nerede bulunuyor?
Kullanıcı crontab dosyaları `/var/spool/cron/crontabs' içinde bulunur, ancak izinleri süper kullanıcı izni olmadan geçilemeyecek şekilde ayarlanmıştır (ancak bir kez açıldığında ve cron işlemi ayrıcalıkları düşürdüğünde dosyaya hala erişebilir).
Sistem, son kullanıcıların bu dosyaları doğrudan düzenlemesi için tasarlanmamıştır ve gerçekten de dosyanın üst kısmında bu yönde sert bir BU DOSYAYI DÜZENLEMEYİN
uyarısı bulunmaktadır. Dosya bunun yerine crontab -e
aracılığıyla düzenlenmek üzere tasarlanmıştır, bu da dosyanın /tmp
içinde geçici bir yansımasını düzenlemek için ayarlar - sert uyarı olmadan - daha sonra kalıcı crontab dosyasını kontrol eder ve yükler. Tüm bunlar süper kullanıcı izni olmadan yapılabilir.
Eğer crontab dosyasını doğrudan düzenlediyseniz sonucun ne olacağını bilmiyorum. Muhtemelen bir sonraki yeniden başlatmaya kadar etkili olmayacaktır ve herhangi bir hatayı ayıklamak zor olabilir.
Her kullanıcının kendi crontab
ı vardır.
Görmek için sadece yazın
crontab -l
ve evet doğru gördünüz, bir crontab
eklemek istediğinizde basitçe şunu yapın
crontab -e
ilk kez crontab
ile kullanacağınız editör sorulacaktır. Söylediğiniz gibi acemi olduğunuz için, nano kullanmanızı tavsiye ederim, kullanımı en basit editördür.
Crontab'ın kendisi şu şekilde ç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 15 dakikada bir sadece pazartesi günü bir işi tetiklemek için şu şekilde yaparsınız
*/15 * * * mon /home/me/yourscript.sh
ve EVET, cronjob'unuzu çalıştırmak için yeterli haklara sahip olan kullanıcının crontab'ına koymanız çok önemlidir.
Bu nedenle, betiğinizin root veya özel bir kullanıcı olması gerekiyorsa, bu kullanıcıya su eklediğinizden ve cronjob'u oraya eklediğinizden emin olun.
Ayrıca çok önemli!
cronjob aptal! Evet, söyledim. Her zaman kullandığınız application/command/script
için tam PATH girdiğinizden emin olun, çünkü crontab .bashrc
veya benzeri ile çalışmayacaktır. Her zaman cron'a dosyaları ve dizinleri nerede bulabileceğini söylediğinizden emin olmalısınız.
Geri kalan sorularınızı yanıtlamak için:
Elbette kendi başına çalışacaktır, bunun için vardır. Ancak cronjob'un bunu gerçekten yapıp yapmadığını veya bir şeyleri kaçırıp kaçırmadığı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.
Ve HAYIR, yeniden başlatma gerekli değildir. Linux ile yeniden başlatma normalde yalnızca yeni bir çekirdek yüklerseniz gereklidir. Kullanmak için yeniden başlatmanız gerekir. Linux'ta neredeyse diğer her şey yeniden başlatma olmadan yapılabilir. *Elbette istisnalar vardır, ancak genel olarak bu ifade doğrudur.