2009-07-16 4 views
3

매 시간마다 실행되는 서버에이 bash 스크립트가 cron을 통해 있습니다. 나는 완벽하게 행복했지만 이제 사용자는 웹 인터페이스를 통해 주파수를 구성 할 수 있기를 원합니다.사용자가 cron을 구성하도록 허용

프로그래밍 방식으로 cron 구성을 조작하는 것이 편안하지 않지만 다른 옵션이 더 좋은지 확실하지 않습니다.

내가 볼때, 나는 다음 중 하나를 수행 할 수 있습니다

  • 일정에 한번 분을 실행하고 정말
  • 포기 크론 모두 "지금"실행하는 데몬을 사용해야하는지 확인하는 스크립트 자체 스케줄러. 이것은 아마도

어떻게해야합니까 (BTW 파이썬으로 작성) 파이썬

  • 에 스크립트를 재 작성 의미 ... 또는 웹 인터페이스에서 크론 구성을 빨아 조작?

    편집 : 명확히하기 위해, 내가 cron을 조작하는 것에 대해 우려하는 주된 이유는 기본적으로 유효성 검사가없는 텍스트 조작이기 때문이며, 내가 엉망으로 만들면 다른 cron 작업도 실행되지 않기 때문입니다. 여기

    내가하고 결국 무엇을 :

    if [ ! `cat /home/username/settings/run.freq` = $1 ]; then 
        exit 0 
    fi 
    

    나는 다음과 cron 작업을 설정 :

    이 stefanw의 조언을 복용, 내 bash는 스크립트의 상단에 다음 줄을 추가

    0 */2 * * *    /home/username/scripts/publish.sh 2_hours 
    @hourly     /home/username/scripts/publish.sh 1_hour 
    */30 * * * *   /home/username/scripts/publish.sh 30_minutes 
    */10 * * * *   /home/username/scripts/publish.sh 10_minutes 
    

    웹 인터페이스에서 사용자가 4 가지 옵션 중 하나를 선택하게하고 사용자가 선택한 것을 기준으로 문자열 01을 씁니다. 파일을 /home/username/settings/run.freq으로 가져옵니다.

    나는 그것을 좋아하지 않지만, 가장 좋은 대안처럼 보입니다.

  • 답변

    10

    매분, 매 5 분마다, 매 30 분마다 합리적인 선택을 사용자에게 제공하고이 값을 cron 작업 문자열로 변환하십시오. 이것은 사용자 친화적이며 사용자가 cron 작업 문자열을 직접 조작하는 것을 금지합니다.

    +0

    좋은 소식, 고객이 만족할 수 있기를 바랍니다. –

    0

    Webmin? 나는 그것을 직접 사용한 적이 없지만 cron 모듈을 구성하고 작업을 구성하려는 사용자에게 권한을 부여 할 수있는 것 같습니다. 내가 사용하는

    +0

    그건 과도한 잔인한 생각인데, 두렵다. – itsadok

    +0

    그래, 작은 문제에 대한 큰 해결책이다. "자체 발전"보다 설치 및 유지 보수가 더 빠를 수도 있습니다. 이것은 현재 환경에 크게 의존합니다. – WMR

    3

    당신은 이미 대부분의 작업을 수행하는 파이썬 스케줄러 라이브러리를 사용할 수 있습니다. 이 스크립트가 파일을 터치했는지 확인합니다. 파일이 있으면 main cron 스크립트가 함수/첨자를 시작합니다. 정의 된 파일을 만져보고 "rm -f"를 끝내면 편집해야합니다. 다른 방법으로 작업을 시작하기를 원할 경우 병행 증거가되는 편익이 있습니다. 그런 다음 사용자가 선호하는 웹 프로그래밍 언어를 사용하여 사용자 일정을 처리 할 수 ​​있습니다.내가 나를 위해 크론 정보를 조작 할 수있는 모듈을 찾을

    [...] 
    
    if [ -e "${tag_archive_log_files}" ]; then 
        archive_log_files ${params} 
        rm -f ${tag_archive_files} 
    fi 
    
    if [ -e "${tag_purge_log_files}" ]; then 
        purge_log_files ${params} 
        rm -f ${tag_purge_log_files} 
    fi 
    
    [...] 
    
    0

    그럼 뭔가 메인 스크립트가 크론에 의해 매 분마다 시작이다 :

    +0

    하지만 지금은 일정에 따라 태그 파일을 만들어야합니다. 그렇지 않습니까? – itsadok

    +0

    예. 이제는 cron 파일을 조작 할 필요가 없으며 선택한 언어로 복잡한 작업을 수행하지 않아도됩니다. 파일을 만들거나 삭제하면됩니다. 응용 프로그램의 스케줄러 작업을 연관 해제합니다. – neuro

    0

    : 같은

    주요 스크립트 보인다. python-crontab이라고하며 easy_install과 함께 사용 가능합니다. source에서 :

    Example Use: 
    
    from crontab import CronTab 
    
    tab = CronTab() 
    cron = tab.new(command='/usr/bin/echo') 
    
    cron.minute().during(5,50).every(5) 
    cron.hour().every(4) 
    
    cron2 = tab.new(command='/foo/bar',comment='SomeID') 
    cron2.every_reboot() 
    
    list = tab.find('bar') 
    cron3 = list[0] 
    cron3.clear() 
    cron3.minute().every(1) 
    
    print unicode(tab.render()) 
    
    for cron4 in tab.find('echo'): 
        print cron4 
    
    for cron5 in tab: 
        print cron5 
    
    tab.remove_all('echo') 
    
    t.write() 
    

    (I는 "크론"에 대한 인터넷 검색을 보관하고 아무것도 찾을 수 없습니다 나는이 누락 된 키워드가 "crontab에"이었다.).

    나는 지금 이것을 사용할 것인지 아니면 cron을 파이썬 기반 스케줄러로 완전히 대체 할 것인지 결정할 것입니다.

    관련 문제