crontab이 작동하지 않는 이유는 무엇이며 어떻게 해결할 수 있습니까?


225

이것은 cron & crontab 사용에 관한 정식 질문 입니다.

커뮤니티는 귀하의 질문에 대한 답변이 아래에 있음을 상당히 확신하기 때문에 여기로 안내되었습니다. 귀하의 질문에 대한 답변이 아래에 없으면 해당 답변을 통해 커뮤니티가 귀하를 도울 수있는 정보를 수집 할 수 있습니다. 이 정보는 원래 질문으로 편집해야합니다.

' 내 crontab이 작동하지 않는 이유는 무엇이며 어떻게 해결할 수 있습니까? 아래에서 볼 수 있습니다. 이것은 croncrontab이 강조 표시된 상태 에서 시스템을 처리합니다.


2
이것은 AskUbuntu에서 crontab이 작동하지 않는이유 입니다.
Dan Dascalescu

1
@DanDascalescu 더 담당자를 얻을 필요가 에릭 것 같다
내가 가장 어리석은 사람이다

1
방금 Server Fault SE에 가입 했으므로 101 개 담당자 만이 질문에 -1을 주려고합니다. 이 질문은 담당자에게만 전달 되었습니까? @IamtheMostStupidPerson 당신과 완전히 동의합니다 ...
Holyprogrammer

이 13 살짜리 파다완의 서구 이데올로기는 초신성과 같이 교과서와 실명입니다. 두 질문에 모두 대답하려면, 그렇습니다. 담당자를 위해 해냈으며 Eric은 더 많은 명성을 얻어야합니다. 더 많은 담당자가 필요합니까 ?? 더. youtu.be/IaDt9T7BF38?t=262
Eric

답변:


317

모든 crontab 관련 문제 / 문제 해결 방법 (Linux)


이것은이다 커뮤니티 위키 이 대답에 잘못된 것을 발견하거나 다음을 편집하십시오 추가 정보가있는 경우.


먼저, 기본 용어 :

  • cron (8) 은 예약 된 명령을 실행하는 데몬입니다.
  • crontab (1) 은 사용자 crontab (5) 파일을 수정하는 데 사용되는 프로그램입니다.
  • crontab (5) 는 cron (8)에 대한 지침이 포함 된 사용자 별 파일입니다.

다음으로, cron에 대한 교육 :

시스템의 모든 사용자는 자신의 crontab 파일을 가질 수 있습니다. 루트 및 사용자 crontab 파일의 위치는 시스템에 따라 다르지만 일반적으로 아래에 있습니다 /var/spool/cron.

시스템 전체 /etc/crontab파일이 있으며 /etc/cron.d디렉토리에는 cron에서 읽고 처리하는 crontab 조각이 포함될 수 있습니다. 일부 Linux 배포판 (예 : Red Hat)에는 /etc/cron.{hourly,daily,weekly,monthly}루트 권한이있는 스크립트가 디렉토리로, 매시간 / 일 / 주 / 월마다 실행될 스크립트가 있습니다.

root는 항상 crontab 명령을 사용할 수 있습니다. 일반 사용자에게는 액세스 권한이 부여되거나 부여되지 않을 수 있습니다. 명령을 사용하여 crontab 파일을 편집 crontab -e하고 저장하면 crond는 기본 유효성을 검사하지만 crontab 파일이 올바르게 구성되지는 않습니다. cron.denycron을 사용할 수없는 사용자를 지정 하는 파일이 있습니다 . cron.deny파일 위치는 시스템에 의존하고 모든 사용자가 크론를 사용할 수 있도록 할 삭제 될 수 있습니다.

컴퓨터의 전원이 켜져 있지 않거나 crond 데몬이 실행 중이 지 않고 명령 실행 날짜 / 시간이 지난 경우 crond는 캐치하지 않고 과거 쿼리를 실행합니다.

crontab 관련 사항, 명령을 구성하는 방법 :

