그래서 git/svn/p4 저장소를 가져오고 데이터베이스에 일부 쓰기를 수행하는 Python 스크립트가 있습니다.
스크립트를 자동화하고 싶고 시스템 로그에 표시된 내용을 보면 스크립트가 실행 중이고 출력을 파이프하려는 파일도 생성되고 있지만 파일이 비어 있습니다. 크론 작업은 다음과 같습니다.
10 04 * * * user /usr/bin/python2.7 /home/user/script.py -f someFlag > ~/cronout.log 2&>1
조금 당황스러워서 어디서부터 시작해야 할지 모르겠습니다. 이것이 키체인 비밀번호 등에 대한 요구사항일 수 있다고 생각했습니다. 어떤 아이디어라도 도움이 될 것입니다!
답변1
tee를 사용하여 출력을 가져옵니다.
tee
표준 입력/출력에서 읽어 파일에 씁니다. 내 요구 사항 중 하나를 지원하는 Python 스크립트가 있지만 간단한 ">" 리디렉션이 실패합니다. Tee는 출력을 캡처하는 방법입니다.
귀하의 라인은 다음과 같아야합니다 :
10 04 * * * user /usr/bin/python2.7 /home/user/script.py -f someFlag | tee -a ~/cronout.log 2>&1
이 시도:Python 스크립트를 /usr/bin/ 디렉터리의 #!/bin/bash 스크립트로 래핑합니다.
그런 다음 줄을 바꾸십시오.
10 04 * * * user /usr/bin/myPythonWrapperInBash& > /path/to/log/out 2>&1
티콜 안내
- [-a] 파일을 추가합니다.
- 플래그 없이 일반 호출을 수행하면 파일을 덮어쓰게 되며 로그가 손실됩니다.
답변2
문제는 Python 스크립트에 필요한 환경 변수에 있었고 스크립트 초기에 나타나서 출력되기 전에 스크립트를 중단한 것으로 나타났습니다.
Cron에는 기존 환경이 없습니다.
또한 git 저장소를 가져오려면 ssh 비밀번호가 필요했는데, 키체인을 사용하여 이를 해결할 수 있었습니다.
도움말 사용이 블로그 게시물그리고 일부 bash 래퍼 스크립트를 사용하여 모든 것을 작동하고 자동화할 수 있었습니다.