İşleri Zamanlamak İçin Linux Crontab Dosyasını Nasıl Düzenlerim

Giriş

Linux'ta düzenli aralıklarla süreçleri çalıştırmak için kullanılan cron denen bir cini vardır.

Bunu yapmanın yolu, komut dosyalarının çalışması için sisteminizdeki belirli klasörleri kontrol etmektir. Örneğin /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly ve /etc/cron.monthly adında bir klasör var. / Etc / crontab adlı bir dosya da var.

Varsayılan olarak, düzenli aralıklarla çalıştırmalarını sağlamak için komut dosyalarını ilgili klasörlere yerleştirebilirsiniz.

Örneğin bir terminal penceresi açın (CTRL, ALT ve T tuşlarına basarak) ve aşağıdaki ls komutunu çalıştırın:

ls / etc / cron *

Saatlik, günlük, haftalık ve aylık olarak çalışan programların veya komutların listesini göreceksiniz.

Bu klasörlerdeki sorun, biraz belirsiz olmaları. Örneğin günlük, komut dosyasının günde bir kez çalışacağı anlamına gelir, ancak komut dosyasının o gün boyunca çalışacağı zaman üzerinde hiçbir kontrolünüz yoktur.

Crontab dosyasının buraya geldiği yer burası.

Crontab dosyasını düzenleyerek, çalışmasını istediğiniz tarih ve zamanda çalışacak bir komut dosyası veya program alabilirsiniz. Mesela her gece saat 6'da dosyalarınızı yedeklemek istiyorsunuz.

İzinler

Crontab komutu, kullanıcının bir crontab dosyasını düzenlemek için izinlere sahip olmasını gerektirir. Temel olarak crontab izinlerini yönetmek için kullanılan iki dosya vardır:

/etc/cron.allow dosyası varsa, crontab dosyasını düzenlemek isteyen kullanıcı bu dosyada olmalıdır. Cron.allow dosyası yoksa ancak bir /etc/cron.deny dosyası varsa, kullanıcı o dosyada bulunmamalıdır.

Her iki dosya da varsa, /etc/cron.allow /etc/cron.deny dosyasını geçersiz kılar.

Her iki dosya da yoksa, kullanıcının crontab dosyasını düzenleyip düzenleyemeyeceği sistem yapılandırmasına bağlıdır.

Kök kullanıcı her zaman crontab dosyasını düzenleyebilir. Crontab komutunu çalıştırmak için root kullanıcısına veya sudo komutuna geçmek için su komutunu kullanabilirsiniz.

Crontab Dosyasını Düzenleme

İzinleri olan her kullanıcı kendi crontab dosyasını oluşturabilir. Cron komutu, temel olarak çoklu crontab dosyalarının varlığını arar ve hepsinden geçer.

Bir crontab dosyanız olup olmadığını kontrol etmek için aşağıdaki komutu çalıştırın:

crontab -l

Eğer bir crontab dosyanız yoksa "adresiniz için crontab yok" mesajı görünür, aksi takdirde crontab dosyanız görüntülenir (bu işlev sistemden sisteme farklılık gösterir, bazen hiçbir şey göstermez ve diğer zamanlarda görüntülenir) bu dosyayı ") düzenlemeyin.

Bir crontab dosyası oluşturmak veya düzenlemek için aşağıdaki komutu çalıştırın:

crontab -e

Varsayılan olarak, varsayılan düzenleyici yoksa, kullanılacak bir varsayılan düzenleyici seçmeniz istenir. Ben şahsen nano'yu kullanmak oldukça doğru olduğu için kullanmaktan ve terminalden koşmaktan hoşlanıyorum.

Açılan dosyanın çok fazla bilgi vardır, ancak anahtar bölüm, yorumlar bölümünün sonundan hemen önceki örnektir (yorumlar, # ile başlayan satırlarla gösterilir).

# mh dom mon dow komutu

0 5 * * 1 tar -zcf /var/backups/home.tgz / home /

Crontab dosyasının her satırına sığacak 6 bilgi vardır:

Her öğe için (komut hariç) joker karakteri belirtebilirsiniz. Aşağıdaki örnek crontab çizgisine bakın:

30 18 * * * tar -zcf /var/backups/home.tgz / home /

Yukarıdaki komutun söylediği, 30 dakika, 18 saat ve haftanın herhangi bir günü, ayı ve haftası, / var / backups klasörüne ev dizini sıkıştırmak ve sıkıştırmak için bir komut çalıştırır.

Her saatte 30 dakika çalışacak bir komut almak için aşağıdaki komutu çalıştırabilirim:

30 * * * * komut

Her dakika 6'dan sonra çalışacak bir komut almak için aşağıdaki komutu çalıştırabilirim:

* 18 * * * komut

Bu nedenle, crontab komutlarınızı ayarlama konusunda dikkatli olmalısınız.

Örneğin:

* * * 1 * komutu

Yukarıdaki komut, Ocak ayında her hafta her günün her saatinde bir dakika çalışacaktır. İstediğin şeyden şüpheliyim.

1 Ocak'ta sabah saat 5'de bir komut çalıştırmak için crontab dosyasına aşağıdaki komutta yer verecektiniz:

0 5 1 1 * komut

Bir Crontab Dosyası Nasıl Kaldırılır

Çoğu zaman crontab dosyasını kaldırmak istemeyeceksiniz, ancak crontab dosyasından bazı satırları kaldırmak isteyebilirsiniz.

Ancak, kullanıcının crontab dosyasını kaldırmak istiyorsanız aşağıdaki komutu çalıştırın:

crontab -r

Bunu yapmanın daha güvenli bir yolu, aşağıdaki komutu çalıştırmaktır:

crontab -i

Bu soruyu sorar "emin misin?" crontab dosyasını çıkarmadan önce.