crontab에 예약된 쉘 스크립트에서 Python 프로그램 실행 정보

crontab에 예약된 쉘 스크립트에서 Python 프로그램 실행 정보

크론탭에 관해 질문이 있습니다. 매분 실행되도록 예약하려는 checker.sh라는 스크립트가 있습니다.

* * * * * sh /home/pi/checker.sh

여기에 스크립트가 있습니다. 스크린샷

이 스크립트의 개념은 다음에서 비롯됩니다. Linux 스크립트는 프로세스가 실행 중인지 확인하고 결과에 대해 조치를 취합니다.

문제는 checker.shPython 스크립트를 실행할 수 있는지 확인하기 위해 Python 프로세스를 종료할 때마다 작동하지 않는다는 것입니다. 문제가 어디에 있는지 모르겠습니다. 스크립트 자체에서 Python의 경로 이름을 /usr/bin/python으로 변경하려고 시도했지만 checker.sh여전히 작동하지 않습니다.

누군가가 이 문제를 해결할 수 있기를 바랍니다.

답변1

crontab에서 정규화된 경로를 사용하세요.

/bin/sh /home/pi/checker.sh

답변2

쉘 스크립트에 bash를 지정한 다음 crontab에서 sh를 사용하여 스크립트 호출을 시도합니다. Shebang에서 쉘을 지정했기 때문에 실제로 crontab에서 쉘을 지정할 필요가 없으므로 다음과 같이 하면 정상적으로 작동합니다.

* * * * * /home/pi/checker.sh

답변3

cd 및 전체 경로를 사용하여 쉘 스크립트 자체 내의 디렉토리로 명시적으로 탐색해 보십시오. 저도 비슷한 문제가 있었는데 이렇게 해서 해결했습니다. 예를 들어, 스크립트 상단에 다음을 #!/bin/bash입력하세요.

cd /home/pi/Some_Directory`
# the rest of your script

답변4

이것은 비교적 오래된 질문인 것 같지만 제목에 문제가 있다고 생각합니다(셰르본). 스크립트에는 다음 헤더가 있습니다.

#! /bin/bash

그러나 다음과 같아야 합니다.

#!/bin/bash 

즉, #!와 사이에는 공백이 없습니다 /bin/bash. 이전에 이런 상황이 발생했는데 공백을 제거하여 해결되었습니다.

관련 정보