Crontab Kılavuzu – Linux'ta Görevleri Zamanlama

İster günlük, ister haftalık, ister aylık olarak aynı işleri tekrar tekrar yapmak, bir kenara bıraktığımız karmaşıklığına göre zamanla yoran, yozlaşan bir iştir. Bu sorunun çözümü, mümkün olduğunca otomatik hale getirmektir. aynen Windows belirli görevleri otomatikleştirmemize izin verir, Linux ayrıca bize bu seçeneği Crontab aracılığıyla sunar, ancak yalnızca bu seçeneği sunmaz.

İster yedek kopya oluşturmak, ister raporlar oluşturmak, yapılandırmayı değiştirmek veya başka herhangi bir şey için Linux'un çalışmasını otomatikleştirmek istiyorsak, çözüm Crontab'ı Cron ile birlikte kullanmaktır, çünkü Windows'tan farklı olarak iki taneye ihtiyacımız var. uygulamalar minimum.

Crontab Kılavuzu

Crontab nedir?

Crontab, otomasyonların bir dizi parametreye dayalı olarak oluşturulduğu bir metin dosyasıdır. Cron tarafından okundu . Her iki uygulama da en yaygın Linux dağıtımlarının çoğunda yerel olarak mevcuttur, bu nedenle bunları kullanabilmek için bilgisayarımıza herhangi bir depo kurmamız gerekmez.

Crontab bize, her satırda bir tane olmak üzere, tam olarak istediğimiz zamanı özelleştirmemize izin veren bir dizi komut dosyası sunar. bir veya daha fazla görevi gerçekleştirmek için ve zaman içinde tekrarları. Aslında, adı Yunanca kelimeden türemiştir. Cronos , bu da zaman demektir. Her komut dosyası, yürütülmesi gereken kesin tarih hakkında bilgi içerir, bu tarih bir dizi sayı ile gösterilir. Örnek için bir düğme. Aşağıdaki komut dosyası, her Pazar sabah 5:30'da nfsfind'i çalıştıracaktır.

30 5 * * 0 /usr/lib/fs/nfs/nfsfind

İlk iki rakam komutun çalışacağı saati, ilk rakam dakikayı, ikincisi ise saati temsil eder. Crontab'ın kullandığı zaman formatı 24 saattir, yani görevi öğleden sonra 5'te gerçekleştirmek istiyorsak bu 17 rakamı olur. Yıldız işaretleri tüm değerleri temsil ederken 0 rakamı Pazar günlerine karşılık gelir.

Cron'u Crontab ile karıştırmayın

Crontab, sistemimizin işlemlerini gerçekleştirmemize izin verirken otomasyonlar , bunlar, münhasıran olmasa da, arka planda çalışan ve Crontab'ta daha önce yapılandırdığımız tüm görevleri gerçekleştiren bir uygulama olan Cron uygulamasıyla yürütülür. Bu uygulama, bunları gerçekleştirmek için sistem zamanımızı kullanır, bu nedenle, sanal bir makine kullanırsak, hem konuk makinenin hem de bilgisayarımızın zamanının her zaman aynı olması önemlidir, aksi takdirde programlanan zaman olmayacaktır. doğru.

Cron, Crontab dosyasının içeriğini her dakika okur, böylece aynı oturumda gerçekleştirmek istediğimiz görevleri gerçekleştirmek için istediğimiz zaman düzenleyebiliriz, çalıştırılacak yeni komut dosyaları bulmak için uygulamayı içeriğini tekrar okumaya zorlamak zorunda kalmadan.

Tüm kullanıcılar, sistem görevlerini otomatikleştirmek için Crontab dosyaları oluşturma yeteneğine sahip değildir. Sistem yöneticisi, sahip olduğumuz Linux dağıtımının sürümüne bağlı olarak, sırasıyla /etc/cron.do /etc/ içinde bulunan cron.allow veya cron.den dosyası aracılığıyla bu seçeneğe izin verme veya vermeme olanağına sahiptir. bilgisayarımıza yüklendi.

Linux'ta görevler nasıl otomatikleştirilir

