2010-07-26 9 views
6

매 5 초마다 스크립트를 실행하는 크론 작업을 만들고 싶습니다. cron 작업이 0-59 분 단위로 증가하는 것을 볼 수 있습니다.크론 작업 - 매 5 초마다 실행

아래 작성된 원본 스크립트를 호출하는 다른 스크립트를 만들려고 생각했습니다.

#!/bin/bash 

while true 
do 
# script in the same directory as this script. is this correct? 
bash makemehappy.sh 
sleep 1 
done 

이제는 컴퓨터를 부팅 할 때마다이 스크립트를 실행하는 방법을 알아야하며, 어떤 이유로 든 실행되지 않으면 컴퓨터가 시작될 수 있어야합니다.

나는 또한이 스크립트를 매분마다 실행하는 것이 좋지 않을 것임을 알고 있습니다. :)

5 초마다 스크립트를 실행하는 더 쉬운 방법이 있으면 알려 주시기 바랍니다.

감사합니다.

+8

5 초마다 어떤 작업을 시도하는 것이 실제로 문제를 해결하는 가장 좋은 해결책입니까? – user347594

답변

7

나는 이것을 위해 cron을 사용하지 않을 것이다. 그 bash 스크립트 (절대 경로를 사용하십시오. 이식성을 원하지 않는 한 디렉토리 구조가 보존됨을 알고 있습니다).

대신, 나는 단지 sleep 5 일뿐입니다 (1 대신 5 초).

시스템에서 시작하는 한 시스템에 따라 다릅니다. (일부) Linux 배포판에는 시스템이 시작될 때 실행할 스크립트를 추가 할 수있는 /etc/rc.local이라는 파일이 있습니다. 글쎄 ... 나는 그렇게 일반적이어서는 안되는데, 내가 사용한 배포판에는이 것이있다. 우분투를 실행하고 있다면 더 이상 inittab이 없습니다. 그들은 신출내기를 사용합니다, btw.

그래서 무한 루프가 있고 /etc/rc.local에 항목이 있으면 끝없이 (또는 문제가 발생하여 종료 될 때까지) 실행해야합니다.

+0

내 배포판 우분투는 무엇입니까? 그 rc.local 파일을 etc 디렉토리에서 찾을 수없는 것 같습니다. 제안 사항? – myusuf3

+0

어떤 버전입니까? (고양이/etc/issue) – Tim

+0

10.04 나는 그것을 알아낼 수 있었다. :) init.d에 추가하고 update-rc.d를 업데이트함으로써. – myusuf3

2

컴퓨터 시작시 anacron 또는 더 나아가 init 스크립트를 사용해보십시오.

스크립트를 "다시 시작"하려면 몇 분마다 실행하여 원본이 실행 중인지 확인해야합니다. 이 작업은 inittab (/etc/inittab) 또는 Ubuntu에서 /etc/event.d으로 수행 할 수 있습니다. man 5 inittab을 시도해보고 'respawn'옵션을 살펴보십시오.

1

일부 cron에는 @reboot 시간 지정자가 있습니다 (여기에는 모든 시간 및 날짜 필드가 포함됩니다). 네가하는 일이라면 그걸 쓸 수있어. 이것이 "시스템"서비스 (스스로 실행하는 것이 아닌) 인 경우 여기에있는 다른 솔루션이 더 좋습니다.

1

초기화 스크립트는 부팅시 문제가 없지만 프로세스가 실패하여 다시 시작해야하는 경우 검색하지 않습니다. supervisord은 실패한 프로세스를 감지하고 다시 시작하는 훌륭한 작업을 수행합니다. 설명 된 @Tim과 같은 5 초짜리 루프가있는 스크립트를 권하고 싶지만, 그 주위에 supervisord을 두어 계속 실행되도록하십시오.

관련 문제