Cron은 15초마다 작업을 실행합니다.

Cron은 15초마다 작업을 실행합니다.

crontab15초마다 일부 작업을 실행 하도록 작성하는 방법을 제안해 주실 수 있나요 /usr/bin/chromium-browser(테스트에 사용하겠습니다)?

답변1

크론의 세분성은 1분보다 낮을 수 없습니다. 당신이 할 수 있는 일은 1분마다 작업을 실행하는 스크립트를 실행하고 15초 동안 기다린 후 반복하는 것입니다. 다음 crontab 줄은 some_job15초마다 시작됩니다.

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

스크립트에서는 작업이 15초 이상 걸리지 않을 것으로 가정합니다. 다음 약간 더 복잡한 스크립트는 시간이 너무 오래 걸릴 경우 다음 인스턴스를 실행하지 못하게 합니다. date지원되는 형식(예: GNU 또는 Busybox 에 의존 %s하므로 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이 아마도 잘못된 접근 방식일 수 있다는 점을 지적하고 싶습니다. unice는 수명이 짧은 프로세스에 적합하지만 15초마다 프로그램을 시작하는 오버헤드는 무시할 수 없을 정도입니다(프로그램 요구 사항에 따라 다름). 애플리케이션을 계속 실행하고 15초마다 작업을 수행하도록 할 수는 없나요?

답변2

다른 방법과 달리: 각각 15초 간격으로 4개의 cronjob을 실행합니다.

* * * * * 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초로 제한합니다.핵심 도구' timeout모든 직업에 대해. 그러나 15초가 지나자마자 작업이 제대로 종료되지 않으면 여전히 문제가 발생할 수 있습니다. 이 문제를 해결하는 방법에 대한 자세한 내용은 명령 설명서를 참조하세요. 또한 명령이 15초 이상 걸리고 시간 초과로 인해 명령이 종료되면 0이 아닌 종료 상태가 표시되어 cronjob-email이 트리거됩니다.

답변3

간단히 말해서 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초마다 실행되는 스크립트를 작성할 수는 있습니다.

답변4

크론탭에서:

* * * *  /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

관련 정보