Bir Cron işini nasıl kurabilirim?

Düzenli olarak çalışacak bir görev planlamak istiyorum ve Cron'un bunu yapmanın yolu olduğunu duydum.

Ubuntu'da Cron işlerini nasıl ekleyebilirim?

Bu klasörlerden birine bir kabuk betiği yerleştirin: /etc/cron.daily, /etc/cron.hourly, /etc/cron.monthly veya /etc/cron.weekly.

Bunlar sizin için yeterli değilse, örneğin ayda iki kez veya her 5 dakikada bir daha özel görevler ekleyebilirsiniz. Terminale gidin ve şunu yazın::

crontab -e

Bu, kişisel crontab'ınızı (cron yapılandırma dosyası) açacaktır. Dosyadaki ilk satır her şeyi açıklıyor! Her satırda, çalıştırılacak bir komutu ve zamanlamasını tanımlayabilirsiniz ve asıldığınızda biçim oldukça basittir. Yapı şu şekildedir:

minute hour day-of-month month day-of-week command

Tüm numaralar için listeleri kullanabilirsiniz, örn. 5,34,55 dakikalar alanında, hangi saat tanımlanırsa tanımlansın, 5 geçmiş, 34 geçmiş ve 55 geçmişte koşmak anlamına gelecektir.

Aralıkları da kullanabilirsiniz. Bunlar şu şekilde tanımlanır: */20. Bu örnek her 20 anlamına gelir, bu nedenle dakika sütununda aşağıdakilere eşdeğerdir 0,20,40.

Bu yüzden her Pazartesi öğleden sonra 5: 30'da bir komut çalıştırmak için:

30 17 * * 1 /path/to/command

veya her 15 dakikada bir

*/15 * * * * /path/to/command

Haftanın gününün 0-6 arasında olduğunu ve 0'ın Pazar olduğunu unutmayın.

Devamını okuyabilirsiniz burada.

