Cron 작업은 5초마다 실행됩니다.

Cron 작업은 5초마다 실행됩니다.

다음 기능을 사용하여 크론 작업을 생성해야 합니다.

작업은 특정 디렉터리로 이동하여 5초마다 파일을 터치해야 합니다. 1분 동안만 실행해야 합니다. 논리는 파일의 타임스탬프를 변경하는 것입니다.

나는 다음과 같은 논리를 생각해 냈습니다.

다음 크론 작업을 만들었습니다.

00-01 09 * * * /home/flexsys/test.sh

(작업은 9:00에 시작하여 9:01까지 계속됩니다)

스크립트 내용은 다음과 같습니다.

        #!/bin/tcsh
        cd /home/A/B/C/
              while true
              do
              sleep 5
              touch ABC.txt
              done

어떤 기준 탭에 무엇을 넣어야 할지 모르겠습니다. 루프 절 없이 이것을 시도했지만 파일에 한 번만 닿았습니다. 9시 1분까지 이것을 반복해야 합니다. 이 목표를 달성하려면 어떻게 해야 합니까?

답변1

00-01 09 * * * /home/flexsys/test.sh (the job will start at 9:00 and run upto 9:01)

그것은 그런 의미가 아닙니다. 이는 작업이 오전 9시에 실행됨을 의미합니다.그리고9:01에 다시 실행됩니다. Cron은 일자리를 없애는 개념이 없습니다. 단지 시작하는 것뿐입니다.


의 경우 명령 while을 실행 date하고 분을 찾아 그것이 맞는지 테스트 해야 합니다 00. 내 시스템에서

date | cut -c12-19

풀타임 12:36:28에 복귀합니다. 시스템의 출력 cut에서 ​​분만 추출하는 방법을 알아내야 합니다.date

test마지막으로 값이 0인지 확인하는 명령이 필요합니다 .

또 다른 옵션은 스크립트를 60초 동안 실행해야 하고 5초마다 작업을 수행해야 하는 경우 특정 횟수만큼 수행한 다음 종료할 수 있습니다.


직면한 마지막 문제는 ls대부분의(전부는 아니지만) Unix 시스템의 명령이 초 단위까지 정확한 타임스탬프를 표시하지 않는다는 것입니다. perl파일의 타임스탬프가 5초마다 업데이트되는지 확인하려면 외부 도구나 스크립트가 필요할 가능성이 높습니다 . 나는 이것에 대해 당신을 도울 수 없습니다.

답변2

00 09 * * * /home/flexsys/test.sh

#!/bin/tcsh
    cd /home/A/B/C/
          @ a = 0
          while ( $a != 12 )
              sleep 5
              touch ABC.txt
              @ a = $a + 1
          end

이렇게 하면 스크립트가 한 번만 실행되지만 각 터치 사이에 5초 간격으로 파일을 12번 터치합니다. 12*5가 60이면 스크립트를 실행하는 데 1분이 주어집니다(느린 NFS와 같은 느린 파일 시스템을 사용하지 않는 한).

관련 정보