태그 보관물: cron

cron

15 초마다 Cron 실행 작업 crontab어떤 작업 (테스트 용)을 실행하도록

15 초마다 crontab어떤 작업 (테스트 용)을 실행하도록 작성해야하는지 조언 해 주 /usr/bin/chromium-browser시겠습니까?



답변

cron을 사용하면 1 분 단위로 아래로 갈 수 없습니다. 할 수있는 일은 매 분마다 작업을 실행하고 15 초 동안 기다렸다가 반복하는 스크립트를 실행하는 것입니다. 다음 crontab 줄은 some_job15 초마다 시작 됩니다.

* * * * * for i in 0 1 2; do some_job & sleep 15; done; some_job

이 스크립트는 작업이 15 초 이상 걸리지 않는다고 가정합니다. 다음의 약간 더 복잡한 스크립트는 다음 인스턴스를 실행하는 데 너무 오래 걸린 경우 다음 인스턴스를 실행하지 않도록합니다. 형식 date지원에 의존 %s합니다 (예 : GNU 또는 Busybox, Linux에서는 괜찮을 것입니다). crontab에 직접 입력하면 crontab 행 %과 같이 문자를 작성해야합니다 \%.

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

그러나 15 초마다 자주 작업을 실행해야하는 경우 cron이 잘못된 접근 방법 일 수 있습니다. 단기 프로세스에서는 유니 세가 훌륭하지만 15 초마다 프로그램을 시작하는 오버 헤드는 무시할 수 있습니다 (프로그램 요구 방식에 따라 다름). 응용 프로그램을 항상 실행하고 15 초마다 작업을 실행할 수 없습니까?


답변

다른 방법과 다른 접근 방식 : 각각 4 초씩 4 개의 크론 작업을 실행하십시오.

* * * * * sleep 00; timeout 15s some_job
* * * * * sleep 15; timeout 15s some_job
* * * * * sleep 30; timeout 15s some_job
* * * * * sleep 45; timeout 15s some_job

자신을 방해하는 일을 방지하기 위해, 우리는 GNU를 통해 15초에 그것의 실행 시간을 제한 로 coreutilstimeout각 작업. 그러나 15 초가 지나도 작업이 즉시 종료되지 않으면 여전히 문제가 발생할 수 있습니다. 문제가 발생한 경우이를 해결하는 방법에 대한 자세한 내용은 명령 설명서를 참조하십시오. 또한 명령이 15 초보다 오래 걸리고 시간 종료가 종료되면 0이 아닌 종료 상태가되어 cronjob-email을 트리거합니다.


답변

요컨대, cron은 시간에 따라 세분화되지 않습니다. 가장 짧은 기간은 1 분입니다.

#       .---------------- 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

그러나 15 초마다 실행되는 스크립트를 작성할 수 있습니다 …


답변

crontab에서 :

* * * *  /usr/bin/chromium-browser_starter

그런 다음 /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


답변