정확한 초를 지정하여 명령/스크립트 예약

정확한 초를 지정하여 명령/스크립트 예약

저는 bash를 사용하고 있으며 나중에 지정된 시간에 1초의 정밀도로 명령/스크립트를 실행하는 방법을 알고 싶습니다.

- 명령에 대한 매뉴얼 페이지를 읽었 at지만 내가 아는 한 초가 아닌 분만 지정할 수 있습니다. 이제 먼저 이를 사용한 at다음 sleep정확한 순간에 실행되도록 합니다. 설명하기 위해 21/22/05에 my_script.sh를 실행하려면 다음을 수행합니다.

echo "sleep 5; my_script.sh" | at 22.21

하지만 내장 명령이 있으면 더 좋을 것입니다. 예를 들어 at 22.21.05.

답변1

나는 이것이 가능하다고 믿지 않습니다. cron분 단위까지만 연결하면 at유틸리티가 해당 작업을 수행하도록 연결됩니다. 나는 당신이 올바른 해결책을 가지고 있다고 생각합니다 - 수면엑스실행되기 몇 초 전.

답변2

기술을 함수로 바꿀 수 있습니다.

atplus () { local sec=${1##*.} time=${1%.*}; shift; echo "sleep $sec; $@" | at $time; }

시도 해봐:

atplus 22.21.05 my_script.sh

하지만 정확성이 보장되지는 않는다는 점을 알아 두시기 바랍니다.

답변3

실제로 at초를 지원할 수 있음

나는 이것이 항상 잘 지원되는 것은 아니라고 생각하지만(특정 구현에 따라 다름) 원칙적으로는at 가능한초를 지원합니다.

매뉴얼 페이지에서:

-티시간다음에서 작업 실행시간, [[CC]YY]MMDDhhmm[.ss] 형식으로 제공됩니다.

[.ss]끝을 보세요 .

즉, 이 -t옵션을 사용하면 다음과 같은 내용을 입력할 수 있습니다.

echo "yourscript.sh" | sudo at -t 04281549.45

15:49:45즉, 명령은 45초 안에 실행되어야 합니다.
(4월 28일)

예상대로 시도하면 출력은 다음 at과 같습니다.

job 38 at Wed Apr 28 15:49:45 2021

노트: 시도해보니 아직 몇초 늦었지만 그래도 실행됨아니 전에 15:49:45, 이는 지정된 초 수가 다음과 같음을 의미합니다.아니요내부적으로 는 무시되지만 at실제로는 고려됩니다. 따라서 "이 명령을 다음 날짜 이전에 실행하지 않도록 지연 " 15:49:45과 같이 말하고 싶을 때 초 수를 지정하는 것이 여전히 유용합니다 .

관련 정보