Crontab'ın iyi bir seçim olduğunu duydum, ama satırı nasıl yazarım ve sunucuya nereye koyabilirim?
Crontab'ın iyi bir seçim olduğunu duydum, ama satırı nasıl yazarım ve sunucuya nereye koyabilirim?
Yanıtlar:
İşte crontab'ın ne olduğu ve Ubuntu'da nasıl kullanılacağı hakkında iyi bir öğretici . Crontab satırınız şöyle görünecektir:
00 00 * * * ruby path/to/your/script.rb
( 00 00
gece yarısı - 0 dakika ve 0 saat - ve *
s her ayın her günü anlamına gelir.)
Sözdizimi: mm ss dd mt wd komutu mm dakika 0-59 ss saati 0-23 1-31 ayın dd günü mt ay 1-12 0-7. haftanın wd günü (Pazar = 0 veya 7) komut: ne çalıştırmak istiyorsun tüm sayısal değerler * ile değiştirilebilir.
/etc/crontab
(Ubuntu'da) kullanıcı sütununa (komuttan önce gelir) izin verilir , ancak çalıştırdığınızda crontab -e
bu sütuna izin vermeyen kullanıcıya özgü bir crontab düzenlersiniz. IIRC Ubuntu /etc/crontab
, üzerine yazılabileceğinden manuel olarak çıkmayı önler . Buraya bakın: stackoverflow.com/questions/8475694/…
sudo crotab -u root -e
adam sayfasından
linux$ man -S 5 crontab
cron(8) examines cron entries once every minute.
The time and date fields are:
field allowed values
----- --------------
minute 0-59
hour 0-23
day of month 1-31
month 1-12 (or names, see below)
day of week 0-7 (0 or 7 is Sun, or use names)
...
# run five minutes after midnight, every day
5 0 * * * $HOME/bin/daily.job >> $HOME/tmp/out 2>&1
...
Kullanılabilen (man sayfasında belgelenen) özel "takma adlara", özellikle de saat ve tarih alternatifi olmayan "@reboot" a dikkat etmek iyidir.
# Run once after reboot.
@reboot /usr/local/sbin/run_only_once_after_reboot.sh
Bu hileyi cron işinizi dakikada birkaç kez çalıştırmak için de kullanabilirsiniz.
# Run every minute at 0, 20, and 40 second intervals
* * * * * sleep 00; /usr/local/sbin/run_3times_per_minute.sh
* * * * * sleep 20; /usr/local/sbin/run_3times_per_minute.sh
* * * * * sleep 40; /usr/local/sbin/run_3times_per_minute.sh
Bir cron işi eklemek için üç şeyden birini yapabilirsiniz:
kullanıcının crontab'ına yukarıda gösterildiği gibi bir komut ekleyin (ve crontab, bölüm 5, kılavuz sayfasından).
crontab -e -u <username>
crontab -e
EDITOR
ortam değişkeni
ile ayarlayabilirsinizenv EDITOR=nano crontab -e -u <username>
export EDITOR=vim
crontab -e
chmod a+x <file>
bir cron işi olarak bir komut dosyası / program oluşturun ve bunu sistemin anacron /etc/cron.*ly
dizinlerine ekleyin
chmod a+x /etc/cron.daily/script_runs_daily.sh
- çalıştırılabilir yapman anacron
chmod a+x <file>
/etc/crontab
veya /etc/anacrontab
çalışmak üzere yapılandırılırlar/etc/anacrontab
ve cron.hourly/etc/cron.d/0hourly
Veya, Bir kişi sistem crontables oluşturabilir /etc/cron.d
.
/etc/cron.d
yürütülebilir olması gerekmez.someuser
ve kullanımı /bin/bash
kabuk zorlanır olarak. File: /etc/cron.d/myapp-cron
# use /bin/bash to run commands, no matter what /etc/passwd says
SHELL=/bin/bash
# Execute a nightly (11:00pm) cron job to scrub application records
00 23 * * * someuser /opt/myapp/bin/scrubrecords.php
Bazen rvm ile crontab kullanarak PATH ve GEM_PATH belirtmeniz gerekir.
Bunun gibi:
# top of crontab file
PATH=/home/user_name/.rvm/gems/ruby-2.2.0/bin:/home/user_name/.rvm/gems/ruby-2.2.0@global/bin:/home/user_name/.rvm/rubies/ruby-2.2.$
GEM_PATH=/home/user_name/.rvm/gems/ruby-2.2.0:/home/user_name/.rvm/gems/ruby-2.2.0@global
# jobs
00 00 * * * ruby path/to/your/script.rb
00 */4 * * * ruby path/to/your/script2.rb
00 8,12,22 * * * ruby path/to/your/script3.rb
Bir cron işi kurmak için hızlı rehber
Yeni bir metin dosyası oluşturun, örnek: mycronjobs.txt
Her günlük iş için (00:00, 03:45), program satırlarını mycronjobs.txt dosyasına kaydedin
00 00 * * * ruby path/to/your/script.rb
45 03 * * * path/to/your/script2.sh
İşleri cron'a gönderin (bunu her çalıştırdığınızda, cron depolananları siler ve mycronjobs.txt dosyasındaki yeni bilgilerle güncellenir )
crontab mycronjobs.txt
Ekstra Faydalı Bilgiler
Mevcut cron işlerini görün
crontab -l
Tüm cron işlerini kaldır
crontab -r
Kabuk betiğini cron işi kullanarak veya bir kabuk betiği yazarak iki şekilde yürütebilirsiniz
Komut dosyası adınızın "yourscript.sh" olduğunu varsayalım.
Önce komut dosyasının kullanıcı iznini kontrol edin. komut dosyasının kullanıcı iznini kontrol etmek için aşağıdaki komutu kullanın
ll script.sh
Komut dosyası kökteyse aşağıdaki komutu kullanın
sudo crontab -e
İkincisi, komut dosyası "ubuntu" kullanıcısını tutarsa aşağıdaki komutu kullanın
crontab -e
Aşağıdaki satırı crontab'ınıza ekleyin: -
55 23 * * * /yol/to/yourscript.sh
Bunu yapmanın bir başka yolu bir senaryo yazmak ve kağıtta çalıştırmaktır
Her gün 23:55 saatinde çalışacak olan komut dosyası adınızı (örn: - youscript.sh) girmeniz gereken komut dosyası
#!/bin/bash
while true
do
/home/modassir/yourscript.sh
sleep 1d
done
bir dosyaya kaydedin ("every-day.sh" adını verelim)
uyku 1d - bir gün beklediği anlamına gelir ve daha sonra tekrar çalışır.
Şimdi script'inize aşağıdaki komutu verin: aşağıdaki komutu kullanın: -
chmod + x every-day.sh
şimdi, bu kabuk betiğini "nohup" kullanarak arka planda çalıştırın. Bu, oturumunuzdan çıktıktan sonra bile komut dosyasını yürütmeye devam edecektir.
komut dosyasını yürütmek için aşağıdaki komutu kullanın.
nohup ./every-day.sh &
Not: - "yourscript.sh" dosyasını her gün 23: 55'te çalıştırmak için, tam olarak 23: 55'te "every-day.sh" komut dosyasını yürütmeniz gerekir.