Терминал Linux #7.1 - crontab: запуск задач по расписанию
İçindekiler:
- Crontab Dosyası Nedir?
- Crontab Sözdizimi ve İşleçleri
- Sistem Çapında Crontab Dosyaları
- Önceden Tanımlı Makrolar
- Linux Crontab Komutu
- Crontab Değişkenleri
- Crontab Kısıtlamaları
- Cron İşleri Örnekleri
- Sonuç
Cron, görevleri belirli aralıklarla yürüten bir planlama arka plan programıdır. Bu görevlere cron işleri denir ve çoğunlukla sistem bakımını veya yönetimini otomatikleştirmek için kullanılır.
Örneğin, veritabanlarını veya verileri yedekleme, sistemi en son güvenlik düzeltme ekleriyle güncelleştirme, disk alanı kullanımını denetleme, e-posta gönderme vb. Gibi tekrarlanan görevleri otomatikleştirmek için bir cron işi ayarlayabilirsiniz. Drupal veya Magento gibi bazı uygulamalar, belirli görevleri yerine getirmek için cron işleri gerektirir.
Cron işleri bir dakika, saat, ayın günü, ay, haftanın günü veya bunların herhangi bir kombinasyonu ile çalışacak şekilde programlanabilir.
Crontab Dosyası Nedir?
Crontab (cron tablosu), cron işlerinin zamanlamasını belirten bir metin dosyasıdır. İki tür crontab dosyası vardır. Sistem genelindeki crontab dosyaları ve bireysel kullanıcı crontab dosyaları.
Kullanıcılar crontab dosyaları kullanıcının adına göre depolanır ve konumları işletim sistemlerine göre değişir. CentOS gibi Red Hat tabanlı sistemde crontab dosyaları
/var/spool/cron
dizininde, Debian ve Ubuntu dosyaları
/var/spool/cron/crontabs
dizininde depolanır.
Kullanıcı crontab dosyalarını manuel olarak düzenleyebilmenize rağmen,
crontab
komutunun kullanılması önerilir.
/etc/crontab
ve
/etc/cron.d
dizinindeki dosyalar, yalnızca sistem yöneticileri tarafından düzenlenebilen sistem çapında crontab dosyalarıdır.
Çoğu Linux dağıtımında, komut dosyalarını
/etc/cron.{hourly, daily, weekly, monthly}
dizinlerinin içine de koyabilirsiniz ve komut dosyaları her
hour/day/week/month
yürütülür.
Crontab Sözdizimi ve İşleçleri
Kullanıcı crontab dosyasındaki her satır, bir boşlukla ve ardından çalıştırılacak komutla ayrılmış altı alan içerir.
* * * * * command(s) - - - - - | | | | | | | | | ----- Day of week (0 - 7) (Sunday=0 or 7) | | | ------- Month (1 - 12) | | --------- Day of month (1 - 31) | ----------- Hour (0 - 23) ------------- Minute (0 - 59)
İlk beş alan, virgülle ayrılmış bir veya daha fazla değer veya tire ile ayrılmış bir değer aralığı içerebilir.
-
*
- Yıldız operatörü herhangi bir değer anlamına gelir veya her zaman demektir. Saat alanında yıldız sembolü varsa, bu görev her saat başı gerçekleştirilecek demektir.,
- Virgül işleci, tekrarlama için bir değer listesi belirlemenizi sağlar. Örneğin, Saat alanında1, 3, 5
varsa, görev 01:00,1, 3, 5
ve1, 3, 5
arasında çalışır.-
- Kısa çizgi operatörü bir dizi değer belirlemenizi sağlar. Haftanın Günü alanında1-5
varsa, görev hafta içi her gün (Pazartesi'den Cuma'ya) çalışır./
- Eğik çizgi işleci, aralarındaki belirli bir aralıkta yinelenecek değerleri belirlemenizi sağlar. Örneğin, Saat alanında*/4
varsa, bu eylemin dört saatte bir gerçekleştirileceği anlamına gelir.0, 4, 8, 12, 16, 20
belirtmekle0, 4, 8, 12, 16, 20
. Eğik çizgi1, 11, 21
önceki yıldız işareti yerine, bir dizi değer de kullanabilirsiniz;1-30/10
,1, 11, 21
aynı anlamına gelir.
Sistem Çapında Crontab Dosyaları
Sistem genelindeki crontab dosyalarının sözdizimi, kullanıcı crontab'larından biraz farklıdır. Hangi kullanıcının cron işini çalıştıracağını belirten ek bir zorunlu kullanıcı alanı içerir.
Ortak aralıkları belirtmek için kullanılan birkaç özel Cron zamanlama makrosu vardır. Bu kısayolları beş sütunlu tarih belirtimi yerine kullanabilirsiniz. Crontab komutu, düzenleme için bir crontab dosyası kurmanıza veya açmanıza olanak tanır. Aşağıdaki seçenekleri kullanarak cron işlerini görüntülemek, eklemek, kaldırmak veya değiştirmek için crontab komutunu kullanabilirsiniz: Crontab komutu,
Cron arka plan programı otomatik olarak birkaç ortam değişkeni ayarlar. Sistem yöneticileri
Varsayılan olarak yalnızca
Her iki dosya da mevcut değilse, yalnızca yönetici ayrıcalıklarına sahip kullanıcılar
Aşağıda, bir görevin farklı zaman aralıklarında çalışacak şekilde nasıl zamanlanacağını gösteren bazı cron işi örnekleri verilmiştir. Pazartesiden cumaya her gün saat 15: 00'de bir komut çalıştırın: Her 5 dakikada bir komut dosyası çalıştırın ve standart çıktıyı
Her Pazartesi 15.00'de iki komut çalıştırın (komutlar arasında
Her 2 dakikada bir PHP betiği çalıştırın ve çıktıyı bir dosyaya yazın: Her gün, her saat, saat, sabah 8'den akşam 4'e kadar bir komut dosyası çalıştırın: Her ayın ilk Pazartesi günü, sabah 7'de bir komut dosyası çalıştırın Bir senaryoyu her ayın 1. ve 15. günlerinde, saat 9: 15'te çalıştırın: Özel
Cron işleri oluşturmayı ve görevleri belirli bir tarih ve saatte nasıl zamanlayacağınızı öğrendiniz. Herhangi bir sorunuz varsa yorum bırakmaktan çekinmeyin.
* * * * * command(s)
* * * * * command(s)
Önceden Tanımlı Makrolar
@yearly
(veya
@annually
) - Belirtilen görevi yılda bir kez 1 Ocak gece yarısı (12:00) gerçekleştirin.
0 0 1 1 *
eşdeğerdir.
@monthly
- Belirtilen görevi ayda bir kez, ayın ilk günü gece yarısında çalıştırın.
0 0 1 * *
eşdeğerdir.
@weekly
- Belirtilen görevi Pazar günü gece yarısı haftada bir kez çalıştırın.
0 0 * * 0
eşdeğerdir.
@daily
- Belirtilen görevi gece yarısı günde bir kez çalıştırın.
0 0 * * *
eşdeğerdir.
@hourly
- Belirtilen görevi saatin başında saatte bir kez çalıştırın.
0 * * * *
eşdeğerdir.
@reboot
- Belirtilen görevi sistem başlangıcında (önyükleme zamanı) çalıştırın.Linux Crontab Komutu
crontab -e
- crontab dosyasını düzenler veya henüz yoksa oluşturun.
crontab -l
- crontab dosya içeriğini görüntüler.
crontab -r
- Geçerli crontab dosyanızı kaldırır.
crontab -i
- Kaldırmadan önce mevcut crontab dosyanızı bir istemle kaldırın.
crontab -u
VISUAL
veya
EDITOR
ortam değişkenleri tarafından belirtilen düzenleyiciyi kullanarak crontab dosyasını açar.Crontab Değişkenleri
PATH=/usr/bin:/bin
olarak ayarlanmıştır. Aradığınız komut, cron tarafından belirtilen yolda varsa, komutun mutlak yolunu kullanabilir veya cron
$PATH
değişkenini değiştirebilirsiniz. Örtük olarak ekleyemezsiniz
:$PATH
normal bir komut dosyasında yaptığınız gibi Varsayılan kabuk
/bin/sh
olarak ayarlanmıştır.
SHELL
değişkenini değiştirerek farklı bir kabuk ayarlayabilirsiniz.Cron komutu kullanıcının ana dizininden çağırır.
HOME
değişkeni crontab'daki ayarlar tarafından geçersiz kılınabilir. E-posta bildirimi crontab sahibine gönderilir. Varsayılan davranışın üzerine yazmak için,
MAILTO
ortam değişkenini, e-posta bildirimlerini almak istediğiniz tüm e-posta adreslerinin bir listesiyle (virgülle ayrılmış) kullanabilirsiniz.
MAILTO
tanımlanmış ancak boşsa (
MAILTO=""
) posta gönderilmez.Crontab Kısıtlamaları
/etc/cron.deny
ve
/etc/cron.allow
dosyalarını kullanarak
crontab
komutuna hangi kullanıcıların erişebileceğini
/etc/cron.allow
. Dosyalar, kullanıcı adı listesinden oluşur, her satırda bir kullanıcı adı bulunur.
/etc/cron.deny
dosyası vardır ve boştur, yani tüm kullanıcılar crontab komutunu kullanabilir. Belirli bir kullanıcıya crontab komutlarına erişimi reddetmek istiyorsanız, kullanıcı adını bu dosyaya ekleyin.
/etc/cron.allow
dosyası varsa, yalnızca bu dosyada listelenen kullanıcılar
crontab
komutunu kullanabilir.
crontab
komutunu kullanabilir.Cron İşleri Örnekleri
0 15 * * 1-5 command
dev null
yeniden yönlendirin, belirtilen standart e-posta adresine yalnızca standart hata gönderilir:
[email protected] */5 * * * * /path/to/script.sh > /dev/null
&&
operatörünü kullanın):
0 15 * * Mon command1 && command2
*/2 * * * * /usr/bin/php /path/to/script.php >> /var/log/script.log
00 08-16 * * * /path/to/script.sh
0 7 1-7 * 1 /path/to/script.sh
15 9 1, 15 * * /path/to/script.sh
HOME
,
PATH
,
SHELL
ve
MAILTO
değişkenlerini ayarlayın ve her dakika bir komut çalıştırın.
HOME=/opt PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin SHELL=/usr/bin/zsh [email protected] */1 * * * * command
Sonuç
Intel Yeni Xeon Sunucu Yongaları İle Zamanlama Öncesi
Intel, gelecek nesil Xeon dört çekirdekli sunucu yongalarını sistem üreticilerine göndererek başlayabilir. 2010'un ilk çeyreği.
IBM, Üst Yönetim İşlerini Birleştiriyor
IBM CEO'su Samuel J. Palmisano, daha az sayıda yöneticinin elinde, her iki yazılımdan da bir kişi görevlendirmek de dahil olmak üzere, yoğun bir güce sahip. donanım ürünleri
İNceleme: CopyTrans TuneSwift, iTunes işlerini otomatik hale getiriyor
CopyTrans TuneSwift, yedeklemenizi, aktarmanızı veya geri yüklemenizi kolay (zaman alıcı) bir yol sunuyor. iTunes kütüphanesi. 15 $ 'da olsa da, bu program tam olarak ucuz değil.