시스템 종료를 위한 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는 귀하가 기대하는 것과 다릅니다. (Debian 버전의) crontab(5) 매뉴얼 페이지에 따르면 PATH 환경 변수는 /usr/bin:/bincron에서 실행되는 프로그램에 대해 로 설정됩니다. PATH=crontab 상단에 다음과 같은 줄을 추가하여 이를 변경할 수 있습니다 .

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

이렇게 하면 PATH= 줄 아래의 모든 crontab 항목에 대한 경로가 다음 PATH= 줄까지 변경됩니다. 참조크론탭(5)자세한 내용은 매뉴얼 페이지를 참조하세요.

답변2

스니펫의 첫 번째 줄은 다음과 같아야 합니다.

#!/usr/local/bin/python

PATH또는 crontab에 적절한 값을 설정했는지 확인한 경우 :

#!/bin/env python

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

게다가 Python은 의 제한된 환경을 상속받기 때문에 shutdown에서 호출될 때 찾을 수 없을 수도 있습니다 . 호출 시 명령 에 대한 전체 경로를 제공해보세요 .croncronshutdownos.system()

관련 정보