매버릭스에서 크론 스크립트가 실행되지 않음


12

다음과 같이 사용자 crontab 파일을 구성했습니다.

*/2 * * * * /Users/[my user]/Dropbox/htdocs/auto-update.sh

그러나 실행되지 않습니다. 나는 10-15 분을 기다렸다. 왜?

auto-update.sh 명령은 수동으로 실행하면 쉽게 실행됩니다. 실행 체인을 분리하고 스크립트를 cron에서 실행하려면 어떻게해야합니까?


1
어떤 OS를 사용하고 있습니까? Cron은 OS X에서 더 이상 사용되지 않으므로 데몬을 시작해야합니까?
bmike

최신 10.9.2. 어떻게합니까? 예를 들어 스크립트가 한 시간마다 작동하기를 원합니다. 위의 스크립트에서는 작동하지 않기 때문에 필사적이며 2 분마다 작동하도록 수정했습니다.
RomaValcer

1
crontab 파일이 존재하면 cron 데몬은 자동으로 시작되어야합니다 (대체로 시작). /System/Library/LaunchDaemons/com.vix.cron.plist (특히 KeepAliveQueueDirectories항목)를 참조하십시오 .
Gordon Davisson

OK, Keeplive는 있지만 나열된 경로 만 존재하지 않는 '/ etc / crontab'이 있습니다. QueueDirectories에는 제한된 폴더 '/ usr / lib / cron / tabs'에 기존 파일이 있습니다. su와 vim으로 열면 내 임무가 있습니다.
RomaValcer 2012 년

답변:


17

크론 작업이 실행되는 환경은 대화식 쉘과는 약간 다릅니다. 스크립트가 실행 중이지만 성공적으로 실행되지 않았을 수 있습니다. 가장 큰 차이점 중 하나는 cron 작업의 경우 기본 PATH는 "/ usr / bin : / bin"이므로 / usr / bin 또는 / bin에없는 명령을 사용하면 명령이 사용되지 않습니다. 스크립트가 자체 PATH를 설정하거나 명령에 대한 명시 적 경로를 제공하지 않는 한 발견되었습니다. 다른 큰 차이점은 단순히 대화 형 세션에 연결되어 있지 않기 때문에 대화 형 (터미널에서 읽은 등) 무언가를 시도하면 실패합니다. cron 항목을 다음과 같이 변경하십시오.

*/2 * * * * /Users/[my user]/Dropbox/htdocs/auto-update.sh >>/tmp/auto-update.log 2>&1

... 로그에 유익한 정보가 있는지 확인하십시오.


이것은 나의 노력보다 낫습니다-당신의 대답이 더 좋을 경우 내 로거 아이디어를 자유롭게 통합하십시오.
bmike

로그가 나타나지 않았습니다.
RomaValcer 2012 년

@RomaValcer : 이상합니다. 스크립트를 시작하는 것까지 걸리지 않습니다. 실행 ps -ax | grep [c]ron하고 cron 데몬 (/ usr / sbin / cron)이 실행 중인지 확인합니다. 그렇다면 bmike의 로거 테스트를 시도하십시오. 어쨌든 로그 (/var/log/system.log 및 콘솔 유틸리티의 "모든 메시지"항목)를 확인하고 관련이 있는지 확인하십시오.
Gordon Davisson

예, 있습니다. 그러나 로그에는 예약 된 시간에 시작되는 내용이 표시되지 않습니다.
RomaValcer

4

말하기는 어렵지만 5 분마다 두 번째 크론 작업을 추가하여 메시지를 system.log에 기록하는 시스템 작성 도구를 호출하면 어떻게됩니까?

0,5,10,15,20 * * * * /usr/bin/logger "cron is working"

그러면 cron이 문제의 사용자를 위해 실행되고 있으며 cron을 시작하거나 스크립트를 수정하여 제한된 cron 환경에서 실행되도록 집중할 수 있습니다. (벽 시계를보고 곧 또는 앞으로 몇 분 동안 나오는 몇 번을 선택할 수 있습니다. .)


4

이 질문을한지 오래되었지만이 스레드에는 해결책이없는 것 같습니다.

사용자 crontab을 작성하는 방법에 따라 편집 한 후이를 실행해야 할 수도 있습니다.

crontab ~/.yourcrontabfile

새 crontab (수정 후)이 활성화되었는지 확인하려면 다음을 확인하십시오.

crontab -l

작동하지 않습니다. Crontab -l은 크론이 설정되었지만 여전히 작동하지 않음을 보여줍니다.
PKHunter

1

나는 같은 문제가 있었다. bash 스크립트의 경로를 추가해야합니다.

#!/bin/sh
PATH=/usr/local/bin:/usr/local/sbin:~/bin:/usr/bin:/bin:/usr/sbin:/sbin

0

나는 같은 문제가 있었다. 내 crontab 파일에서 작업 후 줄 바꿈을 추가 한 후에 사라졌습니다 (전체 crontab n00b 이므로이 동작이 널리 알려져 있는지 여부는 알 수 없습니다).

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.