Ne yazacağımı bana tavsiye eder misiniz, crontab
böylece /usr/bin/chromium-browser
her 15 saniyede bir iş (test için kullanacağım ) çalışır.
Ne yazacağımı bana tavsiye eder misiniz, crontab
böylece /usr/bin/chromium-browser
her 15 saniyede bir iş (test için kullanacağım ) çalışır.
Yanıtlar:
Cron ile bir dakika ayrıntı düzeyi altına giremezsiniz. Yapabileceğiniz şey, her dakika, işinizi yürüten, 15 saniye bekleyen ve tekrar eden bir komut dosyası çalıştırmaktır. Aşağıdaki crontab satırı başlayacaksome_job
her 15 saniyede bir .
* * * * * for i in 0 1 2; do some_job & sleep 15; done; some_job
Bu komut dosyası, işin hiçbir zaman 15 saniyeden uzun sürmeyeceğini varsayar. Aşağıdaki biraz daha karmaşık komut dosyası, çalıştırılması çok uzun sürdüğünde bir sonraki örneği çalıştırmamaya özen gösterir. Biçimi date
desteklemeye dayanır %s
(örn. GNU veya Busybox, böylece Linux'ta iyi olacaksınız). Doğrudan bir crontab'a koyarsanız, %
karakterlerin \%
bir crontab satırındaki gibi yazılması gerektiğini unutmayın .
end=$(($(date +%s) + 45))
while true; do
some_job &
[ $(date +%s) -ge $end ] && break
sleep 15
wait
done
[ $(date +%s) -ge $(($end + 15)) ] || some_job
Bununla birlikte, her 15 saniyede bir sıklıkta bir iş yürütmeniz gerekirse, cron'un muhtemelen yanlış bir yaklaşım olduğunu not edeceğim. Her ne kadar kısa ömürlü süreçlerde unices iyi olsa da, her 15 saniyede bir program başlatma yükü göz ardı edilemez (programın ne kadar talep edildiğine bağlı olarak). Uygulamanızı her zaman çalıştıramaz ve 15 saniyede bir görevini yerine getirmesini sağlayamaz mısınız?
1 2 3 4 ; do some_job & sleep 15; done
(son uyku bir sonraki çalıştırmayı etkilemez), ancak bunu yapmanın yolu giden cronjob postasının zamanlaması için muhtemelen daha iyidir (son some_job'dan hemen sonra gönderilir, 15'lerin sonunda benim varyant)
Diğerlerinden farklı yaklaşım: Her biri 15 saniye kademeli 4 cronjobs çalıştırın:
* * * * * sleep 00; timeout 15s some_job
* * * * * sleep 15; timeout 15s some_job
* * * * * sleep 30; timeout 15s some_job
* * * * * sleep 45; timeout 15s some_job
İşin kendisine müdahale etmesini önlemek için, GNU coreutils ' aracılığıyla timeout
her çalışma için çalışma süresini 15 saniyeyle sınırlandırıyoruz . Bununla birlikte, iş 15 saniyenin sonunda hemen çıkmazsa yine de sorun yaşayabileceğinizi unutmayın. Sorun haline gelirse bunu nasıl çözeceğinizle ilgili ayrıntılar için komut kılavuzuna bakın. Ayrıca, komut 15 saniyeden daha uzun sürerse ve zaman aşımı onu öldürürse, cronjob-e-postasını tetikleyecek sıfır olmayan bir çıkış durumu alırsınız.
Kısacası, cron zamanla bu kadar ayrıntılı değildir. Alacağınız en kısa süre 1 dakikadır.
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .----- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * command to be executed
* * * * /usr/bin/chromium-browser
Ancak her 15 saniyede bir çalışacak bir komut dosyası yazabilirsiniz ...
* * * * * /usr/bin/chromium-browser
Crontab'da bir çizgim var. El kitabına göre her dakika çalışmalı ama hiçbir şey çalışmıyor.
Crontab'ınızda:
* * * * /usr/bin/chromium-browser_starter
Sonra /usr/bin/chromium-browser_starter
:
#!/bin/sh
# chromium-browser_starter
#
# Schedules /usr/bin/chromium-browser to run every 15 seconds for a minute.
# Intended to be called every minute through crond(8).
for ((secs=0; secs<46; secs+=15)); do
(sleep $secs; /usr/bin/chromium-browser "$@") &
done
wait
ps aux | grep chrom
dakika sonra yazdığımda krom tarayıcı çalıştığını göremiyorum.
sleep
.