Yukarıda da belirttiğimiz gibi, Crontab betikleri, yürütülmesini istediğimiz tarih ve ardından komut ile başlar. Crontab sözdizimi aşağıdaki gibidir.

Program Yönetimi

minuto hora día-del-mes mes día-de-la-semana ruta-comandos

  • Dakika, bu 0 ile 59 arasında olabilir
  • Zaman, daha önce de belirttiğimiz gibi, Crontab 24 saatlik zaman kullanır, bu nedenle sayı aralığı 0 ile 23 arasındadır.
  • Ayın günü, 1'den 31'e gittiği için bu parametrede pek bir gizem yok.
  • Ay, 1'den 12'ye
    • Ocak 1
    • Şubat 2
    • Mart 3
    • Nisan 4
    • Mayıs 5
    • Haziran 6
    • Temmuz 7
    • Ağustos 8
    • Eylül 9
    • Ekim 10
    • Kasım 11
    • Aralık 12.
  • Haftanın günü, 0'dan 6'ya, Pazar 0 sayısıdır, ancak Crontab'ın bazı sürümleri 7 sayısının kullanılmasına da izin verir. Bu şekilde, haftanın günleri için kod
    • 0 pazar
    • 1 pazartesi
    • 2 salı
    • 3 çarşamba
    • 4 perşembe
    • 5 cuma
    • 6 Cumartesi

Ancak, ek olarak, bir değişkenin tüm olası değerlerini belirtmek için yıldız işaretini (*) de kullanabiliriz. Birkaç değer oluşturmak istiyorsak, bunu virgül (,) veya bunları tire (-) ile ayıran bir dizi değer aracılığıyla yapabiliriz. “/” ile farklı adımlar da belirleyebiliriz.

Hala çok net değilse, periyodikliklerine bağlı olarak görevleri periyodik olarak gerçekleştirmek için kullanabileceğimiz zaman kodlarını size gösteriyoruz.

  • 0 * * * * Zaman kodu kullanılarak, komut dosyası her saat başı çalıştırılacaktır.
  • 0 0 * * * Her gün komut dosyası yalnızca bir kez çalıştırılacaktır.
  • 0 0 * * 0 Komut dosyası haftada bir çalışır
  • 0 0 1 * * Ayda bir yapılacaktır
  • 0 0 1 1 * Komut dosyası yılda bir kez çalıştırılacaktır.

Crontab'ta görev çizelgelemenin nasıl çalıştığını netleştirdikten sonra, yapacağımız ilk şey, aşağıdaki komutu kullanarak otomatikleştirmek istediğimiz tüm işlemleri oluşturacağımız dosyayı oluşturmaktır.

crontab nombre-archivo

Yeni bir tane oluşturmak istemiyorsak veya zaten oluşturduk ve düzenlemek istiyorsak bu komutu kullanırız.

crontab -e

Oluşturulan Crontab dosyasını silmek istiyorsak

crontab -d

Aşağıdaki komut ile Crontab dosyasında yer alan tüm görevleri listeleyebiliriz.

crontab -d

Sistem yöneticileri cron.allow veya cron.den dosyalarını, konumlarını daha önce değiştirmemişsek /etc/cron.d/ veya /etc/ içinde bulunan dosyaları düzenleyerek sistem otomasyonlarının kullanımını sınırlayabilir.

görevleri otomatikleştir

Oluşturduğumuz Crontab dosyasını düzenlemek için tüm Linux dağıtımlarında bulunan metin editörünü kullanacağız, ancak -e değişkenini ekleyerek doğrudan Crontab'tan da düzenleyebiliriz.

nano nombrearchivo

Yıldızların eşlik ettiği sayısal kodu ve yürütmek istediğimiz betiği tanıtıyoruz. Daha sonra, Cron'a onu çalıştırması için izinler vermemiz gerekiyor, aksi halde varlığından haberi olmayacak ve onu asla çalıştıramayacak. Bunun için şu komutu kullanacağız

chmod ugo+x nombrearchivo

