시스템 종료를 위한 Python 스크립트가 cron에서 작동하지 않습니다.

시스템 종료를 위한 Python 스크립트가 cron에서 작동하지 않습니다.

시스템 종료를 위한 Python 스크립트는 터미널에서 제대로 작동하지만 crontab에 포함된 경우에는 작동하지 않습니다. 스크립트가 cron에 의해 호출되었지만 오류로 끝납니다.종료 명령을 찾을 수 없습니다.'또는'init 0 명령을 찾을 수 없습니다'. 나는 fedora 17을 사용하고 있으며 스크립트는 루트의 crontab에서 실행됩니다.

#!/usr/bin/python
import os
os.system('shutdown')
os.system('init 0')

답변1

귀하의 PATH는 귀하가 기대하는 것과 다릅니다. crontab(5) 매뉴얼 페이지(Debian 버전용)에 따르면 PATH 환경 변수는 /usr/bin:/bincron에서 프로그램을 실행하도록 설정되어 있습니다. PATH=crontab 상단에 다음과 같은 줄을 추가하여 이를 변경할 수 있습니다 .

PATH=/usr/sbin:/sbin:/usr/bin:/bin

이렇게 하면 다음 PATH= 행까지 PATH= 행 아래의 모든 crontab 항목 경로가 변경됩니다. 보다예약된 작업(5)자세한 내용은 매뉴얼 페이지를 참조하세요.

답변2

코드 조각의 첫 번째 줄은 다음과 같아야 할 것 같습니다.

#!/usr/local/bin/python

PATH또는 crontab에 적절한 값이 설정되어 있는지 확인하는 경우 :

#!/bin/env python

crontab 항목은 어떻게 생겼나요? 매우 제한된 환경을 설정하는 것을 잊지 마십시오 cron. 따라서 스크립트 파일을 cron찾을 수 있도록 전체 경로를 제공해야 합니다.

shutdown또한 Python은 제한된 환경을 cron상속하므로 에서 호출할 때 Python을 찾지 못할 수도 있습니다 . 호출 시 명령에 대한 전체 경로를 제공해 cron보십시오 .shutdownos.system()

관련 정보