왜 crontab 스크립트는 작동안함?

종종 '또는' 스크립트는 실행되지 crontab 스케줄상을 강타했다. 여러 가지 이유에 대해 다음과 같이 밝혔다:

  1. crontab 잘못된 표기법
  2. 권한 문제
  3. 환경 변수

이 커뮤니티는 wiki 목표로 하는 이유 '총' 스크립트에만 csetup crontab 지켜지지 않고 있는 것으로 보고 있다. 이와는 별도로 각 오토메이티드 쓰기 때문이다.

답 - 세부내용에서 호스트당 it& 이유에 대해 한 가지 이유는 포함시키십시오. # 39 의 실행되지 리스토어와 수리입니다 (es) 의 주된 원인 중 하나다.

하지만 예상대로 셸에서 실행되는 desktopplatforms 쓰기 전용 cron 특정 문제, 예를 들어 명령에 의해 잘못 실행하십시오 cron.

질문에 대한 의견 (4)
해결책

<! - 모든 언어: &gt 내주었다.

  • 다른 환경에서 *

Cron 사용자의 작업 환경 변수 설정 최소 패스. 더미 (dummy), 다음과 같은 추가 작업을 차이를 볼 수 있습니다.

          • env &gt pre&gt <;; /tmp/env.output&lt /pre>;

'다음' 작업을 다시 분리하십시오 생성할지 /tmp/env.output 기다립니다. 이제 '비교' 환경 '에' 을 (를) 의 출력을 콘텐트입니다 /tmp/env.output 실행하십시오 일반 가능하다.

일반적인 &quot gotcha"; 다음은 '길' 환경 변수 기술입니까 다르다. 어쩌면 네 cron 스크립트입니다 soundmixer. 섬코먼드 '명령' 에서 볼 수 있는 ',' / / bin / opt 소미프 추가되도록 '길' 에서 've you& # 39, / etc / 환경'? cron 무시하고 '길' '때' 해당 파일의 실행 해 도왔으매 섬코먼드 스크립트에서 페일오버됩니다 실행하십시오 때 함께 있지만 작동합니까 터미널에서 실행하십시오 cron # 39 의 가치가 있는 it& (cnn) / etc / 환경 변수 '에서' 에 전달되고 cron 작업 자체가 아니라, 그냥 '길' 등 com/go/4e6b330a_kr cron 구체적으로 설정합니다.

방금 설정한 것을 해결하기 위해, 자신의 '길' 맨 위에 가변적입니다 스크립트입니다. E. g.

#!/bin/bash
PATH=/opt/someApp/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

# rest of script follows

그냥 모든 명령을 사용하여 일부 포지셔닝하십시오 절대 경로 대신. 내가 어하여 추천합니까 iqn. 무슨 일이 고려해보십시오 스케쳐내 다른 시스템에서 실행할 수 있는 '에 대해, 시스템, 이 명령은 스크립트입니다 /opt/someAppv2.2/bin' 를 사용할 수 있습니다. # 39 you&; d '/ / bin / opt 소미프 교체하십니까 전체 스크립트입니다 거쳐야 할 게 아니라 작은 편집하십시오 /opt/someAppv2.2/bin' 하고 '을 (를)' 의 첫 번째 줄의 스크립트입니다.

경로도 설정할 수 있습니다, 이를 모든 변수를 crontab 파일이 적용하십시오 cron 작업. E. g.

PATH=/opt/someApp/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

15 1 * * * backupscript --incremental /home /root
해설 (22)

내 상단형 잡았다. 잊지 경우 추가하기에서는 끝에 개행 문자 'crontab' 절실해졌습니다. 즉, 빈 할말이다 crontab 파일이 끝나야 한다.

다음은 관련 섹션의 이 문제에 대한 맨페이지가 (crontab '다음' 양반이군요 건너뛰십시오 및끝):

   Although cron requires that each entry in a crontab end  in  a  newline
   character,  neither the crontab command nor the cron daemon will detect
   this error. Instead, the crontab will appear to load normally. However,
   the  command  will  never  run.  The best choice is to ensure that your
   crontab has a blank line at the end.

   4th Berkeley Distribution      29 December 1993               CRONTAB(1)
해설 (12)

Cron 데몬입니다 실행되고 있지 않습니다. 정말 망쳤어 대체하십시오 몇 개월 전.

유형:

pgrep cron 

