특정 사용자(xfeautomation) 및 Python 가상 환경으로 시간별 cron 작업을 실행하려고 합니다. 특정 사용자로 실행하는 경우 스크립트 위치를 PATH에 추가해야 합니까? 내 현재 크론 작업은 다음과 같습니다.
0 * * * * xfeautomation /opt/scripts/wf_venv/bin/python /opt/scripts/wf_api_linux.py 2>&l /opt/scripts/log.txt
이것이 올바른 방법인가요, 아니면 최적의 방법인가요? 티아
답변1
해당 사용자로 전환하세요.
sudo su - xfeautomation
달리다
crontab -e
빈 파일이 있는 파일 편집기가 나타납니다. 여기에 사용자 이름 없이 작업을 추가하고 저장합니다.
0 * * * * /opt/scripts/wf_venv/bin/python /opt/scripts/wf_api_linux.py 2>&l /opt/scripts/log.txt
확인:
sudo su - xfeautomation
crontab -l
또는
sudo crontab -u xfeautomation
답변2
특정 사용자로 실행하는 경우 스크립트 위치를 PATH에 추가해야 합니까?
현재와 같이 절대 경로를 사용하는 경우 일반적으로 PATH 환경 변수를 수정할 필요가 없습니다./opt/scripts/wf_venv/bin/python /opt/scripts/wf_api_linux.py 2>&l /opt/scripts/log.txt
sysadmin으로서 다른 사용자 ID로 실행되는 예약된 일괄 작업을 생성할 수 있는 몇 가지 옵션이 있습니다.
설명된 대로이 답변:해당 사용자에 대한 개인 crontab을 설정하십시오.. 개인 crontab의 작업은 항상 소유자의 사용자 ID로 실행됩니다.
관리자가 다른 사용자를 위해 개인 crontab을 설정하면 해당 사용자는 해당 cron 작업 사양을 수정 및 삭제하여 작업을 취소할 수 있습니다.또는 다음을 수행할 수 있습니다.시스템 crontab에서 시스템 작업 예약. 시스템 crontab(일반적으로
/etc/crontab
및/또는 의 드롭인 파일/etc/cron.d/
)은 루트가 소유하며 권한이 없는 사용자가 수정할 수 없습니다. 시스템 crontab의 작업 사양은 개인 crontab 파일에 없는 추가 필드를 지원합니다. 필드 #6에는xfeautomation
작업을 실행하는 데 사용될 사용자 ID와 같은 사용자 이름이 필요합니다.
게시한 구문은 다음/etc/crontab
과 같은 항목이나 드롭인 파일에 대해 정확합니다./etc/cron.d/wf_api_linux
0 * * * * xfeautomation /opt/scripts/wf_venv/bin/python /opt/scripts/wf_api_linux.py 2>&l /opt/scripts/log.txt
모든 출력과 오류를 기록하므로 걱정할 필요가 없지만 일반적으로 cron은 시스템 crontab을 설정할 때 루트에 표준 출력과 오류를 이메일로 보내고 개인 crontab을 사용할 때는 사용자에게 직접 이메일을 보냅니다.
내가 아는 한 두 방법 모두 작업에 대해 동일한 조건을 가져오며 작업 사양 및 이메일의 소유권에 대한 우려를 제외하고는 동일합니다.