centOS 6.5의 크론 작업

centOS 6.5의 크론 작업

나는 새로운 crontab 항목을 삽입하기 위해 이 2개의 참조를 사용했습니다.

빨간 모자

우분투

새로운 bash 파일을 생성하여 /usr/bin으로 옮겼습니다. 해당 sh 파일에는 루트 사용자 및 관리자 그룹에 대한 실행 권한이 있습니다. bash 파일은 로그 파일에 한 줄을 표시한 다음 Java 프로그램을 호출합니다. sh 파일을 루트로 수동으로 테스트했습니다. 잘 실행됩니다. 내 crontab 항목은 다음과 같습니다 ...

 @hourly      /usr/bin/foo.blah.sh

매시간 정각에 실행된다고 되어있습니다. echo 문이 로그 파일에 인쇄되지 않으므로 crond가 전혀 호출하지 않는 것 같습니다. 또한 "top"에서 프로세스를 시각적으로 모니터링해도 작업이 나타나지 않습니다. cron 데몬이 실행 중인지 확인하기 위해 "service crond status"를 실행했습니다. 문서에는 데몬을 다시 시작할 필요가 없다고 나와 있습니다. 내가 또 무엇을 잘못하고 있을까요?

답변1

실제로 crontab 항목이 어디에 있는지는 밝히지 않았지만 를 crontab -l출력하는 귀하의 의견을 토대로 no crontab for root다양한 cron에 해당하는 파일이 포함된 /etc/cron.* 디렉토리 중 하나에 파일을 추가했다고 추측할 위험이 있습니다. 직업. 이 답변은 그렇다고 가정합니다.

해당 파일은 를 통해 편집하는 사용자별 crontab과 약간 다른 형식을 갖습니다 crontab -e. 구체적으로,사용자 이름 필드가 포함되어 있습니다.사용자별 crontab에 포함되지 않은 명령 바로 앞(적어도 내 시스템에서는 /var/spool/cron/crontabs에 저장되어 있지만 해당 정보를 남용하지 마십시오. 정확한 위치는 구현 세부 사항입니다.) 당신이 실행하고 있는 cron 데몬의 파일을 관리해야 하며, 해당 파일을 관리하기 위해 문서화된 인터페이스를 사용해야 합니다.

결과적으로,너는 변해야 해

@hourly      /usr/bin/foo.blah.sh

에게

@hourly user /usr/bin/foo.blah.sh

user스크립트를 실행할 사용자 계정의 이름은 어디에 있습니까? 그러면 정상적으로 실행될 것입니다.

root꼭 필요한 경우가 아니면 크론 작업을 실행하지 말 것을 진심으로 권장합니다 . 수퍼유저로 무엇이든 하는 것은 항상 보안 위험이 있습니다. 가능하다면 스크립트에 제한된 액세스 권한이 있는 자체 계정을 부여하십시오. (이것은 최소 권한의 원칙입니다. 즉, 해당 작업을 수행하는 데 필요한 최소한의 권한입니다.) 일반적으로 다음을 수행해야 합니다.시스템 로컬 파일을 /usr/local에 저장시스템 패키지 관리자와의 충돌을 피하기 위해 또한 혼란을 피하기 위해 루트 권한이 필요한 bin 디렉토리에 항목을 두지 말고 대신 sbin을 사용하십시오.

답변2

과거에는 cron에 스크립트를 추가할 때 항상 다음과 같이 sh를 사용하여 작업을 진행했습니다.

@hourly    sh /usr/bin/foo.blah.sh

관련 정보