어쩌면 나는 완전히 미쳤고, 그렇다면-괜찮습니다. 그러나 어떻게 임의의 일정에 따라 구피 메시지를 브로드 캐스트하도록 작업을 예약 fortune
합니까?
설명
예-이것은 내 개인 워크 스테이션입니다-프로덕션 서버에서 이상한 것을 할 계획은 없습니다 :)
어쩌면 나는 완전히 미쳤고, 그렇다면-괜찮습니다. 그러나 어떻게 임의의 일정에 따라 구피 메시지를 브로드 캐스트하도록 작업을 예약 fortune
합니까?
설명
예-이것은 내 개인 워크 스테이션입니다-프로덕션 서버에서 이상한 것을 할 계획은 없습니다 :)
답변:
at
이 유형의 목적을 위해 인터페이스 at
가 설치되어 있고 기계가 실행 중이며 atd
사용자가 명령을 사용할 수 있는 경우 더 간단한 인터페이스를 갖습니다 .
(예를 들어, 정확한 구문을 이용하여 확인 man at
하거나 info at
,)
at -f
파일 now + 53 minutes
또는
at -f
파일 now + 2 hours
지정된 파일에서 명령을 각각 53 분 또는 2 시간 내에 실행합니다.
at
그런 다음 예약 된 작업이 시작될 때 적절한 (임의 또는 기타) 시작, 수 및 시간 단위로 다시 실행할 수 있습니다.
편집하다
Arjan이 아래에서 유용하게 지적했듯이 장난감 응용 프로그램 이외의 용도로 이것을 사용하는 경우 발생하는 문제와 같은 문제에 대해 생각해야합니다.
이전 실행이 끝나기 전에 다음 실행이 시작되는 경우 (예 : 스크립트가 재진입합니까?)
실행이 올바르게 완료되지 않거나
다음 실행이 전혀 또는 정시에 시작되지 않는 경우 (예 : 다음 실행이 시작될 때 기계가 꺼지면 어떻게되는지)
실패 또는 성공한 실행의 로깅 및보고에 대해.
at
-command가 첫 번째 행이고 스크립트가 장시간 (또는 간격이 짧은 경우) 실행되는 경우 여러 인스턴스를 동시에 실행하는 것을주의하십시오. 그러나 at
스크립트의 마지막 줄에있을 때 스크립트가 실패하면 다시 예약되지 않습니다. 또한 명령 줄에서 스크립트를 실행하면 스크립트 자체도 일정이 변경됩니다 (그리고 여러 일정이 동시에 존재할 수 있음). 그리고 cron
이메일을 통한 모든 오류 전송 (또는 일반적으로 출력)을 지원합니다. 나도 그런 것이 있는지 모르겠다 at
?
나는 / etc / crontab에 모든 종류의 일을하는 많은 명령을 가지고 있으며 몇 초 안에 정밀도가 필요합니다. 이제 cron은 더 세밀한 해상도를 유지하면서 모든 시간을 가시적이고 집중적으로 유지할 수 있습니다.
이 예제는 5 분마다 10 초에서 50 초 사이에 웹 페이지를 가져와 구문 분석합니다.
4-59/5 * * * * root (sleep $(($RANDOM\%40+10))) && /etc/munin/plugins/someplugin prefetch
데이터가 느리게 이동하기 때문에 정확한 시간을 가질 필요는 없지만 웹 페이지를 기다리지 않아도 munin-node 실행 시간을 가능한 한 낮게 유지하는 데 도움이됩니다. (플러그인은 불필요한 적중을 줄이기 위해 30 분 동안 페이지를 추가로 캐시하지만 5 분마다 데이터베이스를 업데이트해야합니다).
\ % — cron은 "\ n"을 %로 대체합니다. 메일 텍스트를 한 줄에 유지하는 데 유용합니다.
내부적으로 cron
는 그런 기능이 있다고 생각하지 않습니다. 최선의 해결책은 명령을 쉘 스크립트 sleep
에 넣고 스크립트 맨 위에 임의의 간격을두고 $RANDOM
변수를 사용하는 것 입니다. 그런 다음 일반 크론 작업에서 하루에 한 번 스크립트를 실행하십시오.
#!/bin/bash
sleep $(($RANDOM%5))
/path/to/command -param1 -param2
그것은 당신이 어떤 간격의 유형에 따라 달라집니다. 그러나 스크립트를 1:30 확률로 무작위로 실행한다고 가정합니다 (30 분마다 한 번).
10 분의 주기로 cron 스크립트를 빌드하십시오. 30 분마다 3 번 발사됩니다.
스크립트 내에서 rand 를 if 문의 조건으로 사용 합니다. rand가 0과 2 사이의 숫자를 리턴하기를 원합니다. 0이면 if 문의 내용을 실행하십시오.
기본적으로 스크립트는 항상 설정된 간격으로 실행됩니다. 그러나 관심있는 명령 만 무작위로 실행합니다. 서비스 제공 업체가 감사합니다.
file
다음at
실행이 포함되어 있으면 재귀 적으로 될 수 있습니까?