2016-07-16 4 views
2

내가 15 분마다 실행하고자하는 bash는 스크립트가에서 실행되지 않습니다, 그래서 난 내 crontab을이 라인을 추가 : 제가 확인했습니다배쉬 스크립트는 터미널에서 수동으로 실행되지만 crontab을

7,22,37,52 * * * * /path/to/my/script.sh 

디렉토리 경로가 정확해야하며 어떤 디렉토리에서든 /path/to/my/script.sh을 수동으로 실행하면 스크립트가 올바르게 실행됩니다.

#!/usr/bin/env bash 

내 스크립트는 또한 같은 디렉토리에 다른 스크립트를 참조하고, 내가 필요한 모든 스크립트에 chmod +x 실행 한 : 내 스크립트에서이 뱅 라인을 가지고있다. 내 이메일 주소로 MAILTO를 설정하고 좀 크론 데몬 이메일을 얻고 있었다 나는 내 crontab을에 라인을 변경하는 경우 :

7,22,37,52 * * * * sh /path/to/my/script.sh 

하지만

7,22,37,52 * * * * /path/to/my/script.sh 

또는

을 사용하여에 이메일을받은 적이
7,22,37,52 * * * * bash /path/to/my/script.sh 

나는 cron이 실행 중인지 확인했으며 스크립트의 출력을 로그 파일로 리디렉션하려고 시도했습니다.이 로그 파일은 sh를 포함 할 때만 기록됩니다. 그러나 홈 디렉토리에서 sh /path/to/my/script.sh을 실행하면 작동하지 않습니다. 내 스크립트가 실제로 실행되는 유일한 방법은 (모든 디렉토리에서) /path/to/my/script.sh 또는 bash /path/to/my/script.sh을 호출하는 경우입니다. 어떤 도움이 매우 환영받을 수 있도록 bash 스크립트를 작성하는 데 꽤 익숙하다.

+0

질문 superuser.com 또는 unix.stackexchange.com에 더 적합합니다. – Barmar

+0

아 맞습니다. 나는 잊었다 ... 그러나 cron을 구성하는 것은 많은 사람들에게 공통적 인 문제이다. – Xofo

+0

반드시 https://help.ubuntu.com/community/CronHowto – Xofo

답변

1

의 crontab 항목은

7,22,37,52 * * * * /path/to/my/script.sh 

아래 항목이 올바른지 확인하는 다음과 같은 형식

m h dom mon dow command 

이 있어야합니다. 그 말을 들으면 변경 사항을 적용하려면 crontab 편집기 (:wq)를 닫아야합니다.

[ this ] 크로스 사이트 게시물을 통해 cron 작업의 가능한 문제를 설명하는 것이 좋습니다.


자세한 내용은 hashbang [ here ].

+0

을 읽으십시오. crontab 편집기를 올바르게 저장하고 닫았습니다. 종료 한 후 다음 메시지가 표시됩니다. crontab : new crontab 설치. – pvas

+0

@pvas : 내 링크 및 기타 답변에서 언급 한 팁을 따르셨습니까? 또한 cron 데몬을 다시 시작하는 것이 좋습니다 – sjsam

3

@pvas cron 사용자 환경은 특별한주의를 기울여 처리해야합니다. 대부분의 사용자가 가진 가정은 경로, 디렉토리, 권한 등에 대한 액세스 권한을 갖게된다는 것입니다. Cron은 최소한의 환경에서 실행되므로 모든 경로, 권한 및 스크립트가 실행되는 위치를 설정해야합니다.

1) 직접 환경을 설정합니다.

2) 나는 crontab에서 완전히 확장 된 경로를 사용합니다.

3) 읽어야하는 모든 디렉토리에 읽기 권한이 있는지 확인합니다.

4) 암호가 만료되면 cron이 차단되므로 암호가 만료되지 않도록해야합니다.

5) 기본 스크립트가 명시 적으로 호출되는지 확인하십시오 (Perl, Bash, Python 등).

6) cron 라인의 명령을 LOG 파일로 파이프하십시오 (TIMESTAMP가있는 로그 파일이 더 좋음).

이러한 것들을 수정하고 다시 시도하십시오. 크론은 특히, 모든 것을 설정해야합니다. 예를 들어

:`cron` 사용에 대한

#SETUP ENVIRONMENT 
SHELL=/bin/bash 
source /home/userfoo/.bash_profile 

#RUN THE SCRIPT everyday at 11:50pm (23:50) 
50 23 * * * userfoo /home/userfoo/script.sh >> LOGFILE.txt 

< <

+0

내 목록에있는 모든 것이 맞는지 확인하고 내 줄을 다음과 같이 변경했습니다 : 7,22,37,52 * * * my_username /path/to/my/script.sh 당신의 예제에서와 같이 내 사용자 이름, 그리고 지금은 Cron Daemon emailer가 :/bin/sh : 1 : my_username : not found, echo $ USER를 실행해도 my_username을 얻을 수 있습니다. 어떤 아이디어? – pvas

+1

지금 작동합니까? 또한 script.sh에 상대 경로가없고 cd가 호출 된 디렉터리 또는 작동해야하는 위치에 있는지 확인하십시오. - 다른 문제 일 수 있습니다. 또한 모든 내용을 로그에 저장 7,22,37,52 * * * * bash /path/to/my/script.sh >> LOG.txt – Xofo

+1

모든 변수에는 절대 경로가있는 선언문 만 있습니다 상대적인 것은 필자가 필요한 디렉토리에 cd'ing 한 후에 파일을 만들 때입니다. 또한 PATH = $ {PATH} :/path/to/my_bin을 선언하고 내 주 스크립트에서 참조하는 스크립트 중 하나에서 PATH를 내 보냅니다. 또한, 내 주요 script.sh 일부 펄 스크립트를 참조 -이 문제가 될 수 있을까? 모든 perl 스크립트에서 다음을 포함합니다 : #!/usr/bin/env perl. 또한 생성 된 있지만 내 LOG.txt 파일이 비어 있습니다. bash /path/to/my/script.sh 또는 /path/to/my/script.sh를 사용하여 수동으로 스크립트를 실행하면 명령 줄에 출력이 표시되지 않습니다. – pvas

관련 문제