Uruchomienie cron co 30 sekund

dobrze, więc mam cron, który muszę uruchamiać co 30 sekund...oto, co mam poniżej

*/30 * * * * /bin/bash -l -c 'cd /srv/last_song/releases/20120308133159 && script/rails runner -e production '\''Song.insert_latest'\'''

to działa, ale jest to 30 minut lub 30 sekund...a także czytałem, że cron może być nie najlepszym narzędziem do wykorzystania, jeśli uruchamiam go tak często. Czy istnieje jeszcze jeden najlepszym narzędziem, który mogę zainstalować na ubuntu 11.04, który będzie najlepszym rozwiązaniem, czy istnieje sposób, aby naprawić powyżej cron


masz */30min specyfikator-oznacza to każdą minutę, ale z krokiem 30 (innymi słowy, co pół godziny). Z cron nie idzie w dół na południe minut uchwał, trzeba będzie znaleźć inny sposób.

jedna możliwość, choć to trochę kludge, polega na tym, aby mieć dwa zadania, jedno przesunięcie na 30 sekund:

* * * * * /path/to/executable param1 param2
* * * * * ( sleep 30 ; /path/to/executable param1 param2 )

a cron zadania faktycznie wykonywane co minutę, ale ostatni będzie czekać pół minuty do wykonując "mięso" zadania,/path/to/executable.


nie możesz. Cron ma stopień szczegółowości 60 sec.

* * * * * cd /srv/last_song/releases/20120308133159 && script/rails runner -e production '\''Song.insert_latest'\''
* * * * * sleep 30 && cd /srv/last_song/releases/20120308133159 && script/rails runner -e production '\''Song.insert_latest'\''

гранулярность Cron minut i nie było jest przeznaczony do przebudzenia każdego x sekundy, aby uruchomić coś. Uruchom powtarzający zadanie w cyklu, a ona musi zrobić to, co trzeba:

#!/bin/env bash
while [ true ]; do
 sleep 30
 # do what you need to here
done

nie ma potrzeby, aby w dwóch wpisach cron, można umieścić go w jeden z:

* * * * * /bin/bash -l -c "/path/to/executable; sleep 30 ; /path/to/executable"

Tak jest w twoim przypadku:

* * * * * /bin/bash -l -c "cd /srv/last_song/releases/20120308133159 && script/rails runner -e production '\''Song.insert_latest'\'' ; sleep 30 ; cd /srv/last_song/releases/20120308133159 && script/rails runner -e production '\''Song.insert_latest'\''"


możesz sprawdzić mój odpowiedzi to samo pytanie

w zasadzie, podaję tam skrypt bash z nazwa pliku "runEvery.sh" który można uruchomić z crona co 1 minutę i przekazywać jako argumenty prawdziwą drużynę, którą chcesz uruchomić, a częstotliwość w sekundach, w którym chcesz ją uruchomić.

tak

*/1 * * * * ~/bin/runEvery.sh 5 myScript.sh


zadanie Cron nie można używać do planowania zadań w sekundowym przedziale. Ja. e nie można zaplanować wykonanie zadania хрона co 5 sekund. Alternatywą jest pisanie skryptu powłoki, który wykorzystuje w nim.

utworzyć skrypt powłoki every-5-seconds.sh korzystanie z cyklu bash while, jak pokazano poniżej.

$ cat every-5-seconds.sh
#!/bin/bash
while true
do
 /home/ramesh/backup.sh
 sleep 5
done

teraz wykonaj ten skrypt powłoki w tle za pomocą nohup jak pokazano poniżej. To będzie nadal wykonywać skrypt nawet po wyjściu z sesji. Ta wola wykonać backup.sh skrypt powłoki co 5 sekund.

$ nohup ./every-5-seconds.sh &

patrz:

$ watch --interval .30 script_to_run_every_30_sec.sh

w kierunku /etc/cron.d/

utwórz utwórz plik excute_per_30s

* * * * * yourusername  /bin/date >> /home/yourusername/temp/date.txt
* * * * * yourusername sleep 30; /bin/date >> /home/yourusername/temp/date.txt

będzie działać cron co 30 sekund


użyj fcron (http://fcron.free.fr/) - daje ziarno w sekundach i sposób lepszy i bardziej uniwersalnego niż cron (vixie-cron) i stabilizowany też. Wcześniej robiłem głupie rzeczy, takie jak około 60 skryptów PHP, które są uruchomione na tym samym komputerze w bardzo głupich ustawieniach, a on nadal robił swoje.


zadania Crontab można użyć do planowania zadań w minutach / godzinach / dniach, ale nie w sekundach. Alternatywa:

utwórz skrypt do wykonywania co 30 sekund:

#!/bin/bash
# 30sec.sh

for COUNT in `seq 29` ; do
  cp /application/tmp/* /home/test
  sleep 30
done

użyj crontab -e i crontab do wykonywania tego skryptu:

* * * * * /home/test/30sec.sh > /dev/null

Dzięki za wszystkie dobre odpowiedzi. Aby to proste, podobało mi się rozwiązanie mieszane z kontrolą na crontab i podziałem czasu na skrypcie. Więc to, co zrobiłem, aby uruchomić skrypt co 20 sekund (trzy razy na minutę). Crontab wiersz:

 * * * * 1-6 ./a/b/checkAgendaScript >> /home/a/b/cronlogs/checkAgenda.log

skrypt:

cd /home/a/b/checkAgenda

java -jar checkAgenda.jar
sleep 20
java -jar checkAgenda.jar 
sleep 20
java -jar checkAgenda.jar 

u mnie był podobny problem i użyć następującego podejścia:

nohup watch -n30 "kill -3 NODE_PID" &

muszę okresowo zabijać -3 (aby uzyskać ślad stosu, programy) co 30 sekund w ciągu kilku godzin.

nohup ... & 

to jest tutaj, aby upewnić się, że nie stracę wykonywanie godzin, jeśli stracę powłokę (sieciowa problem, zawiesza windows itp...)


napisz jeden skrypt tworzyć. Szer. plikiem

nano every30second.sh

i napisać skrypt

#!/bin/bash
For  (( i=1; i <= 2; i++ ))
do
    write Command here
    sleep 30
done

następnie ustawić cron dla tego skryptu crontab-e

(* * * * * /home/username/every30second.sh)

to wyzwanie cron .SH plik w co 1 min i w .zespół SH file odbywa się 2 razy w ciągu 1 min

Jeśli chcesz uruchomić skrypt w ciągu 5 sekund, wymień 30 na 5 i zmień cykl w następujący sposób:For (( i=1; i <= 12; i++ ))

kiedy wybierz dla każdej sekundy, a następnie oblicz 60 / swoją chwilę i napisz do cyklu


uruchom w cyklu powłoki, np.:

#!/bin/sh    
counter=1
while true ; do
 echo $counter
 counter=$((counter+1))
 if [[ "$counter" -eq 60 ]]; then
  counter=0
 fi
 wget -q http://localhost/tool/heartbeat/ -O - > /dev/null 2>&1 &
 sleep 1
done