주어진 시간 간격 내에 무작위로 명령을 실행하는 방법은 무엇입니까?

주어진 시간 간격 내에 무작위로 명령을 실행하는 방법은 무엇입니까?

내가 관심 있는 것은 주어진 시간 간격으로 Unix 명령을 무작위로 실행하는 것입니다.

예를 들어 명령이 이고 내 시간 간격이 정오부터 오후 2시 사이인 경우 정오부터 오후 2시 사이에 무작위로 한 번 백그라운드에서 실행되는 ls백그라운드 프로세스를 시작하려면 어떻게 해야 합니까 ?ls

답변1

가장 쉬운 방법은 at명령을 사용하는 것입니다. at에서는 timespec 사용을 허용하므로 다음과 같이 사용할 수 있습니다.

at 12:00 PM tomorrow + 30 minutes

따라서 귀하의 경우에는 다음과 같은 것을 사용하고 싶을 것입니다:

at 12:00 PM tomorrow + $(($RANDOM % 120)) minutes

ls이 명령을 입력한 후 다음 과 같은 명령을 입력할 수 있습니다.ctrl + d

at 명령에 익숙하지 않다면 다음을 읽어보세요.이 튜토리얼.

답변2

의도에 따라 정오에 crontab을 작성한 다음 0~120초(2시간) 사이의 임의 간격 동안 잠을 잘 수 있습니다.

따라서 매일 정오에 명령을 실행하는 crontab 줄은 다음과 같습니다.

* 12 * * * command.sh

그런 다음 다음 명령을 사용하여 command.sh를 시작합니다.

sleep $(( RANDOM % (120*60) ))

또 다른 방법은 다음과 같습니다.

at noon + $(( RANDOM % 120 )) minutes tomorrow

매일 스크립트의 시작입니다. 말할 필요도 없이 후자는 시간이 지나면 실패할 수밖에 없기 때문에 최선의 아이디어는 아닙니다.

관련 정보