it-swarm-tr.com

Bir Cron işini nasıl kurarım?

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

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

534
Gabriel Solomon

Bir Shell betiğini şu klasörlerden birine koyun: /etc/cron.daily, /etc/cron.hourly, /etc/cron.monthly veya /etc/cron.weekly.

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

crontab -e

Bu, kişisel crontab'ınızı açacaktır (cron yapılandırma dosyası). Bu dosyadaki ilk satır hepsini açıklıyor! Her satırda, çalıştırılacak bir komut ve zamanlaması tanımlayabilirsiniz ve askıya aldığınızda format oldukça basittir. Yapı:

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

Kullanabileceğiniz tüm numaralar için, örneğin 5,34,55 dakika alanındaki _, saat 5'te tanımlanmış 5 geçmiş, 34 geçmiş ve 55 geçmiş dönemdeki koşu anlamına gelir.

Ayrıca aralıkları kullanabilirsiniz. Bunlar şöyle tanımlanmaktadır: */20. Bu örnek her 20’de bir demektir, bu yüzden dakika sütununda 0,20,40 ile eşdeğerdir.

Her pazartesi öğleden sonra saat 5: 30'da bir emir vermek için:

30 17 * * 1 /path/to/command

veya her 15 dakikada bir

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

Haftanın günü, 0-6'nın Pazar olduğu 0-6 arasındadır.

Daha fazla okuyabilirsiniz burada .

652
LassePoulsen

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

Örneğin, her 10 dakikada bir şeyler çalıştırmak istiyorsanız, buna benzer bir satır eklersiniz.

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

ve dosyayı kaydedin.

Kullanıcı crontab içeriğini crontab -l ile görebilirsiniz.

Kök olarak çalışan bir cron işi eklemek için Sudo crontab -e komutunu çalıştırarak kök crontab'ını düzenleyebilirsiniz.

En esnek yol, yalnızca root haklarıyla düzenleyebileceğiniz crontab /etc/crontab sistemini kullanmaktır. Bu dosyada, kullanıcının her komutu belirtildiği şekilde çalıştırılmalıdır, böylece komutlarınızı root olarak çalıştırabilirsiniz (bu ayrıcalık seviyesine ihtiyacınız varsa) veya sistemdeki diğer herhangi bir kullanıcı.

Örneğin, her 10 dakikada bir root 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 eklendiğine dikkat edin)

Sistem crontab dosyasının içeriğini cat /etc/crontab ile görebilirsiniz.

Daha fazla ayrıntı için: https://help.ubuntu.com/community/CronHowto

101
Li Lo

Bir GUI kullanarak yapmayı tercih ederseniz, Yazılım Merkezine gidip Zamanlanmış görevler (veya Sudo apt-get install gnome-schedule) komutunu çalıştırabilirsiniz. Cron görevleri eklemek için güçlü bir GUI sağlayacaktır.

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

52
Javier Rivera

Tavsiye ederim KDE'nin Görev Zamanlayıcısı (kde-config-cron)Install kde-config-cron . Buradaki Görev Zamanlayıcı modülündeki Sistem Ayarlarından erişin.

Hem kişisel hem de sistemdeki Crontab'ları 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 bölüm gerçekten yetersiz.

enter image description here

26
gertvdijk

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

$ Sudo apt-get install gnome-schedule

App Dash'de Zamanlanmış görevler.

11
Antonio

Bir bash betiği üzerinden çalıştırmak için bir Cron işi ayarlamak istedim, bu yüzden betiği çalıştırmak bir cron işi ekleyecekti.

Bunu ne zaman kullandığınızı fark ettim:

crontab -e 

Sonra dosyayı oluşturur:

/var/spool/cron/crontabs/root

Kök, crontab komutunu çalıştıran çalışan kullanıcının adıdır. Dolayısıyla, buna bağlı olarak 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 de ayarlamamız gerekiyor:

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

Ve doğru izinleri ayarlayın:

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

crontab -e çalıştırdığınızda, listede zaten Cron işleri varsa, aşağıdaki komutu kullanarak listeye ekleyebilirsiniz:

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

Sembolik link kullanarak Ubuntu 18.04 tarihinde her dakika cron tarafından test_cron.sh tarafından çalıştırılan komut dosyası örneği:

test_cron.sh dosya:

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

Kodunuzda ortam değişkenlerini $USER gibi yollarda kullanmak istiyorsanız, kesin yol yazmak daha iyidir, bash, yürütme sırasında değişkenlerinizi bilmeyecektir.

myname kullanıcı adıdır (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 ver, gerekirse dosya oluşturulacak:

Sudo nano /etc/cron.allow

root
myname

Komut dosyasının yolu /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.sh
chmod +x /home/myname/Shell/test_cron.sh

Sembolik bağlantı ekledim:

Sudo ln -s /home/myname/Shell/test_cron.sh /usr/bin/test_cron

myname olarak günlüğe _ _ Her dakika test_cron yürütmek için yeni görev ekledim.

crontab -e

*/1 * * * * test_cron

Komutun listede olup olmadığını kontrol etmek için:

crontab -l

*/1 * * * * test_cron

Yürütmeyi kontrol etmek için

grep -i cron /var/log/syslog

Nov 17 12:28:01 myname-ubuntu CRON[13947]: (myname) CMD (system-backup)
2
Alexander