![시스템 종료를 위한 Python 스크립트가 cron에서 작동하지 않습니다.](https://linux55.com/image/23997/%EC%8B%9C%EC%8A%A4%ED%85%9C%20%EC%A2%85%EB%A3%8C%EB%A5%BC%20%EC%9C%84%ED%95%9C%20Python%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EA%B0%80%20cron%EC%97%90%EC%84%9C%20%EC%9E%91%EB%8F%99%ED%95%98%EC%A7%80%20%EC%95%8A%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
시스템 종료를 위한 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:/bin
cron에서 프로그램을 실행하도록 설정되어 있습니다. 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
보십시오 .shutdown
os.system()