볼 수 없는 경우 어졌다면 cron 실행되고 있지 않습니다. sudo /etc/init.d/cron cron '시작' 시작하는 데 사용할 수 있습니다.

  • 편집: Init 스크립트에만 /etc/init. d 호출 서비스 사용을 통해 아닌,
  • 유틸리티에는 (예:
sudo service cron start
  • 편집: 또한 현대의 linix 기능*을 시스템스틀 사용할 수 있습니다 (예:
sudo systemctl start cron
해설 (4)

',' ',' 의 파일 이름은 'cron.d/ 스크립트입니다 cron.daily/ cron.hourly/' 등, 그렇지 않으면 부품 실행하십시오 저들이요 건너뛰려면 joyon. ('.') 를 포함하지 않아야 합니다

지켜보리니 부품 실행하십시오 (8):

   If neither the --lsbsysinit option nor the --regex option is given then
   the names must consist entirely of upper and lower case  letters,  dig‐
   its, underscores, and hyphens.

   If  the  --lsbsysinit  option  is given, then the names must not end in
   .dpkg-old  or .dpkg-dist or .dpkg-new or .dpkg-tmp, and must belong  to
   one  or more of the following namespaces: the LANANA-assigned namespace
   (^[a-z0-9]+$);   the   LSB   hierarchical   and   reserved   namespaces
   (^_?([a-z0-9_.]+-)+[a-z0-9]+$);  and  the  Debian cron script namespace
   (^[a-zA-Z0-9_-]+$).

그래서, 'backup.sh', 'analyze-logs.pl' 에서 'cron.daily/ cron 스크립트입니다 경우' 디렉터리인 you& # 39; d 베스트중에 분리하십시오 확장명은 이름.

해설 (4)

'Sh' 명령을 실행하는 cron 사용하여 많은 환경에서 사용할 수 있으며, 많은 사람들이 solaris. 정보기술 (it) '' 내주었다.

이 제안 또는 수리입니다 테스트하려면 실패한 명령:

  • 의 'sh' 명령을 실행하십시오 확인하기 위해 작동하잖아:

쉬 캜 &quot mycommand";

  • It gets 실행하십시오 명령 줄 수 있는 bash 서브셸 smartupdate bash:

배시 - c &quot mybashcommand";

  • 모든 명령을 실행할 수 있는 배시 셸을 설정하여 맨 위에 떠날려하면 cron 사용자의 crontab:

쉘로 = /bin/bash

  • 이 명령을 사용할 경우, smartupdate 스크립트입니다 스크립트입니다 셔뱅 포함되어 있습니다.

/bin/bash!

해설 (5)

일부 시간대에 문제가 있었습니다. 실행하는 cron 은 새로 설치할 수 있는 시간대. 이 솔루션은 재시작하려면 cron 있었다.

sudo service cron restart
해설 (2)

절대 경로 스크립트에만 사용해야 합니다.

예를 들어, '/ bin / 그렙' 대신 '' 그렙 사용해야 합니다.

# m h  dom mon dow   command
0 0 *  *  *  /bin/grep ERROR /home/adam/run.log &> /tmp/errors

대신:

# m h  dom mon dow   command
0 0 *  *  *  grep ERROR /home/adam/run.log &> /tmp/errors

이는 특히 같은 명령을 실행할 때 사용할 수 있기 때문에 까다로운 쉘입니다. 그 이유는 같은 환경 변수 '길' '그' cron 없는 사용자로.

해설 (3)

Crontab 명령을 할 경우, cron 은 '%' 심볼일 항목이없습니다 해석할 수 있습니다. 그래서 모든 명령 '%' 를 사용한 경우 항목이없습니다 (사양명세 같은 형식의 일자 명령) 이 이스케이프입니다 합니다.

여기 있는 좋은 정보 및 기타: http://www.pantz.org/software/cron/croninfo.html

해설 (2)

Cron 것을 요구하고 있는 스크립트입니다 실행할 수 없습니다.

Chmod +x / path / to / 서류 '가' 를 실행하여 스크립트입니다 실행가능파일 이 문제를 해결하는 합니다.

해설 (2)

39 의 암호가 만료되었음을 user& 하는 것도 가능하다. # 39 의 암호를 만료시킬 root& 수 있다. You can '꼬리' 와 - f /var/log/cron.log cron 실패하고 암호란이 기된 볼 수 있습니다. 이렇게 하면 절대 만료시킬 비밀번호를 설정할 수 있습니다. x - 1 ',' passwd &lt username&gt.

일부 시스템 (Debian, unbuntu) 의 로깅하기 cron 기본적으로 활성화되어 있지 않습니다. 또는 /etc/rsyslog.d/50-default.conf /etc/rsyslog.conf 있는 선.

# cron.*                          /var/log/cron.log

('sudo 나노 /etc/rsyslog.conf') 주석 편집해야 할 수 있습니다.

cron.*                          /var/log/cron.log

그 후, 재시작하려면 통해 사이슬로그 합니다.

/etc/init.d/rsyslog restart

또는

service rsyslog restart 

출처: 활성화하십시오 crontab 로그인하십시오 Debian Linux

일부 시스템에서 파일의 cron 비활성화됨 기본적으로 별도의 로깅하기 (Ubuntu) 에 출연, 하지만 cron 관련 로그는 syslog 절실해졌습니다. 한 사용할 수 있습니다.

cat /var/log/syslog | grep cron -i

cron 관련 메시지를 볼 수 있습니다.

해설 (1)

어떻게 설명해야 할 경우 그를 크론조프 gui 애플리케이션 표시하십시오 사용해야 합니다.

예: Firefox 와 함께 출시 cron.

스크립트는 컨테인먼트하는 익스포트합니다 0 표시하십시오 '=' 세운다.

해설 (2)

39, m, I& 두렵도 권한만으로 문제가 매우 흔한 일입니다.

단, 일반적인 실행하십시오 root& crontab 에 있는 모든 것을 해결 방법은 사용하여 # 39 는 가끔 정말 안 좋은 생각. 분명히 설정값입니다 이벤트수정적절한 권한이 크게 묵과할 문제가 있다.

해설 (1)

불안한 cron 테이블 사용 권한

Cron table) 은 [거절됨] (http://bazaar.launchpad.net/ ~ ubuntu-branches/ubuntu/raring/cron/raring/view/head:/database.c # L380) 는 불안한 경우 해당 사용 권한

sudo service cron restart
grep -i cron /var/log/syslog|tail -2
2013-02-05T03:47:49.283841+01:00 ubuntu cron[49906]: (user) INSECURE MODE (mode 0600 expected) (crontabs/user)

함께 이 문제를 해결할

# correct permission
sudo chmod 600 /var/spool/cron/crontabs/user
# signal crond to reload the file
sudo touch /var/spool/cron/crontabs
해설 (1)

스크립트는 위치에 맞는. 이는 항상 있지만 절대 경로 사용) 에 관련된 스크립트입니다 아니고 마찬가지다. Cron 사용자의 작업 할 수 있는 cd '을 실행하기 전에 특정 디렉터리' 레이크 작업을 할 수 있으며, 예를 들어 응용 프로그램에 대한 올바른 응용 프로그램 레일 스크립트루트 com/go/downloads_kr 올릴 뿐 아니라 해당 데이터베이스 작업을 구성, etc.

따라서 crontab 항목이

      • / usr / bin / 레이크 db:session_purge RAILS_ENV 운영 '23' = 3

같은 게 더 낫다

,, 코드 class = &quot &lt &lt pre&gt bash&quot &gt.

      • cd / var / / 제작 / 현재 23 3 korea. &amp &; /usr/bin/rake db:session_purge RAILS_ENV = 운영 &lt /code&gt &lt /pre>;;;

또는, 계속 crontab 엔트리여야 및 리스토어할 간단해진다는 다양하다.

      • /home/&lt user&gt /scripts/session-purge.sh ',' 23 3.

다음 코드를 사용하여 user&gt /scripts/session-purge.sh ':' 에서 /home/<;

,, 코드 class = &quot &lt &lt pre&gt sh&quot &gt. cd /var/www/production/current /usr/bin/rake db:session_purge RAILS_ENV = 운영 &lt /code&gt &lt /pre>;;;

해설 (2)
  • 어떤 과거 * crontab 사양 협력했습니다 crontab 파일을 다른 이동할 때 무너질 수 있다. # 39, ve 옮기는 경우가 있기 you& 사양명세 crontab 파일이 crontab 파일 시스템에서 사용자에게 그 반대의 경우도 마찬가지입니다.

Cron 간에 서로 다른 작업 사양명세 포맷하십시오 users& # 39. crontab 파일이 (/ var / 스풀과 cron / / / / / 또는 / var / 스풀과 sername cron crontab sername) 및 시스템 crontab ('/etc/crontab' 과 '에서 파일을 /etc/cron.d').

39, & # 39 user& crontab 추가 필드를 시스템이 있다. 직전 명령을 실행할 수 있습니다.

  • '이 같은 내용의 조지랑 오류가 발생합니다. 명령을 찾을 수 없음 '*' 또는 '명령을 이동할 때 아웃해야 / etc / crontab (file)' 를 '/etc/cron.d user& # 39 의 crontab 파일이 있습니다.

반대로, cron 처럼 '는 오류뿐만 / usr / bin / 리스타르스리스 유효하지 않은 sername' 또는 이와 유사한 역동기화에 때 발생합니다.

해설 (0)

cron 은 스크립트입니다 호출 명령과 함께 - verbose 옵션

전 그 날 페일오버합니다 cron 스크립트입니다 입력 중에 포함되어 있기 때문에 난 롬폭 자동모드 스크립트입니다 쉐퍼드도 - verbose 옵션:

#!/bin/bash
some commands
tar cvfz /my/archive/file.tar.gz /my/shared/directory
come more commands

Fine 에서 실행할 때 실행했음 스크립트입니다 쉘로 때문에 자세한 정보 출력을 마이그레이션된 crontab 에서 실행할 때 실패했다 에서 실행되는 경우 쉘로 곳이 있지만, stdout 에서 실행되는 경우 crontab. # 39, & # 39, v& 분리하십시오 쉽게 고칠 수:

#!/bin/bash
some commands
tar cfz /my/archive/file.tar.gz /my/shared/directory
some more commands
해설 (2)

가장 흔한 이유는 cron 못할 것으로 잘못 밝혔다 "고 밝혔다. 오후 11:15 위한 실무 작업에 걸리는 지정할 수 있다 '' 대신 ' 23 스케줄링된 15 15 15 11' 또는 '11'. 또한 작업에 대해 안 된다 '는' 2-6 자정 이후에 요일, 월요일 ~ 금요일 자정 이후에 1-5 '아닌'. 일반적으로 특정 날짜에 문제가 아니라 우리가 ' ' 는 3일 3월 3 1 포락선으로 사용할 경우는 거의 없습니다. 잘 모르면 cron 스케줄링합니다 온라인으로 whitehouse. https://crontab.guru/. 확인하십시오.

'시간' 에서 지원되지 않는 옵션을 사용하여 같은 경우 다른 플랫폼에 작동합니까 2/3 사양명세를 장애가 발생할 수도 있습니다. 이것은 매우 유용한 옵션을 제외한 전 세계 어디서나 사용할 수 있습니다. 또한 여러 문제가 1-5 '또는' like '나는 실행하십시오 열거합니다 1.3,5'.

또 부적격 사용하여 경로에서 발생하는 문제입니다. 일반적으로 기본 경로는 '만' 그래서 /bin:/usr/bin 표준 명령을 실행할 수 있습니다. 일반적으로 이러한 디렉토리에는 don& # 39, 원하는 명령을 없다. 또한 스크립트에만 비표준 명령을 사용하여 영향을 줍니다. 다른 환경 변수를 사용할 수 없습니다.

기존 crontab 나를 완전히 빚어진 문제를 건드리지. 내가 지금 이 파일에서 데이터를 복구할 수 있는 기존 crontab 로드하십시오 복제본입니다. 'it gets "만약 사용하여 crontab 뻦 사방. 난 계속 crontab 에 ~ 이 복제본입니다 / bin. 그것은 전체에 대해 '선' # EOF 로 끝난다. 이는 다음과 같은 항목을 통해 매일 다시 로드했습니다 crontab

! /usr/bin/crontab pre&gt <;

리로드하려면 이 crontab

      • $ {} /bin/crontab&lt /pre&gt, 54 12 집.

위에서 실행되는 명령 실행 가능한 경로에 의존하고 있는 리로드하려면 crontab 충돌 crontab. 일부 시스템은 실행 파일을 지정하는 crontab 에 명령을 할 수 있습니다. 그럼 내가 자주 사용하는 경우 $ (hostname) 는 네트워크 공유 디렉토리에는 crontab. ',' 이름으로 절실해졌습니다. 그러면 결국 잘못된 crontab 에 로드되었는지 사례가 수정하십시오 잘못된 서버.

어떻게 해야 할 수 있으며, 임시 파일을 사용하여 백업하도록 로깅합니다 crontab 편집 (crontab - 내가 사용하는 유일한 시간 'e') 에 자동으로 뺐다. 예약 매개변수입니다 그러겄지 헤더도 이용할 수 있는 도움을 받고 있습니다. 나는 그들을 crontab 편집 때 사용자 경험이 될 것이라고 덧붙였다.

나는 엘리가 명령의세 사용자 입력을 필요로 하는 경우는 드물다. 이러한 페일오버합니다 crontab 아래에 있지만, 일부 협력합니다 입력입니다 리디렉션을.

해설 (3)

Ssh 를 통해 액세스하며 경우 계정에 로그인할 수 있는 것을 볼 수 있는 것이 아니라 에이전트에는 키 암호를 에이전트에는 잠겼음을 등의 이유로 인해 만료하고 또는 잘못된 암호란이 시도_횟수)

