crontab은 /etc/crontab에 나열된 명령을 실행하지 않습니다.

crontab은 /etc/crontab에 나열된 명령을 실행하지 않습니다.

nfexpire그래서 crontab이 실행해야 하는 몇 가지 명령 목록이 있습니다 /etc/crontab. 한동안 잘 작동했지만 최근에는 완전히 작동을 멈췄습니다. 다른 모든 작업은 실행됩니다 /etc/crontab. crontab 데몬이 실행 중인지 확인했습니다.systemctl status crond

오류가 있는지 확인 /var/log/cron하고 /var/log/messages실행했지만 아무 것도 발견되지 않았습니다.journalctl

터미널을 통해 명령이 실행될 수 있는지 확인했으므로 문제는 crontab 어딘가에 있습니다.

문서 /etc/crontab:

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# For details see man 4 crontabs

# 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) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed
  
30 03 01 * * nfexpire -e "something"
30 03 01 * * nfexpire -e "something"
30 03 01 * * nfexpire -e "something"
30 03 01 * * nfexpire -e "something"
30 03 01 * * nfexpire -e "something"
30 03 01 * * nfexpire -e "something"

아, 끝에 줄 바꿈이 있는지 확인했습니다.

어쩌면 권한 문제가 있는 걸까요?

-rw-r--r--. 1 root root 891 Feb  6  2020 /etc/crontab

하지만 이 설정으로 몇 달 동안 아무 문제 없이 실행되고 있어서, 무엇을 변경해야 할지 모르겠습니다.

추가 정보

시스템: 센토스 7

커널: 3.10.0-1160.el7.x86_64

답변1

이는 구문 문제입니다. 이 파일에는 추가 필드를 추가해야 합니다.사용자 이름:

30 03 01 * * username nfexpire -e "something"

그러면 cron 작업이 username.

기타 고려 사항.

  • 모든 작업이 시작되는지 여부동시에? 너무 좋지 않아. 이 경우 모든 작업을 실행하고 하나의 작업만 갖도록 스크립트를 만드는 것이 좋습니다.
  • /etc/crontab을 전혀 편집하지 않는 것이 가장 좋습니다. 루트 소유 작업의 경우 드롭 디렉터리 /etc/cron.d및 기타 항목 /etc/cron.*(실행 가능한 스크립트 배치)을 사용하는 경우 이러한 작업의 시작 시간은 그다지 중요하지 않으며 중요한 것은 작업 기간(매일, 매주 등)뿐입니다. 사용자 실행 작업을 실행하려면 전용 사용자 crontab을 사용하십시오. crontab -e -u username작업은 해당 특정 crontab이 속한 사람 아래에서 실행되므로 사용자 이름 필드를 생략할 수 있습니다. 그럼에도 불구하고 이렇게 하면 시스템 업데이트가 crontab 항목을 방해하지 않습니다.
  • systemd타이머 사용을 고려해보세요 .

답변2

/etc/crontab 파일은 root각 명령 앞에 있어야 합니다.

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# For details see man 4 crontabs

# 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) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed
  
30 03 01 * * root nfexpire -e "something"
30 03 01 * * root nfexpire -e "something"
30 03 01 * * root nfexpire -e "something"
30 03 01 * * root nfexpire -e "something"
30 03 01 * * root nfexpire -e "something"
30 03 01 * * root nfexpire -e "something"

관련 정보