내가 관심 있는 것은 주어진 시간 간격으로 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
매일 스크립트의 시작입니다. 말할 필요도 없이 후자는 시간이 지나면 실패할 수밖에 없기 때문에 최선의 아이디어는 아닙니다.