Ubuntu Karmic에서 실행 중입니다. 시작 시 다음(업데이트된) 스크립트를 실행해야 합니다.
#!/bin/sh
# /etc/init.d/scripts
# Description: Starts Python scripts
# ————————————————–
#
### BEGIN INIT INFO
# Provides: Scripts
# Required-Start: $network $local_fs $syslog
# Required-Stop: $local_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Description: Start Python scripts to provide mapping services
### END INIT INFO
case $1 in
start)
# echo -n ¨Starting Mapping service: ¨
/usr/local/bin/liteserv.py /home/myUN/bin/mapnik/my_osm.xml --caching --debug=False
;;
stop)
# echo -n ¨Stoping Mapping service: ¨
/usr/local/bin/liteserv.py /home/myUN/bin/mapnik/my_osm.xml --caching --debug=False
;;
restart)
# echo -n ¨Retarting Mapping service: ¨
/usr/local/bin/liteserv.py /home/myUN/bin/mapnik/my_osm.xml --caching --debug=False
;;
*)
# echo ¨Usage: scripts {start|stop|restart}¨
exit 1
esac
/etc/init.d에 넣고 등록했습니다.
sudo update-rc.d scripts defaults
하지만 시작 시 아무 일도 일어나지 않습니다. 로그를 보려고 했지만 아무 것도 찾을 수 없었습니다. 스크립트와 liteserv.py는 모두 실행 가능으로 표시됩니다.
내가 실행할 때 Per Andy Smith의 응답은 다음과 같습니다.
/etc/init.d/scripts start
이제 프로그램이 올바르게 실행되고 있습니다(잘못된 인용문을 수정한 후).
그러나 시작 시 여전히 프로그램이 실행되지 않습니다.
답변1
이상하지만 Stack Exchange가 수행하는 작업이 아닌 이상 문제는 ""
.
어떤 편집기를 사용하든 표준 따옴표 문자(유니코드 U+0022)를 스타일화된 열기 및 닫기 따옴표(U+201C 및 U+201D)로 바꿨을 수 있습니다. sh
정말 마음에 들지 않습니다. 이러한 양식화된 따옴표를 "일반 따옴표"로 바꾸면 코드가 제대로 작동합니다(호출하는 .py 파일이 없다는 작은 예외를 제외하고).
답변2
에 콘텐츠를 추가할 수 있습니다 /etc/rc.local
.
그렇지 않으면 스크립트를 넣은 /etc/init.d/
다음 chmod +x
실행할 수 있습니다 update-rc.d FOO defaults
.
답변3
귀하의 스크립트는 런레벨 3과 5에서 시작하고 런레벨 1과 2(종료 및 재시작인 0과 6도 포함)에서 중지하고 런레벨 4에서는 전혀 알 수 없음을 나타냅니다. Ubuntu는 기본적으로 런레벨 2로 부팅됩니다(Upstart의 경우에도 마찬가지라고 생각합니다). 따라서 다른 기본 실행 수준을 설정하지 않으면 스크립트가 실행되지 않습니다. 스크립트 헤더에서 다음을 사용하십시오.
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
답변4
추가하여:
exec > /tmp/debug-my-script.txt 2>&1
스크립트 파일 시작 부분에서 최소한 Python 프로그램의 오류 메시지(postgres에 대한 인증 오류)를 캡처할 수 있었습니다. 따라서 스크립트는 시작 시(많은 커뮤니티 입력 후) 실행됩니다. 런타임 중에 실패합니다(이는 다른 문제입니다).