시간당 크론 작업이 실행되었는지 어떻게 알 수 있습니까?


26

나는라는 파일을 만든 ntpdate에서을/etc/cron.hourly

#!/bin/sh
/usr/sbin/ntpdate-debian
date > /tmp/william_tmp
date > /william_tmp
date > ~/william_tmp
echo test

이 파일에 Chmod 755도 사용했습니다.

그러나 파일이 실행되었는지 여부를 알 수 없습니다!

파일은 3 개의 디렉토리에 작성되지 않습니다.

수동으로 실행 cd / && run-parts --report /etc/cron.hourly하면 파일이 생성되고 에코가 나타납니다.

누구나 작동하는지 테스트하기 위해 (이상적으로 단계별로) 지침을 추천 할 수 있습니까?

답변:


25

크론에 대한 하나의 주요 함정은 크론이 매우 제한된 쉘 환경에서 실행된다는 것입니다. 결과적으로 많은 변수가 환경으로 내 보내지 않으며 주로 $ PATH입니다. 당신이, 실행 파일에 모든 절대 경로를 사용하여 같은 일반적인 기능을 포함하여 확인 echo, uptime, date전체 경로를 사용하는 모든 필요 등 ( /bin/echo, /bin/date, /usr/bin/uptime). 실행 파일의 경로를 결정하려면 다음 which과 같이 명령을 사용할 수 있습니다 which echo.-그러면 해당 도구의 전체 경로가 표시됩니다.


채팅에서 논의했듯이, 이것에 감사드립니다. 다른 누군가에게 도움이되기를 바랍니다 ... ntpdate의 가을 경로를 수행하는 동안 Windows에 익숙하고 echo / date가 "내장"되었으므로 방금 전 경로가 필요하다고 생각합니다. 리눅스에 대해 더 많이 배우면 완벽하게 이해됩니다!
wilhil 2016 년

36

/var/log/syslog로그 파일을 살펴 봐야 합니다. 크론이 실행되면 다음과 같은 줄이 생깁니다.

Jun 11 19:09:01 penguin CRON[17376]: (root) CMD (  [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -depth -mindepth 1 -maxdepth 1 -type f -cmin +$(/usr/lib/php5/maxlifetime) ! -execdir fuser -s {} 2>/dev/null \; -delete)
Jun 11 19:17:01 penguin CRON[17799]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)

문제 해결 팁은 https://help.ubuntu.com/community/CronHowto#Troubleshooting_and_Common_Problems를 참조 하십시오.


Syslog에는 아무것도 없으며 그 링크에서 실패하는 이유를 알 수 없습니다. (
wilhil

1
syslog ( grep -i cron /var/log/syslog /var/log/syslog.1)에 항목이 없으면 cron 데몬이 실행 중인지 확인하십시오 ps uww -C cron. 프로세스가있는 행을 포함해야합니다.
Lekensteyn

오해의 소지가있어 죄송합니다. syslog에는 Cron 전체가 있으며이 명령과 관련이 없습니다. 매 시간마다 일부 작업이 실행되는 것을 알고 새 메일 알림을받습니다 ... AFAIK, 작동중인 작업은 crontab을에서, cron.hourly 아무것도 내가 작업려고하고있는 무슨이다 없다
wilhil

2

스크립트의 첫 줄 (인터프리터)을 다음과 같이 변경하십시오.

#!/bin/bash

또한 환경 변수 및 PATH 문제와 관련하여 과거에 문제가있었습니다. 통역사를 bash내 문제로 바꾼 후 사라졌습니다.


1

clearme.sh스크립트를 추가하면/etc/cron.hourly/

강력한 egrepawk를 사용하여 터미널 에서 CRON 작업을 필터링 하면됩니다 .

$ cat /var/log/syslog | egrep clearme | awk "{ print $1 }" > ~/Desktop/cronlog.txt

결과는 다음과 같습니다.

Jan 14 15:20:01 markets-dev CRON[10089]: (dminca) CMD (root /etc/cron.hourly/clearme.sh)
Jan 14 15:40:01 markets-dev CRON[18042]: (dminca) CMD (root /etc/cron.hourly/clearme.sh)
Jan 14 16:00:01 markets-dev CRON[22817]: (dminca) CMD (root /etc/cron.hourly/clearme.sh)
Jan 14 16:20:01 markets-dev CRON[28183]: (dminca) CMD (root /etc/cron.hourly/clearme.sh)
Jan 14 16:40:01 markets-dev CRON[411]: (dminca) CMD (root /etc/cron.hourly/clearme.sh)
Jan 14 17:00:01 markets-dev CRON[5442]: (dminca) CMD (root /etc/cron.hourly/clearme.sh)
Jan 14 17:20:01 markets-dev CRON[11935]: (dminca) CMD (root /etc/cron.hourly/clearme.sh)

모든 것을 단계별로 설명하려면 :

  1. cat / var / log / syslog- 시스템 로그 인쇄
  2. egrep clearme- 텍스트 clearme 가 포함 된 행만 선택
  3. awk "{print $ 1}" -텍스트 clearme 가 포함 된 행을 인쇄
  4. > ~ / Desktop / cronlog.txt - Desktop 디렉토리 에있는 cronlog.txt 파일로 결과를 출력합니다 .

네 번째 단계는 선택 사항입니다. 파일 대신 터미널에 결과를 인쇄합니다.

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