팜 시스템에서 사용하는 경우, 계정이 잠겨 크론조프 실행되지 이 막을 수 있다. (# 39 에 대해 이렇게 하는 것이 아니라, ve 테스트되었습니다 I& solris unbuntu)

이와 같은 메시지를 발견할 수 있습니다 / var / adm / 메시지:

&lt pre>; 24일 10월 07 51 00 미상자 cron [29024]: [ID 731128 오토리노이스] pam_unix_account: cron 시도중입니다 잠겨집니다 계정을 로컬에서 호스트입니다 미우저 검증하십시오 24일 10월 07 52tb 00 미상자 cron [29063]: [ID 731128 오토리노이스] pam_unix_account: cron 시도중입니다 잠겨집니다 계정을 로컬에서 호스트입니다 미우저 검증하십시오 24일 10월 07 53 00 미상자 cron [29098]: [ID 731128 오토리노이스] pam_unix_account: cron 시도중입니다 잠겨집니다 계정을 로컬에서 호스트입니다 미우저 검증하십시오 24일 10월 07 54 00 미상자 cron [29527]: [ID 731128 오토리노이스] pam_unix_account: cron 시도중입니다 잠겨집니다 계정을 로컬에서 호스트입니다 미우저 검증하십시오 &lt /pre>;

모든 것은 실행하십시오 해야 합니다.

&lt pre>;

passwd - u &amp USERNAME&gt lt;;;

&lt /pre>;

crontab 노력해야 할 수 있는 루트로 잠금해제합니다 에이전트에는, 그리고 다시.

해설 (0)

다음과 같은 명령을 경우

* * * * * /path/to/script >> /tmp/output

또한, t, t # 39 doesn& 작동합니까 진실이며당신이 can& 볼 수 있어 출력입니다 # 39 cron isn& # 39, t apc® 반드시 의미하는 것은 아니다. # 39, 갈 수 있는 스크립트입니다 줄바꿈할 및 출력물에는 stderr doesn& 전달할 수 없다 / tmp / 출력입니다. 이 경우, t 가 아니라 # 39 이 출력입니다 확인란 isn& 캡처을.

* * * * * /path/to/script >> /tmp/output 2>&1

to see if this 문제가 잡을 수 있습니다.

해설 (0)

I was 먹어서나 설치 쉘로 이전 트랜잭션까지 데이터베이스에서 데이터를 다른 스크립트입니다 스크립트입니다 삭제하시겠습니까 만듭니다. 작업의 일환으로 명이었지만 구성려면 매일 '자의적' 으로 실행할 경우 데이터베이스 작업에 시간이 로드하십시오 기능을 cron 은 낮음입니다.

내가 만든 마이크론조프 파일 ',' 을 (를) cron 스케줄링합니다 sername &amp. 명령과 복사됩니다 /etc/cron.d '대한' 디렉터리입니다. 내 두 정보:

  1. '파일을 실행할 수 있었다' 마이크론조프 스크립트루트 구동되어야 합니다.
  2. 난 이미 644 - 664 실행하십시오 파일의 사용 권한을 설정할 수 없을 것이라고 말했다.

/ Var / log / syslog 권한 문제로 '' 도 비슷한 상황이 표시됩니다.

Apr 24 18:30:01 ip-11-22-33-44 cron[40980]: (*system*) INSECURE MODE (group/other writable) (/etc/crontab)
Apr 24 18:30:01 ip-11-22-33-44 cron[40980]: (*system*) INSECURE MODE (group/other writable) (/etc/cron.d/user)

'선 () 은 첫 번째 파일과 파일 i / etc / crontab' 나중에 '에서' /etc/cront.d 했다.

해설 (0)