쉘 스크립트를 통해 일회성 예약 작업을 추가하시겠습니까?

쉘 스크립트를 통해 일회성 예약 작업을 추가하시겠습니까?

주어진 시간에 한 번 작업을 실행하고 싶습니다.

crontab -e를 사용하여 거기에 추가할 수 있다는 것을 알고 있지만 쉘스크립트를 통해 추가하고 싶습니다. crontab -e예측할 수 없는 편집할 임시 파일 몇 개를 주세요.

또한 작업이 실행되면 복잡해지지 않도록 crontab에서 다시 삭제하고 싶습니다.

그렇다면 스크립트를 통해 내 개인 crontab에 항목을 추가/제거하는 표준화된 방법이 있습니까?

나는 내 자신의 시스템을 롤아웃할 수 있다는 것을 알고 있습니다. 폴더에서 .sh 파일을 실행하고 삭제하는 매분 실행되는 스크립트가 있고 내 "addtask" 스크립트가 해당 폴더에 .sh 파일을 생성하도록 합니다. 하지만 내 시스템을 롤아웃하기 전에 , 이미 뭔가가 있는지 알고 싶었습니다.

중요한 것은 Mac OS X와 ​​zsh를 사용하고 있지만 다른 *nix에서도 작동하는 것을 사용하고 싶습니다.

답변1

내 생각엔 그 at명령이 당신이 원하는 것 같아요.

예를 들어:

echo "mail -s Test mstumm < /etc/group" | at 16:30

/etc/group오후 4시 30분에 사본이 이메일로 전송됩니다.

at여기에서 자세한 내용을 읽을 수 있습니다 .http://www.softpanorama.org/Utilities/at.shtml

답변2

새 크론 작업을 추가합니다.

newJob="/path/to/new/script.sh"
newJobSchedule="0 0 * * 0 $newJob"
cat <(crontab -l) <(echo "$newJobSchedule") | crontab -

이전 크론 작업을 삭제합니다.

oldJob="/path/to/old/script.sh"
cat <(fgrep -i -v "$oldJob" <(crontab -l)) | crontab -

사용되지 않는 크론 작업을 교체합니다.

oldJob="/path/to/old/script.sh"
newJob="/path/to/new/script.sh"
newJobSchedule="0 0 * * 0 $newJob"
cat <(fgrep -i -v "$oldJob" <(crontab -l)) <(echo "$newJobSchedule") | crontab -

파이프와 리디렉션을 사용하여 임시 파일을 피하세요.

관련 정보