crontab 명령은 한 줄로 표시됩니다. \여러 줄에 걸쳐 명령을 확장하는 데 사용할 수 없습니다 . 해시 ( #) 기호는 주석을 나타내며 해당 행의 모든 ​​항목은 cron에서 무시됩니다. 선행 공백과 빈 줄은 무시됩니다.

%명령에 퍼센트 ( ) 기호를 사용할 때는 매우주의하십시오 . 그들이 탈출하지 않는 한 그들은 \%개행으로 변환되며 탈출하지 않은 첫 번째 이후의 모든 것이 %stdin의 명령으로 전달됩니다.

crontab 파일에는 두 가지 형식이 있습니다.

  • 사용자 크론 탭

    # Example of job definition:
    # .---------------- minute (0 - 59)
    # |  .------------- hour (0 - 23)
    # |  |  .---------- day of month (1 - 31)
    # |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
    # |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7)
    # |  |  |  |  |
    # *  *  *  *  *   command to be executed
    
  • 시스템 전체 /etc/crontab/etc/cron.d조각

    # Example of job definition:
    # .---------------- minute (0 - 59)
    # |  .------------- hour (0 - 23)
    # |  |  .---------- day of month (1 - 31)
    # |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
    # |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7)
    # |  |  |  |  |
    # *  *  *  *  * user-name  command to be executed
    

후자는 사용자 이름이 필요합니다. 명령은 명명 된 사용자로 실행됩니다.

행의 처음 5 개 필드는 명령을 실행해야하는 시간을 나타냅니다. 시간 사양에 숫자 또는 해당 날짜 / 월 이름을 사용할 수 있습니다.

  • 필드는 공백 또는 탭으로 구분됩니다.
  • 쉼표 ( ,)는 1,4,6,8에서 실행되는 1,4,6,8과 같은 목록을 지정하는 데 사용됩니다.
  • 범위는 대시 ( -) 로 지정되며 1과 3 사이, 9와 12 사이를 의미하는 1-3,9-12와 같은 목록과 결합 될 수 있습니다.
  • /문자는 2에서 시작하여 2에서 5 (2,7,12,17,22 ...)를 의미하는 단계 (예 : 2/5)를 도입하는 데 사용될 수 있습니다. 그들은 끝을 지나치지 않습니다.
  • *필드에서 별표 ( )는 해당 필드의 전체 범위 (예 : 0-59분 필드)를 나타냅니다 .
  • 범위와 단계를 결합 할 수 있습니다. 예를 들어 */2관련 필드의 최소값부터 시작한 후 2 (예 : 분 (0,2 ... 58), 1 (달) (1,3 ... 11) 등)

크론 명령 디버깅

메일을 확인하십시오!

기본적으로 cron은 명령의 모든 출력을 명령을 실행중인 사용자에게 메일로 보냅니다. 출력이 없으면 메일이 없습니다. cron이 다른 계정으로 메일을 보내려면 crontab 파일에서 MAILTO 환경 변수를 설정할 수 있습니다.

MAILTO=user@somehost.tld
1 2 * * * /path/to/your/command

출력을 직접 캡처

stdout 및 stderr을 파일로 리디렉션 할 수 있습니다. 출력을 캡처하는 정확한 구문은 사용하는 쉘 크론에 따라 달라질 수 있습니다. 다음은 모든 출력을 파일에 저장하는 두 가지 예입니다 /tmp/mycommand.log.

1 2 * * * /path/to/your/command &>/tmp/mycommand.log
1 2 * * * /path/to/your/command >/tmp/mycommand.log 2>&1

로그를 봐

크론은 (당신의 설정에 따라) 시스템 로그를 통해 자사의 행동 종종로 이동 로그인 /var/log/cron또는 /var/log/syslog.

필요한 경우 예를 들어 cron 문을 필터링 할 수 있습니다

grep CRON /var/log/syslog 

이제 cron의 기본 사항을 살펴 보았습니다. 파일의 위치와 사용 방법 몇 가지 일반적인 문제를 살펴 보겠습니다.

cron이 실행 중인지 확인

cron이 실행되고 있지 않으면 명령이 예약되지 않습니다 ...

ps -ef | grep cron | grep -v grep

당신에게 뭔가를 가져와야합니다

root    1224   1  0 Nov16 ?    00:00:03 cron

또는

root    2018   1  0 Nov14 ?    00:00:06 crond

다시 시작하지 않으면

/sbin/service cron start

또는

/sbin/service crond start

다른 방법이있을 수 있습니다. 배포판이 제공하는 것을 사용하십시오.

cron은 제한된 환경에서 명령을 실행합니다.

사용 가능한 환경 변수는 매우 제한적일 수 있습니다. 일반적으로는 다음과 같은 정의 된 몇 가지 변수를 얻을 것이다 $LOGNAME, $HOME하고 $PATH.

특히 PATH로 제한되어 /bin:/usr/bin있습니다. "제 cron 스크립트가 작동하지 않습니다"문제의 대부분은이 제한적인 경로로 인해 발생합니다 . 명령이 다른 위치에있는 경우 몇 가지 방법으로이 문제를 해결할 수 있습니다.

  1. 명령의 전체 경로를 제공하십시오.

    1 2 * * * /path/to/your/command
    
  2. crontab 파일에 적절한 경로를 제공하십시오

    PATH=/usr:/usr/bin:/path/to/something/else
    1 2 * * * command 
    

명령에 다른 환경 변수가 필요한 경우 crontab 파일에서도 변수를 정의 할 수 있습니다.

cron은 cwd == $ HOME으로 명령을 실행합니다.

실행하는 프로그램이 파일 시스템에서 상주하는 위치에 관계없이 cron이 실행될 때 프로그램의 현재 작업 디렉토리 는 사용자의 홈 디렉토리가 됩니다. 프로그램의 파일에 액세스하는 경우 상대 경로를 사용하거나 모든 곳에서 정규화 된 경로를 사용하고 모든 사람에게 혼란을 줄이려면이 점을 고려해야합니다.

내 crontab의 마지막 명령이 실행되지 않습니다

Cron에서는 일반적으로 명령을 새 줄로 종료해야합니다. crontab을 편집하십시오. 마지막 명령이 포함 된 줄의 끝으로 이동하여 새 줄을 삽입하십시오 (Enter를 누르십시오).

crontab 형식 확인

/ etc / crontab에 대해 crontab 형식의 crontab 또는 /etc/cron.d의 조각을 사용할 수 없으며 그 반대의 경우도 사용할 수 없습니다. 사용자 형식 crontab은 행의 6 번째 위치에 사용자 이름을 포함하지 않지만 시스템 형식 crontab은 사용자 이름을 포함하고 해당 사용자로 명령을 실행합니다.

파일을 /etc/cron.{hourly,daily,weekly,monthly}에 넣고 실행하지 않습니다

  • 파일 이름이 연장 볼이없는 것을 확인 실행 - 부품
  • 파일에 실행 권한이 있는지 확인하십시오.
  • 스크립트를 실행할 때 사용할 항목을 시스템에 알려주십시오 (예 : #!/bin/sh맨 위에 놓기 )

크론 날짜 관련 버그

최근에 사용자 또는 시스템 업데이트, 시간대 또는 기타로 인해 날짜가 변경된 경우 crontab은 이상하게 동작하기 시작하고 때로는 작동하지 않는 이상한 버그를 나타냅니다. 이것은 시간이 그 아래에서 바뀔 때 "원하는 것을 행하려고"하는 crontab의 시도입니다. 시간이 변경되면 "분"필드가 적용되지 않습니다. 이 시나리오에서는 별표 만 허용됩니다. cron을 다시 시작하고 인터넷에 연결하지 않고 다시 시도하십시오 (따라서 날짜가 시간 서버 중 하나로 재설정 될 수 없음).

다시 백분율 표시

퍼센트 기호에 대한 조언을 강조하기 위해 cron이 그와 함께하는 일의 예는 다음과 같습니다.

# cron entry
* * * * * cat >$HOME/cron.out%foo%bar%baz

3 줄을 포함하는 ~ / cron.out 파일을 만듭니다.

foo
bar
baz

이것은 date명령을 사용할 때 특히 방해가됩니다 . 퍼센트 부호를 피하십시오

* * * * * /path/to/command --day "$(date "+\%Y\%m\%d")"

'제한된 env'섹션에서 LD_LIBRARY_PATH에 공유 라이브러리를 찾을 수 없기 때문에 cron 태스크가 실패하는 경우 추가 디렉토리를 설정해야 할 수도 있습니다.
DavidJ

35 1,5-23 / 2 * * * do_something 대신 35,1,5,7,9, ..와 같은 것을 작성할 수도 있습니다. * * * 또한이 crontab.guru 는 입력 한 내용을 번역합니다 인간의 언어.
Dennis Nolte

1
출력 캡처가 작동하지 않습니다. sh 쉘 때문일 수 있습니다. 나는 이것이 더 휴대 가능하다고 생각한다. ... /path/to/your/command >/tmp/mycommand.log 2>&1
chus

이것은 나를 위해 일했다 :sudo apt-get install postfix
jmunsch

크론 작업은 파일의 크기에 따라 달라 집니까? cron을 사용하여 파이썬에서 간단한 hello world를 실행했기 때문에 효과가있었습니다. 그러나 내 두 번째 코드는 약간 무겁고 정상적으로 실행되지만 cron에서는 파일에 출력을주지 않습니다.
Devendra Bhat

22

데비안 리눅스와 그 파생물 (우분투, 민트 등)에는 크론 작업이 실행되지 못하게하는 특징이 있습니다. 특히의 파일은 다음 /etc/cron.d/etc/cron.{hourly,daily,weekly,monthly}같아야합니다.

  • 루트가 소유
  • 루트 만 쓰기 가능
  • 그룹 또는 다른 사용자가 쓸 수 없음
  • 점이없는 이름이 있습니다 . 또는 다른 특수 문자이지만 '-'및 '_'입니다.

마지막은 의심하지 않는 사용자를 정기적으로 아프게합니다. 이름이 폴더 중 하나에 모든 스크립트 특히 whatever.sh, mycron.py, testfile.pl, 등을 할 수 없습니다 이제까지 실행.

필자의 경험에 따르면,이 특정 요점은 데비안과 파생 상품에서 실행되지 않는 크론 작업의 가장 흔한 이유였습니다.

man cron필요한 경우 자세한 내용을 참조하십시오 .


19

cronjob이 작동을 중지하면 암호가 만료되지 않았는지 확인하십시오. 암호가 있으면 모든 cron 작업이 중지됩니다. 아래의
메시지와 /var/log/messages유사하게 사용자 인증 관련 문제가 표시됩니다.

(username) FAILED to authorize user with PAM (Authentication token is no longer valid; new one required)


2
방금 이것도 얻었습니다 (오류 메시지 파일 / var / log / syslog). 필자의 경우 DigitalOcean 상자는 만들 때 루트 암호 (선택적)를 다른 암호로 재설정하고 거기에 가서 변경할 때까지 모든 크론 작업이 실행되지 않습니다. 버머. 수정은 다음과 같습니다sudo -u root passwd
rogerdpack

12

흔하지 않은 일정

Cron은 모두 매우 기본적인 스케줄러로 간주되며 구문을 통해 관리자가 좀 더 일반적이지 않은 스케줄을 쉽게 작성할 수는 없습니다.

일반적으로 " command5 분마다 실행" 되는 다음 작업을 고려하십시오 .

*/5 * * * * /path/to/your/command

대:

*/7 * * * * /path/to/your/command

항상 7 분마다 실행 되는 것은 아닙니다command .

기억 /문자 단계를 소개하는 데 사용할 수 있지만 단계는 일련의 예의 끝을지나 포장하지 않는 것이 */7분에서 매 7 분 일치 0-59 , 0,7,14,21,28,35,42,49 즉 56 만 1 시간 다음 사이에 있을 것입니다 배치 사이에만 사분 후, 00:56새로운 시리즈가 시작 01:00, 01:07등 (및 배치가 실행되지 않습니다 01:03, 01:10, 01:17등).


대신 무엇을해야합니까?

여러 배치 생성

단일 cron 작업 대신 원하는 스케줄로 결합 된 여러 배치를 작성하십시오.

예를 들어 40 분마다 배치를 실행하려면 (00:00, 00:40, 01:20, 02:00 등) 두 개의 배치를 작성하십시오. 하나는 짝수 시간에 두 번 실행되고 다른 하나는 홀수 시간에만 실행됩니다.

# The following lines create a batch that runs every 40 minutes i.e.

# runs on   0:00, 0:40,        02:00, 02:40         04:00 etc to 22:40
0,40 */2 * * * /path/to/your/command

# runs on               01:20,               03:20,       etc to 23:20
20 1/2 * * * /path/to/your/command

# Combined: 0:00, 0:40, 01:20, 02:00, 02:40, 03:20, 04:00 etc.

배치를 덜 자주 실행하십시오

여러 배치로 분류하기 어려운 7 분마다 배치를 실행하는 대신 10 분마다 실행하면됩니다.

일괄 처리를 더 자주 시작하십시오 (하지만 여러 일괄 처리가 동시에 실행되지 않도록 방지)

배치 런타임이 증가 / 변동하고 배치가 동일한 배치의 후속 실행이 겹치거나 동시에 실행되는 것을 방지하기 위해 약간의 추가 안전 여유가 있기 때문에 많은 홀수 스케줄이 발전합니다.

대신 다르게 ​​생각하고 이전 실행이 아직 완료되지 않았을 때 정상적으로 실패하지만 그렇지 않으면 실행되지 않는 cronjob을 작성하십시오. 이 Q & A를보십시오 :

* * * * * /usr/bin/flock -n /tmp/fcj.lockfile /usr/local/bin/frequent_cron_job 

/ usr / local / bin / frequent_cron_job의 이전 실행이 완료되면 거의 즉시 새 실행이 시작됩니다.

배치를 더 자주 시작하십시오 (하지만 조건이 맞지 않으면 정상적으로 종료)

cron 구문이 제한 되어 있으므로 일괄 작업 자체 (또는 기존 일괄 작업 주위의 래퍼 스크립트)에 더 복잡한 조건과 논리배치 할 수 있습니다 . 이를 통해 자주 사용하는 스크립팅 언어의 고급 기능을 활용하여 코드에 주석을 달고 crontab 항목 자체에서 읽기 어려운 구문을 방지 할 수 있습니다.

bash에서 seven-minute-job그러면 다음과 같이 보일 것입니다.

#!/bin/bash
# seven-minute-job
# This batch will only run when 420 seconds (7 min) have passed
# since the file /tmp/lastrun was either created or updated

if [ ! -f /tmp/lastrun ] ; then
    touch /tmp/lastrun
fi

if [ $(( $(date +%s) - $(date -r /tmp/lastrun +%s) )) -lt 420 ] ; then
     # The minimum interval of 7 minutes between successive batches hasn't passed yet.
    exit 0
fi

####  Start running your actual batch job below

/path/to/your/command

#### actual batch job is done, now update the time stamp
date > /tmp/lastrun
#EOF

그런 다음 매분 안전하게 실행할 수 있습니다 (시도).

* * * * * /path/to/your/seven-minute-job

날짜가 1 사이의 어느 쪽도 없을 때 다른,하지만 비슷한 문제는 간단히 매주 월요일과 종료를 실행하는 배치 일정 등 매월 첫 번째 월요일 (또는 두 번째 수요일)에 실행되도록 배치를 예약하는 것 또는 7 및 요일은 월요일이 아닙니다.

#!/bin/bash
# first-monday-of-the-month-housekeeping-job

# exit if today is not a Monday (and prevent locale issues by using the day number) 
if [ $(date +%u) != 1 ] ; then
  exit 0
fi

# exit if today is not the first Monday
if [ $(date +%d) -gt 7 ] ; then
  exit 0
fi

####  Start running your actual batch job below

/path/to/your/command

#EOF

그러면 매주 월요일마다 안전하게 (시도) 실행할 수 있습니다.

0 0 * * 1 /path/to/your/first-monday-of-the-month-housekeeping-job

크론을 사용하지 마십시오

요구 사항이 복잡한 경우 복잡한 일정 (여러 서버에 분산)을 실행하도록 설계되고 트리거, 작업 종속성, 오류 처리, 재시도 및 재시도 모니터링 등을 지원하는 고급 제품을 사용하는 것이 좋습니다. 업계 전문 용어는 "기업"입니다. " 작업 스케줄링 및 / 또는"워크로드 자동화 ".


8

PHP 특정

다음과 같은 cron 작업이있는 경우 :

php /bla/bla/something.php >> /var/logs/somelog-for-stdout.log

그리고 오류가 예상되는 경우 오류가 귀하에게 전송 될 것이지만 확인하지는 마십시오.

기본적으로 PHP는 STDOUT에 오류를 보내지 않습니다. @ 참조 https://bugs.php.net/bug.php?id=22839

이 문제를 해결하려면 cli`s php.ini 또는 라인 (또는 PHP의 bash 래퍼)에 다음을 추가하십시오.

  • --define display_startup_errors = 1
  • --define display_errors = 'stderr'

첫 번째 설정을 사용하면 '메모리 oops'와 같은 두 번째 치명적을 가질 수 있으며 두 번째는 STDERR로 모두 리디렉션됩니다. 잠을 잘 수있을 때만 모든 것이 기록 된 것이 아니라 루트 메일로 전송됩니다.


2
이 오류 보고서는 2007 년 패치가 PHP 5.2+ 브랜치에 추가되면서 종료되었습니다. 이것이 꼭 필요합니까? 방금 PHP 5.4를 시도했지만 정상적으로 작동하는 것 같습니다. (여전히 PHP 4에는 필요합니다).
Xeoncross

@Xeoncross 답변 날짜 참조 :)
gaRex

1
그렇습니다 .2013 년에 답변 한 후 티켓이 '07 년에 돌아 왔습니다.
Xeoncross

0

완전성을 위해 여기에서 내 대답 추가하고 잠재적으로 유용한 다른 리소스를 추가 하십시오 .

cron사용자가 다른이 $PATH당신보다 :

사용자가 crontab항목에 대해 자주 겪는 문제점 은 로그인 한 사용자와 cron다른 방식으로 실행 되는 것을 잊어 버리는 것입니다 environment. 예를 들어, 사용자는 자신의 $HOME디렉토리 에 프로그램 또는 스크립트를 작성 하고 다음 명령을 입력하여 실행합니다.

$ ./certbot ... 

명령은 명령 줄에서 완벽하게 실행됩니다. 그런 다음 사용자는 해당 명령을에 추가 crontab하지만 작동하지 않는 것을 발견했습니다.

*/10 * * * * ./certbot ....

이 경우 실패한 이유 ./cron사용자의 로그인 위치와 다른 위치 이기 때문입니다. 즉, environment다릅니다! PATH는의 일부 environment이며 일반적으로 cron사용자 마다 다릅니다 . 이 문제를 복잡하게하면 environmentfor cron는 모든 * nix 배포판 에서 동일하지 않으며 여러 버전이 있습니다.cron

이 특정 문제에 대한 간단한 해결책은 cron사용자 에게 crontab항목 의 전체 경로 지정을 제공하는 것입니다.

0 22 * * * /path/to/certbot .....

cron사용자 는 무엇입니까 environment?

어떤 경우에는 시스템에 대한 완전한 environment사양 을 알아야 cron할 수도 있습니다 (또는 궁금 할 수도 있습니다). 무엇이다 environment에 대한 cron사용자, 그리고 어떻게 우리와 다른가요? 또한 environment다른 cron사용자의 정보 를 알아야 할 수도 있습니다 ( root예 : root사용자 가 무엇을 environment사용하고 cron있습니까? 이것을 배우는 한 가지 방법은 다음과 cron같이 알려주는 것입니다.

  1. ~/다음과 같이 (또는 선택한 편집기를 사용하여) 홈 디렉토리 ( ) 에 쉘 스크립트를 작성하십시오 .
$ nano ~/envtst.sh
  1. 시스템 / 사용자를 조정 한 후 편집기에 다음을 입력하십시오.
#!/bin/sh 
/bin/echo "env report follows for user "$USER >> /home/you/envtst.sh.out 
/usr/bin/env >> /home/you/envtst.sh.out 
/bin/echo "env report for user "$USER" concluded" >> /home/you/envtst.sh.out
/bin/echo " " >> /home/you/envtst.sh.out
  1. 파일을 저장하고 편집기를 종료 한 후 파일 권한을 실행 파일로 설정하십시오.
$ chmod a+rx ~/envtst.sh
  1. 방금 만든 스크립트를 실행하고의 출력을 검토하십시오 /home/you/envtst.sh.out. 이 출력은 다음 $USER과 같이 로그인 한 현재 환경을 표시합니다 .
$ ./envtst.sh $$ cat /home/you/envtst.sh.out
  1. crontab편집을 위해 엽니 다 .
$ crontab -e -u root
  1. 하단에 다음 줄을 입력하십시오 crontab.
* * * * *  /home/you/envtst.sh >> /home/you/envtst.sh.err 2>&1

답변 : 출력 파일 /home/you/envtst.sh.out에는 environment"루트 크론 사용자"에 대한 목록이 포함됩니다 . 그 사실을 알았 으면 crontab그에 따라 입력을 조정하십시오 .

crontab출품작에 필요한 일정을 지정할 수 없습니다 .

의 일정 항목 crontab은 물론에 정의되어 man crontab있으며이 내용을 읽어야합니다. 그러나 man crontab일정을 읽고 이해하는 것은 서로 다른 두 가지입니다. 또한 일정 사양에 대한 시행 착오가 매우 지루 해질 수 있습니다 . 다행스럽게도 crontab 전문가 인 도움이되는 리소스가 있습니다 . . 일정 사양을 입력하면 일반 영어로 일정이 설명됩니다.

마지막으로 여기에 다른 답변 중 하나와 중복 될 위험이 crontab있으므로 예약해야 할 작업이 하나 있기 때문에 단일 항목으로 제한된다고 생각하지 마십시오 . crontab필요한 일정을 얻는 데 필요한만큼의 항목을 자유롭게 사용할 수 있습니다.

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