Başlangıçta, görevleri otomatikleştirmek için Crontab'ı kullanmak hiç de kolay görünmüyor ve Linux'un (neredeyse yaygın olan) pratik olarak her şey için komut satırına başvurma ihtiyacını hatırlatıyor, böylece daha fazla kullanıcının bir günde Linux'u bir işletim sistemi olarak benimsemesini sınırlıyor. bugün bazında. .

Windows görev zamanlayıcı, gerekli bilgi olmadan kullanımı pek kolay olmayan bir grafik arabirim kullanır, ancak Linux tarafından komut satırı aracılığıyla sunulandan çok daha sezgiseldir.

Crontab ve Cron çalışma örneği

Linux'ta görevleri otomatikleştirmek için yapmamız gereken ilk şey, yapılandırdığımız anda bilgisayarda yürütülmesini istediğimiz tüm komutları dahil edeceğimiz dosyayı oluşturmaktır. Bu örnekte, tmp dizininde bulunan tüm dosyaları ve boş klasörleri silmekten sorumlu olacak “test” dosyasını oluşturacağız. Bunun için aşağıdaki komutu gireceğiz.

crontab prueba

Ardından, komutu (veya bunları tırnak işaretleri olmadan noktalı virgül “;” ile ayıran komutları) girmeliyiz. Bu örnekte, tmp klasöründeki dosyaları silmek için Crontab kullanacağız.

find /tmp -type f -empty -delete

Ardından, zamanlamayı, yani dosyaya girdiğimiz görevlerin yürütülmesini istediğimiz zamanı eklemek için dosyayı düzenleriz.

crontab -e

Her gün sabah 10'da çalıştırılabilmesi için betiğin önüne 0 10 * * * eklemeli ve satırı aşağıdaki gibi bırakmalıyız.

0 10 * * * find /tmp -type f -empty -delete

Başka bir zamanda yürütülmesini istiyorsak, yürütülmesini istediğimiz saat için (10 saat biçiminde) 24 sayısını değiştirmemiz yeterlidir. Şunu da kullanabiliriz: zaman kodları yapılandırmak için Programlama yönetimi bölümünde gösterdiğimiz. Son olarak Cron'un oluşturduğumuz otomasyon dosyasını çalıştırabilmesi için aşağıdaki komutu kullanıyoruz.

[code]chmod ugo+x prueba

Cron'a alternatifler

Önceki bölümlerde de belirttiğimiz gibi, Crontab'da daha önce girdiğimiz komutları yürütmekle görevli olan Cron'dur. Cron, günde 24 saat çalışan ekipler için mükemmel bir araçtır, ancak görevler yapılırken ekipten kaynak alsa bile onu çalışma programımıza uyarlayabiliriz. Cron için daha basit seçenekler arıyorsak, size en iyi alternatiflerden bazılarını gösteriyoruz.

anakron

Anacron, herhangi bir zamanda bir gün, hafta veya ay içinde görevlerin otomatik olarak yürütülmesini planlamamıza izin verir. Bilgisayar kapalıysa, bilgisayarı bir sonraki başlatmamızda daha önce Crontab'a girdiğimiz görev gerçekleştirilecektir. Cron ile belirtilen tarihte bilgisayar kapatılırsa, bilgisayarı açtığımızda görev gerçekleşmeyecektir. Anacron çoğu Linux dağıtımında mevcuttur ve aşağıdaki komutla bilgisayara kurabiliriz.

sudo apt install anacron

Cronie

Cronie bize Cron'dan çok daha eksiksiz bir deneyim ve aralarında Anacron'un da bulunduğu küçük bir dizi uygulama sunuyor ve Crontab aracılığıyla iş akışlarını çok hızlı ve kolay bir şekilde programlayabiliyoruz. Anacron'dan farklı olarak, Cronie'yi kurmak için Linux depolarında mevcut değildir, bu yüzden web sayfasını ziyaret etmeliyiz. GitHub indirmek için veya aşağıdaki komutu kullanın.

wget https://github.com/cronie-crond/cronie/releases/download/cronie-1.6.1/cronie-1.6.1.tar.gz