2017-12-22 42 views
0

나는 인터럽트를 트리거하는 버튼 누름을 통해 /home/pi/foo.txt라는 절대 경로를 사용하여 일부 데이터를 txt 파일에 기록하는 python 스크립트를 작성했습니다. 커맨드 라인을 통해 문제없이 스크립트를 여러 번 시작했습니다 : 이동을 누르면 이동하고 정지를 누르면 멈 춥니 다. 이 스크립트는 /home/pi/log.py에 있습니다. 나는에 의해 crontab을 통해이 스크립트를 시작하려고 할 때, 나는 그것이 튜토리얼에 도움이 될 수 있음을 읽을 수 있기 때문에이 파이썬 스크립트를 실행, 그래서 그것은 그러나Raspberry pi crontab 및 python의 인터럽트

#! /bin/sh 
cd /home/pi 
/usr/bin/python /home/pi/log.py 

를 호출하는 log.sh 전화를 드릴 것입니다 쉘 스크립트를 작성 그것에 내

@reboot log.sh 

스크립트를 실행하지만 버튼을 누르면 스크립트를 중지하지 않습니다 (일명 중지 버튼이 작동하지 않습니다)에 추가. cpu 사용량은 100 %까지 올라가고 거기에 달라 붙습니다. 내 사용자 환경에서 환경 변수를 복사하여 crontab에 붙여 넣으려고했지만 그 중 하나가 작동하지 않습니다.

아이디어가 있으십니까?

+0

스크립트를 보여줄 수 있습니까? 어떻게이 문제를 디버깅하려 했습니까? 당신의 코드에'print' 문을 넣으면 도움이 될 것입니다. 'cron' 항목을 어디에 추가 했습니까 ('@reboot log.sh')? 'root'로 실행하면'root'로 스크립트를 수동으로 실행 해 보았습니까? (또는 이미 그렇게하고 있습니까?) – larsks

답변

1

crontab이 사용하는 환경이 사용자의 환경과 동일하지 않다는 사실을 알게되었습니다.

체크 아웃 사용자와의 crontab 사이의 환경 차이에 대한 자세한 정보를 원하시면 흐름을이 스택은 : 할 내 의견 https://serverfault.com/questions/698577/why-is-the-cron-env-different-from-the-users-env/698635

의 가장 좋은 점은 파이썬에서 모든 것을 할 것입니다. crontab처럼 작동하는 python 환경이 있습니다. 일정 (https://pypi.python.org/pypi/schedule)이라고합니다.

저는 실제로 라스베리 파이 서모 스탯 프로젝트에서 사용하고 있습니다. 여기에서 확인하십시오 : https://github.com/mababio/raspi_thermostat/blob/c6aea6ded6874d0dc21ded34f07874dd7f97dd15/src/thermo/test/jobs.py