Çalıştırmak istediğiniz iş kullanıcınızla aynı ayrıcalıklarla çalıştırılabiliyorsa, çalıştırarak düzenleyebileceğiniz bir kullanıcı crontab kullanmanızı öneririm EDITOR="gedit" crontab -e (crontab dosyasını düzenlemek için gedit'i kullanacak) veya basitçe crontab -e bir terminalde (varsayılan düzenleyiciyi kullanacak).

Örneğin, her 10 dakikada bir bir şey çalıştırmak istiyorsanız, bunun gibi bir satır eklersiniz

*/10 * * * * /usr/bin/somedirectory/somecommand

ve dosyayı kaydedin.

Crontab kullanıcısının içeriğini aşağıdakilerle görebilirsiniz: crontab -l.

Root olarak çalışan bir cron işi eklemek için root'un crontab'ını çalıştırarak düzenleyebilirsiniz sudo crontab -e.

En esnek yol crontab sistemini kullanmaktır /etc/crontab yalnızca kök ayrıcalıklarıyla düzenleyebileceğiniz. Bu dosyada, kullanıcı her komutun belirtildiği şekilde çalıştırılması gerekir, böylece komutlarınızı root (bu ayrıcalık düzeyine ihtiyacınız olması durumunda) veya sistemdeki başka bir kullanıcı olarak çalıştırabilirsiniz.

Örneğin, her 10 dakikada bir kök olarak bir şey çalıştırmak istiyorsanız, bunun gibi bir satır eklersiniz

*/10 * * * * root /usr/bin/somedirectory/somecommand

(kullanıcının satıra eklenmesine dikkat edin)

System crontab dosyasının içeriğini şu şekilde görebilirsiniz: cat /etc/crontab.

Daha fazla bilgi için: https://help.ubuntu.com/community/CronHowto

Bunu bir GUI kullanarak yapmayı tercih ederseniz, Yazılım Merkezine gidip yükleyebilirsiniz Zamanlanmış görevler (veya koş sudo apt-get install gnome-schedule). Cron görevleri eklemek için güçlü bir GUI sağlayacaktır.

Bu yöntemi kullanırsanız, görevlerin varsayılan olarak root olarak değil kendi kullanıcınız olarak yürütüleceğini unutmayın. Bu genellikle iyi bir şeydir.

Tavsiye ederim Kde'nin Görev Zamanlayıcısı (kde-config-cron) . Şu adresten erişin: Sistem Ayarları in the Görev Zamanlayıcısı modül orada.

Hem kişisel hem de sistem Crontab'larını yönetir ve zaman sınırlarını oluşturma kolaylığı beni çok şaşırttı (aşağıdaki ekran görüntüsüne bakın). Bence bu kısım gerçekten küçümseniyor.

KDE Görev Zamanlayıcısı normal Ubuntu'da çalışmaz. Sadece KUbuntu gibi KDE Sistemlerinde çalışır. KDE olmayan bir sistem için gnome-schedule kullanmayı tercih edersiniz

$ sudo apt-get install gnome-schedule

Uygulama, Gösterge Tablosunda Zamanlanmış görevlerdir.

Bir bash betiği üzerinden çalışacak bir Cron işi ayarlamak istedim, böylece betiği yürütmek bir cron işi ekleyecekti.

Bunu kullandığın zaman fark ettim.:

crontab -e 

Sonra dosyayı oluşturur:

/var/spool/cron/crontabs/root

Burada root, crontab komutunu çalıştıran kullanıcının adıdır. Buna dayanarak ve en azından 14.04'te, yeni bir Cron işi oluşturmak için aşağıdaki bash komutlarını çalıştırabiliriz:

echo "30 17 * * 1 /path/to/command" > /var/spool/cron/crontabs/root

Ayrıca dosya için doğru sahipliği ayarlamamız gerekir:

chown root:root /var/spool/cron/crontabs/root

Ve doğru izinleri ayarlayın:

chmod 600 /var/spool/cron/crontabs/root

Eğer kaçtığında crontab -e listede zaten Cron işleri var, ardından aşağıdaki komutu kullanarak listeye ekleyebilirsiniz:

echo "30 17 * * 1 /path/to/command" >> /var/spool/cron/crontabs/root

Çalışan komut dosyası örneği test_cron.sh sembolik bağlantıyı kullanarak Ubuntu 18.04'te her dakika cron ile:

test_cron.sh dosya:

#!/bin/bashecho "System backuped" >> /media/myname/data/backup/backup_tmp.log

Komut dosyanızda ortam değişkenlerini kullanmak istiyorsanız $USER yollarda kesin yol yazmak daha iyidir, bash değişkenlerinizi yürütme zamanında bilmeyecektir.

myname kullanıcı adı (kök grubunun bir parçası, kök ayrıcalıklarının gerekli olduğundan emin değilim).

Kullanıcıların cron işlerini ayarlamasına izin verin, gerekirse dosya oluşturulur:

sudo nano /etc/cron.allowrootmyname

Komut dosyasının yolu şöyledir /home/myname/shell/test_cron.sh

Sahibini değiştirdim ve çalıştırılabilir hale getirdim:

sudo chown myname /home/myname/shell/test_cron.shchmod +x /home/myname/shell/test_cron.sh

Sembolik bağlantı ekledim:

sudo ln -s /home/myname/shell/test_cron.sh /usr/bin/test_cron

Olarak günlüğe kaydedildi myname Yürütmek için yeni bir görev ekledim test_cron her dakika.

crontab -e*/1 * * * * test_cron

Listedeki komutun olup olmadığını kontrol etmek için:

crontab -l*/1 * * * * test_cron

Yürütmeyi denetlemek için

grep -i cron /var/log/syslogNov 17 12:28:01 myname-ubuntu CRON[13947]: (myname) CMD (system-backup)

Sahip olduğunu düşünürsek birden fazla cron işi belirli bir kullanıcıyla ve aynı zamanlamayı paylaşmazlar. Sadece basit altında dosya oluşturabilirsiniz /etc/cron.d/Diyelim ki dosya adı myjobs ardından, tüm zamanlayıcılarınızı bu dosyaya yazın ve ardından aşağıdaki komutu çalıştırın.

crontab -u <username> /etc/cron.d/myjobs