|
Lukain halka açık bir süre önce cron ve crontab hakkında mükemmel eğitim paylaşmaya değer olduğunu düşünüyorum. Cron, Windows'taki Zamanlanmış Görevler ile eşdeğerdir, sadece terminalden idare edilir. Aynı hedefe ulaşmak için görsel bir arayüz tercih edenler bunu görebilir. Başka bir öğe. |
Cron nedir?
Cron adı, "zaman" anlamına gelen Yunanca kronodan gelmektedir. Unix işletim sisteminde cron, süreçleri veya komut dosyalarını düzenli aralıklarla (örneğin, her dakika, gün, hafta veya ay) çalıştıran normal bir arka plan işlem yöneticisidir (arka plan programı). Yürütülmesi gereken işlemler ve yürütülmeleri gereken saatler crontab dosyasında belirtilir.
Cómo funciona
Cron arka plan programı, /etc/rc.d/ o /etc/init.d dağıtıma bağlı olarak. Cron arka planda çalışır, crontab görev tablosunu her dakika kontrol eder / Etc / crontab'ın içinde / var / spool / cron başarılması gereken görevlerin peşinde. Bir kullanıcı olarak, bazı işlemleri otomatikleştirmek için cron'a görevler içeren komutlar veya betikler ekleyebiliriz. Bu, örneğin bir sistemin veya iyi bir yedekleme sisteminin güncellemesini otomatikleştirmek için kullanışlıdır.
Crontab nedir?
Crontab, kullanıcı tarafından belirtilen bir zamanda yürütülecek komutların bir listesini saklayan basit bir metin dosyasıdır. Crontab, komut dosyasının veya komutun çalıştırılması gereken tarih ve saati, yürütme izinlerini kontrol edecek ve arka planda yapacaktır. Her kullanıcının kendi crontab dosyası olabilir, aslında / Etc / crontab'ın normal kullanıcılar (ve hatta root) kendi crontab dosyalarını oluşturmak istediklerinde, kök kullanıcının crontab dosyası olduğu varsayılır, o zaman crontab komutunu kullanacağız.
Crontab, çok kullanıcılı sistemlerde, basit bir sistem kullanıcısı veya kök kullanıcı olarak cron görevlerini yönetmenin en kolay yoludur.
Crontab kullanma
Basit bir örnekle başlıyoruz.
Can sıkıcı "Her zaman güncellemem gerekiyor ve bundan hoşlanmıyorum!"
Öncelikle bir senaryo yapacağız. Bu komut dosyası cron tarafından çağrılacak ve yapmasını istediğimiz tüm talimatları içerecektir, bu nedenle, cron'a dahil etmeden önce birkaç durumda ve birkaç şekilde test etmek gerekir, bunun gibi basit bir güncelleme betiği:
#! / bin / bash #script güncelleme örneği # dağıtımınızı seçin # debian-ubuntu # apt-get update & apt-get -y upgrade #fedora #yum -y update #Arch #pacman --noconfirm -Syu
Dağıtım satırınızdan # öğesini kaldırın. Ubuntu / Debian olması durumunda apt-get ile başlar.
Betiği update.sh olarak kaydederiz (örneğin, evinizin betikleri dizini). Söz konusu betiğin yürütme izinlerini şu şekilde değiştiriyoruz:
chmod a + x ~ / scripts / update.sh
Her şeyin sorunsuz çalıştığını doğrulamak için betiği birkaç kez çalıştırıyoruz, gerekli olanı değiştiriyoruz (hata içermemelidir, aksi takdirde cron yalnızca bir hatayı defalarca tekrarlayacaktır). Şimdi görevi crontab'ımıza eklemek için.
Crontab'e görevler ekleyin
Crontab'ın sürümünü crontab -e ile çalıştırıyoruz, bazı dağıtımlarda (Ubuntu gibi) bize istediğimiz metin düzenleyiciyi seçme seçeneği veriyor, gerisi vi ile kalıyor. Crontab dosyası şuna benzer.
# mh dom mon dow kullanıcı komutu
burada:
- m betiğin çalıştırılacağı dakikaya karşılık gelir, değer 0 ile 59 arasındadır
- h tam zaman, 24 saatlik format işlenir, değerler 0 ile 23 arasındadır ve 0 gece yarısı 12:00 şeklindedir.
- hediye ayın gününü ifade eder, örneğin 15 günde bir çalıştırmak istiyorsanız 15 belirtebilirsiniz
- dow haftanın günü anlamına gelir, sayısal (0 ila 7, burada 0 ve 7 Pazar) veya günün ilk 3 harfi İngilizce olabilir: mon, tue, wed, thu, fri, sat, sun.
- kullanıcı Komutu çalıştıracak kullanıcıyı, komut dosyasını yürütme izinlerine sahip olduğu sürece root veya farklı bir kullanıcı olabilir.
- komuta komutun yürütülecek mutlak yolunu veya komutunu ifade eder, örneğin: /home/usuario/scripts/update.sh, eğer bir komut dosyasını çağırırsa çalıştırılabilir olmalıdır
Açık olmak gerekirse birkaç cron görevi örneği açıklanmıştır:
15 10 * * * user /home/user/scripts/update.sh
Update.sh komut dosyasını her gün 10: 15'te çalıştıracaktır.
15 22 * * * user /home/user/scripts/update.sh
Update.sh komut dosyasını her gün 10: 15'te çalıştıracaktır.
00 10 * * 0 root apt-get -y update Root kullanıcısı
Her Pazar saat 10: 00'da güncelleme yapacak
45 10 * * sun root apt-get -y güncellemesi
Kök kullanıcı her Pazar (Paz) saat 10: 45'te bir güncelleme çalıştıracaktır.
30 7 20 11 * kullanıcı /home/usuario/scripts/updata.sh
20 Kasım saat 7: 30'da kullanıcı komut dosyasını çalıştıracak
30 7 11 11 güneş kullanıcısı /home/usuario/scripts/pastel_con_velitas.sh
11 Kasım sabah 7: 30'da ve bu Pazar günü, kullanıcı sistem yöneticisini (yani beni) kutlayacak
01 * * * * kullanıcı /home/usuario/scripts/molestorecordatorio.sh
Her gün her saatin her dakikası can sıkıcı bir hatırlatma (ÖNERİLMEZ).
Hala ele alınabilir özel aralıklar:
30 17 * * 1,2,3,4,5
Pazartesiden cumaya her gün öğleden sonra 5: 30'da.
00 12 1,15,28 * *
Her ayın ilk, on beşinci ve 12'inde öğlen 28'de (maaş bordrosu için ideal)
Bu kafa karıştırıcıysa, crontab kolları bu aralıkları tanımlamak için özel dizeler.
@reboot Başlangıçta bir kez çalıştır
@yearly yılda yalnızca bir kez çalışır: 0 0 1 1 *
@yearly ile yıllık olarak aynı
@monthly ayda bir çalışır, ilk gün: 0 0 1 * *
@weekly Weekly Haftanın ilk saatinin ilk dakikası. 0 0 * * 0 ″.
@ günlük olarak, 12:00 A.M. 0 0 * * *
@midnight @daily ile aynı
@Her saat her saatin ilk dakikasında: 0 * * * *
Kullanımı çok basittir.
@hourly user /home/user/scripts/molestorecordatorio.sh @monthly user /home/user/scripts/backup.sh @daily root apt-get update && apt-get -y yükseltme
Sonuncu ama bir o kadar önemli:
Cron iş yönetimi
crontab dosyası
Mevcut crontab dosyasını kullanıcı tanımlı bir dosyayla değiştirin
crontab -e
Kullanıcının crontab dosyasını düzenleyin, her yeni satır yeni bir crontab görevi olacaktır.
crontab -l
Kullanıcının tüm crontab görevlerini listeleyin
crontab-d
Kullanıcının crontab dosyasını silin
crontab -c dizini
Kullanıcının crontab dizinini tanımlar (bu, kullanıcının yazma ve yürütme izinlerine sahip olmalıdır)
crontab -u kullanıcısı
başka bir kullanıcının crontab'ını işlemek için önek, örnekler:
$ sudo crontab -l -u root $ sudo crontab -e kullanıcı2 #crontab -d -u kullanıcı
Bu araç, diğerleri gibi, daha derinlemesine ve daha ayrıntılı olarak şu konumlarda görülebilir: